• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KDECore

  • kdecore
  • services
ktraderparse.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20// TODO: Torben: On error free memory! (r932881 might serve as inspiration)
21
22extern "C"
23{
24#include "ktraderparse_p.h"
25
26void KTraderParse_mainParse( const char *_code );
27}
28
29#include "ktraderparsetree_p.h"
30
31#include <assert.h>
32#include <stdlib.h>
33#include <kdebug.h>
34
35#include <QtCore/QThreadStorage>
36
37namespace KTraderParse
38{
39
40struct ParsingData
41{
42 ParseTreeBase::Ptr ptr;
43 QByteArray buffer;
44};
45
46}
47
48using namespace KTraderParse;
49
50K_GLOBAL_STATIC(QThreadStorage<ParsingData *>, s_parsingData)
51
52ParseTreeBase::Ptr KTraderParse::parseConstraints( const QString& _constr )
53{
54 ParsingData *data = new ParsingData();
55 s_parsingData->setLocalData(data);
56 data->buffer = _constr.toUtf8();
57 KTraderParse_mainParse(data->buffer.constData());
58 ParseTreeBase::Ptr ret = data->ptr;
59 s_parsingData->setLocalData(0);
60 return ret;
61}
62
63void KTraderParse_setParseTree( void *_ptr1 )
64{
65 ParsingData *data = s_parsingData->localData();
66 data->ptr = static_cast<ParseTreeBase*>(_ptr1);
67}
68
69
70void KTraderParse_error( const char* err )
71{
72 kWarning(7014) << "Parsing" << s_parsingData->localData()->buffer << "gave:" << err;
73}
74
75void* KTraderParse_newOR( void *_ptr1, void *_ptr2 )
76{
77 return new ParseTreeOR( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 );
78}
79
80void* KTraderParse_newAND( void *_ptr1, void *_ptr2 )
81{
82 return new ParseTreeAND( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 );
83}
84
85void* KTraderParse_newCMP( void *_ptr1, void *_ptr2, int _i )
86{
87 return new ParseTreeCMP( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _i );
88}
89
90void* KTraderParse_newIN( void *_ptr1, void *_ptr2, int _cs )
91{
92 return new ParseTreeIN( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _cs == 1 ? Qt::CaseSensitive : Qt::CaseInsensitive );
93}
94
95void* KTraderParse_newSubstringIN( void *_ptr1, void *_ptr2, int _cs )
96{
97 return new ParseTreeIN((ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2,
98 _cs == 1 ? Qt::CaseSensitive : Qt::CaseInsensitive, true);
99}
100
101void* KTraderParse_newMATCH( void *_ptr1, void *_ptr2, int _cs )
102{
103 return new ParseTreeMATCH( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _cs == 1 ? Qt::CaseSensitive : Qt::CaseInsensitive );
104}
105
106void* KTraderParse_newCALC( void *_ptr1, void *_ptr2, int _i )
107{
108 return new ParseTreeCALC( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _i );
109}
110
111void* KTraderParse_newBRACKETS( void *_ptr1 )
112{
113 return new ParseTreeBRACKETS( (ParseTreeBase*)_ptr1 );
114}
115
116void* KTraderParse_newNOT( void *_ptr1 )
117{
118 return new ParseTreeNOT( (ParseTreeBase*)_ptr1 );
119}
120
121void* KTraderParse_newEXIST( char *_ptr1 )
122{
123 ParseTreeEXIST *t = new ParseTreeEXIST( _ptr1 );
124 free(_ptr1);
125 return t;
126}
127
128void* KTraderParse_newID( char *_ptr1 )
129{
130 ParseTreeID *t = new ParseTreeID( _ptr1 );
131 free(_ptr1);
132 return t;
133}
134
135void* KTraderParse_newSTRING( char *_ptr1 )
136{
137 ParseTreeSTRING *t = new ParseTreeSTRING( _ptr1 );
138 free(_ptr1);
139 return t;
140}
141
142void* KTraderParse_newNUM( int _i )
143{
144 return new ParseTreeNUM( _i );
145}
146
147void* KTraderParse_newFLOAT( float _f )
148{
149 return new ParseTreeDOUBLE( _f );
150}
151
152void* KTraderParse_newBOOL( char _b )
153{
154 return new ParseTreeBOOL( (bool)_b );
155}
156
157void* KTraderParse_newMAX2( char *_id )
158{
159 ParseTreeMAX2 *t = new ParseTreeMAX2( _id );
160 free(_id);
161 return t;
162}
163
164void* KTraderParse_newMIN2( char *_id )
165{
166 ParseTreeMIN2 *t = new ParseTreeMIN2( _id );
167 free(_id);
168 return t;
169}
170
171void KTraderParse_destroy(void *node)
172{
173 ParsingData *data = s_parsingData->localData();
174 ParseTreeBase *p = reinterpret_cast<ParseTreeBase *>(node);
175 if (p != data->ptr) {
176 delete p;
177 }
178}
179
KSharedPtr< ParseTreeBase >
KTraderParse::ParseTreeAND
Definition: ktraderparsetree_p.h:129
KTraderParse::ParseTreeBOOL
Definition: ktraderparsetree_p.h:315
KTraderParse::ParseTreeBRACKETS
Definition: ktraderparsetree_p.h:215
KTraderParse::ParseTreeBase
Definition: ktraderparsetree_p.h:99
KTraderParse::ParseTreeCALC
Definition: ktraderparsetree_p.h:199
KTraderParse::ParseTreeCMP
Definition: ktraderparsetree_p.h:144
KTraderParse::ParseTreeDOUBLE
Definition: ktraderparsetree_p.h:301
KTraderParse::ParseTreeEXIST
Definition: ktraderparsetree_p.h:243
KTraderParse::ParseTreeID
Definition: ktraderparsetree_p.h:257
KTraderParse::ParseTreeIN
Definition: ktraderparsetree_p.h:160
KTraderParse::ParseTreeMATCH
Definition: ktraderparsetree_p.h:183
KTraderParse::ParseTreeMAX2
Definition: ktraderparsetree_p.h:329
KTraderParse::ParseTreeMIN2
Definition: ktraderparsetree_p.h:343
KTraderParse::ParseTreeNOT
Definition: ktraderparsetree_p.h:229
KTraderParse::ParseTreeNUM
Definition: ktraderparsetree_p.h:287
KTraderParse::ParseTreeOR
Definition: ktraderparsetree_p.h:114
KTraderParse::ParseTreeSTRING
Definition: ktraderparsetree_p.h:271
QString
K_GLOBAL_STATIC
#define K_GLOBAL_STATIC(TYPE, NAME)
This macro makes it easy to use non-POD types as global statics.
Definition: kglobal.h:221
kWarning
#define kWarning
Definition: kdebug.h:322
kdebug.h
KTraderParse_setParseTree
void KTraderParse_setParseTree(void *_ptr1)
Definition: ktraderparse.cpp:63
KTraderParse_newCALC
void * KTraderParse_newCALC(void *_ptr1, void *_ptr2, int _i)
Definition: ktraderparse.cpp:106
KTraderParse_destroy
void KTraderParse_destroy(void *node)
Definition: ktraderparse.cpp:171
KTraderParse_newCMP
void * KTraderParse_newCMP(void *_ptr1, void *_ptr2, int _i)
Definition: ktraderparse.cpp:85
KTraderParse_newMAX2
void * KTraderParse_newMAX2(char *_id)
Definition: ktraderparse.cpp:157
KTraderParse_newAND
void * KTraderParse_newAND(void *_ptr1, void *_ptr2)
Definition: ktraderparse.cpp:80
KTraderParse_error
void KTraderParse_error(const char *err)
Definition: ktraderparse.cpp:70
KTraderParse_newOR
void * KTraderParse_newOR(void *_ptr1, void *_ptr2)
Definition: ktraderparse.cpp:75
KTraderParse_newMIN2
void * KTraderParse_newMIN2(char *_id)
Definition: ktraderparse.cpp:164
KTraderParse_newSubstringIN
void * KTraderParse_newSubstringIN(void *_ptr1, void *_ptr2, int _cs)
Definition: ktraderparse.cpp:95
KTraderParse_newFLOAT
void * KTraderParse_newFLOAT(float _f)
Definition: ktraderparse.cpp:147
KTraderParse_newSTRING
void * KTraderParse_newSTRING(char *_ptr1)
Definition: ktraderparse.cpp:135
KTraderParse_newBOOL
void * KTraderParse_newBOOL(char _b)
Definition: ktraderparse.cpp:152
KTraderParse_newEXIST
void * KTraderParse_newEXIST(char *_ptr1)
Definition: ktraderparse.cpp:121
KTraderParse_newNOT
void * KTraderParse_newNOT(void *_ptr1)
Definition: ktraderparse.cpp:116
KTraderParse_newNUM
void * KTraderParse_newNUM(int _i)
Definition: ktraderparse.cpp:142
KTraderParse_newMATCH
void * KTraderParse_newMATCH(void *_ptr1, void *_ptr2, int _cs)
Definition: ktraderparse.cpp:101
KTraderParse_newIN
void * KTraderParse_newIN(void *_ptr1, void *_ptr2, int _cs)
Definition: ktraderparse.cpp:90
KTraderParse_newID
void * KTraderParse_newID(char *_ptr1)
Definition: ktraderparse.cpp:128
KTraderParse_mainParse
void KTraderParse_mainParse(const char *_code)
KTraderParse_newBRACKETS
void * KTraderParse_newBRACKETS(void *_ptr1)
Definition: ktraderparse.cpp:111
ktraderparse_p.h
ktraderparsetree_p.h
KTraderParse
Definition: ktraderparse.cpp:38
KTraderParse::parseConstraints
ParseTreeBase::Ptr parseConstraints(const QString &_constr)
Definition: ktraderparse.cpp:52
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDECore

Skip menu "KDECore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal