00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include <assert.h>
00021
#include <stdlib.h>
00022
00023
00024
00025
extern "C"
00026 {
00027
#include "ktraderparse.h"
00028
00029
void KTraderParse_mainParse(
const char *_code );
00030 }
00031
00032
#include "ktraderparsetree.h"
00033
00034
using namespace KIO;
00035
00036
static ParseTreeBase::Ptr *pTree = 0;
00037
00038 ParseTreeBase::Ptr KIO::parseConstraints(
const QString& _constr )
00039 {
00040 KTraderParse_mainParse( _constr.
ascii() );
00041 assert( pTree );
00042
return *pTree;
00043 }
00044
00045 ParseTreeBase::Ptr KIO::parsePreferences(
const QString& _prefs )
00046 {
00047 KTraderParse_mainParse( _prefs.
ascii() );
00048 assert( pTree );
00049
return *pTree;
00050 }
00051
00052
void KTraderParse_setParseTree(
void *_ptr1 )
00053 {
00054
if ( !pTree )
00055 pTree =
new ParseTreeBase::Ptr;
00056 *pTree = static_cast<ParseTreeBase*>( _ptr1 );
00057 }
00058
00059
void* KTraderParse_newOR(
void *_ptr1,
void *_ptr2 )
00060 {
00061
return new ParseTreeOR( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 );
00062 }
00063
00064
void* KTraderParse_newAND(
void *_ptr1,
void *_ptr2 )
00065 {
00066
return new ParseTreeAND( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 );
00067 }
00068
00069
void* KTraderParse_newCMP(
void *_ptr1,
void *_ptr2,
int _i )
00070 {
00071
return new ParseTreeCMP( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _i );
00072 }
00073
00074
void* KTraderParse_newIN(
void *_ptr1,
void *_ptr2 )
00075 {
00076
return new ParseTreeIN( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 );
00077 }
00078
00079
void* KTraderParse_newMATCH(
void *_ptr1,
void *_ptr2 )
00080 {
00081
return new ParseTreeMATCH( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 );
00082 }
00083
00084
void* KTraderParse_newCALC(
void *_ptr1,
void *_ptr2,
int _i )
00085 {
00086
return new ParseTreeCALC( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _i );
00087 }
00088
00089
void* KTraderParse_newBRACKETS(
void *_ptr1 )
00090 {
00091
return new ParseTreeBRACKETS( (ParseTreeBase*)_ptr1 );
00092 }
00093
00094
void* KTraderParse_newNOT(
void *_ptr1 )
00095 {
00096
return new ParseTreeNOT( (ParseTreeBase*)_ptr1 );
00097 }
00098
00099
void* KTraderParse_newEXIST(
char *_ptr1 )
00100 {
00101 ParseTreeEXIST *t =
new ParseTreeEXIST( _ptr1 );
00102 free(_ptr1);
00103
return t;
00104 }
00105
00106
void* KTraderParse_newID(
char *_ptr1 )
00107 {
00108 ParseTreeID *t =
new ParseTreeID( _ptr1 );
00109 free(_ptr1);
00110
return t;
00111 }
00112
00113
void* KTraderParse_newSTRING(
char *_ptr1 )
00114 {
00115 ParseTreeSTRING *t =
new ParseTreeSTRING( _ptr1 );
00116 free(_ptr1);
00117
return t;
00118 }
00119
00120
void* KTraderParse_newNUM(
int _i )
00121 {
00122
return new ParseTreeNUM( _i );
00123 }
00124
00125
void* KTraderParse_newFLOAT(
float _f )
00126 {
00127
return new ParseTreeDOUBLE( _f );
00128 }
00129
00130
void* KTraderParse_newBOOL(
char _b )
00131 {
00132
return new ParseTreeBOOL( (
bool)_b );
00133 }
00134
00135
void* KTraderParse_newMAX2(
char *_id )
00136 {
00137 ParseTreeMAX2 *t =
new ParseTreeMAX2( _id );
00138 free(_id);
00139
return t;
00140 }
00141
00142
void* KTraderParse_newMIN2(
char *_id )
00143 {
00144 ParseTreeMIN2 *t =
new ParseTreeMIN2( _id );
00145 free(_id);
00146
return t;
00147 }