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

KDECore

  • sources
  • kde-4.12
  • kdelibs
  • 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 
22 extern "C"
23 {
24 #include "ktraderparse_p.h"
25 
26 void 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 
37 namespace KTraderParse
38 {
39 
40 struct ParsingData
41 {
42  ParseTreeBase::Ptr ptr;
43  QByteArray buffer;
44 };
45 
46 }
47 
48 using namespace KTraderParse;
49 
50 K_GLOBAL_STATIC(QThreadStorage<ParsingData *>, s_parsingData)
51 
52 ParseTreeBase::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 
63 void KTraderParse_setParseTree( void *_ptr1 )
64 {
65  ParsingData *data = s_parsingData->localData();
66  data->ptr = static_cast<ParseTreeBase*>(_ptr1);
67 }
68 
69 
70 void KTraderParse_error( const char* err )
71 {
72  kWarning(7014) << "Parsing" << s_parsingData->localData()->buffer << "gave:" << err;
73 }
74 
75 void* KTraderParse_newOR( void *_ptr1, void *_ptr2 )
76 {
77  return new ParseTreeOR( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 );
78 }
79 
80 void* KTraderParse_newAND( void *_ptr1, void *_ptr2 )
81 {
82  return new ParseTreeAND( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 );
83 }
84 
85 void* KTraderParse_newCMP( void *_ptr1, void *_ptr2, int _i )
86 {
87  return new ParseTreeCMP( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _i );
88 }
89 
90 void* 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 
95 void* 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 
101 void* 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 
106 void* KTraderParse_newCALC( void *_ptr1, void *_ptr2, int _i )
107 {
108  return new ParseTreeCALC( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _i );
109 }
110 
111 void* KTraderParse_newBRACKETS( void *_ptr1 )
112 {
113  return new ParseTreeBRACKETS( (ParseTreeBase*)_ptr1 );
114 }
115 
116 void* KTraderParse_newNOT( void *_ptr1 )
117 {
118  return new ParseTreeNOT( (ParseTreeBase*)_ptr1 );
119 }
120 
121 void* KTraderParse_newEXIST( char *_ptr1 )
122 {
123  ParseTreeEXIST *t = new ParseTreeEXIST( _ptr1 );
124  free(_ptr1);
125  return t;
126 }
127 
128 void* KTraderParse_newID( char *_ptr1 )
129 {
130  ParseTreeID *t = new ParseTreeID( _ptr1 );
131  free(_ptr1);
132  return t;
133 }
134 
135 void* KTraderParse_newSTRING( char *_ptr1 )
136 {
137  ParseTreeSTRING *t = new ParseTreeSTRING( _ptr1 );
138  free(_ptr1);
139  return t;
140 }
141 
142 void* KTraderParse_newNUM( int _i )
143 {
144  return new ParseTreeNUM( _i );
145 }
146 
147 void* KTraderParse_newFLOAT( float _f )
148 {
149  return new ParseTreeDOUBLE( _f );
150 }
151 
152 void* KTraderParse_newBOOL( char _b )
153 {
154  return new ParseTreeBOOL( (bool)_b );
155 }
156 
157 void* KTraderParse_newMAX2( char *_id )
158 {
159  ParseTreeMAX2 *t = new ParseTreeMAX2( _id );
160  free(_id);
161  return t;
162 }
163 
164 void* KTraderParse_newMIN2( char *_id )
165 {
166  ParseTreeMIN2 *t = new ParseTreeMIN2( _id );
167  free(_id);
168  return t;
169 }
170 
171 void 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 
ktraderparsetree_p.h
KSharedPtr< ParseTreeBase >
KTraderParse_newID
void * KTraderParse_newID(char *_ptr1)
Definition: ktraderparse.cpp:128
kdebug.h
KTraderParse_newIN
void * KTraderParse_newIN(void *_ptr1, void *_ptr2, int _cs)
Definition: ktraderparse.cpp:90
KTraderParse_newFLOAT
void * KTraderParse_newFLOAT(float _f)
Definition: ktraderparse.cpp:147
KTraderParse::ParseTreeBRACKETS
Definition: ktraderparsetree_p.h:214
KTraderParse_newBOOL
void * KTraderParse_newBOOL(char _b)
Definition: ktraderparse.cpp:152
KTraderParse_newEXIST
void * KTraderParse_newEXIST(char *_ptr1)
Definition: ktraderparse.cpp:121
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
KTraderParse::ParseTreeBase
Definition: ktraderparsetree_p.h:98
QString
KTraderParse::ParseTreeMAX2
Definition: ktraderparsetree_p.h:328
KTraderParse::ParseTreeSTRING
Definition: ktraderparsetree_p.h:270
KTraderParse::ParseTreeEXIST
Definition: ktraderparsetree_p.h:242
KTraderParse_newNUM
void * KTraderParse_newNUM(int _i)
Definition: ktraderparse.cpp:142
KTraderParse_newCALC
void * KTraderParse_newCALC(void *_ptr1, void *_ptr2, int _i)
Definition: ktraderparse.cpp:106
KTraderParse_newMIN2
void * KTraderParse_newMIN2(char *_id)
Definition: ktraderparse.cpp:164
KTraderParse::ParseTreeAND
Definition: ktraderparsetree_p.h:128
KTraderParse::ParseTreeMATCH
Definition: ktraderparsetree_p.h:182
KTraderParse::ParseTreeOR
Definition: ktraderparsetree_p.h:113
KTraderParse_mainParse
void KTraderParse_mainParse(const char *_code)
KTraderParse_error
void KTraderParse_error(const char *err)
Definition: ktraderparse.cpp:70
KTraderParse::ParseTreeBOOL
Definition: ktraderparsetree_p.h:314
KTraderParse_newOR
void * KTraderParse_newOR(void *_ptr1, void *_ptr2)
Definition: ktraderparse.cpp:75
KTraderParse_newBRACKETS
void * KTraderParse_newBRACKETS(void *_ptr1)
Definition: ktraderparse.cpp:111
KTraderParse_newCMP
void * KTraderParse_newCMP(void *_ptr1, void *_ptr2, int _i)
Definition: ktraderparse.cpp:85
KTraderParse::parseConstraints
ParseTreeBase::Ptr parseConstraints(const QString &_constr)
Definition: ktraderparse.cpp:52
KTraderParse::ParseTreeID
Definition: ktraderparsetree_p.h:256
KTraderParse_setParseTree
void KTraderParse_setParseTree(void *_ptr1)
Definition: ktraderparse.cpp:63
KTraderParse::ParseTreeDOUBLE
Definition: ktraderparsetree_p.h:300
KTraderParse_newSTRING
void * KTraderParse_newSTRING(char *_ptr1)
Definition: ktraderparse.cpp:135
ktraderparse_p.h
kWarning
#define kWarning
Definition: kdebug.h:322
KTraderParse::ParseTreeCALC
Definition: ktraderparsetree_p.h:198
KTraderParse_destroy
void KTraderParse_destroy(void *node)
Definition: ktraderparse.cpp:171
KTraderParse_newMAX2
void * KTraderParse_newMAX2(char *_id)
Definition: ktraderparse.cpp:157
KTraderParse::ParseTreeNOT
Definition: ktraderparsetree_p.h:228
KTraderParse::ParseTreeMIN2
Definition: ktraderparsetree_p.h:342
KTraderParse::ParseTreeCMP
Definition: ktraderparsetree_p.h:143
KTraderParse::ParseTreeNUM
Definition: ktraderparsetree_p.h:286
KTraderParse::ParseTreeIN
Definition: ktraderparsetree_p.h:159
KTraderParse_newAND
void * KTraderParse_newAND(void *_ptr1, void *_ptr2)
Definition: ktraderparse.cpp:80
KTraderParse_newNOT
void * KTraderParse_newNOT(void *_ptr1)
Definition: ktraderparse.cpp:116
KTraderParse_newSubstringIN
void * KTraderParse_newSubstringIN(void *_ptr1, void *_ptr2, int _cs)
Definition: ktraderparse.cpp:95
KTraderParse_newMATCH
void * KTraderParse_newMATCH(void *_ptr1, void *_ptr2, int _cs)
Definition: ktraderparse.cpp:101
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:47:09 by doxygen 1.8.7 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 API Reference

Skip menu "kdelibs 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
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



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