ktraderparse.cpp
00001 /* This file is part of the KDE project 00002 Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to 00016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00017 Boston, MA 02110-1301, USA. 00018 */ 00019 00020 #include <assert.h> 00021 #include <stdlib.h> 00022 00023 // TODO: Torben: On error free memory! 00024 00025 extern "C" 00026 { 00027 #include "ktraderparse.h" 00028 } 00029 00030 #include "ktraderparsetree.h" 00031 #include <kdebug.h> 00032 00033 using namespace KIO; 00034 00035 static ParseTreeBase::Ptr *pTree = 0; 00036 static const char* sCode = 0; 00037 00038 ParseTreeBase::Ptr KIO::parseConstraints( const QString& _constr ) 00039 { 00040 QCString str = _constr.utf8(); 00041 sCode = str.data(); 00042 KTraderParse_mainParse( sCode ); 00043 sCode = 0; 00044 assert( pTree ); 00045 return *pTree; 00046 } 00047 00048 ParseTreeBase::Ptr KIO::parsePreferences( const QString& _prefs ) 00049 { 00050 QCString str = _prefs.utf8(); 00051 sCode = str.data(); 00052 KTraderParse_mainParse( sCode ); 00053 sCode = 0; 00054 assert( pTree ); 00055 return *pTree; 00056 } 00057 00058 void KTraderParse_setParseTree( void *_ptr1 ) 00059 { 00060 if ( !pTree ) 00061 pTree = new ParseTreeBase::Ptr; // ### leak; should use KStaticDeleter 00062 *pTree = static_cast<ParseTreeBase*>( _ptr1 ); 00063 } 00064 00065 00066 void KTraderParse_error( const char* err ) 00067 { 00068 kdWarning(7014) << "Parsing '" << sCode << "' gave " << err << endl; 00069 } 00070 00071 void* KTraderParse_newOR( void *_ptr1, void *_ptr2 ) 00072 { 00073 return new ParseTreeOR( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 ); 00074 } 00075 00076 void* KTraderParse_newAND( void *_ptr1, void *_ptr2 ) 00077 { 00078 return new ParseTreeAND( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 ); 00079 } 00080 00081 void* KTraderParse_newCMP( void *_ptr1, void *_ptr2, int _i ) 00082 { 00083 return new ParseTreeCMP( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _i ); 00084 } 00085 00086 void* KTraderParse_newIN( void *_ptr1, void *_ptr2 ) 00087 { 00088 return new ParseTreeIN( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 ); 00089 } 00090 00091 void* KTraderParse_newMATCH( void *_ptr1, void *_ptr2 ) 00092 { 00093 return new ParseTreeMATCH( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2 ); 00094 } 00095 00096 void* KTraderParse_newCALC( void *_ptr1, void *_ptr2, int _i ) 00097 { 00098 return new ParseTreeCALC( (ParseTreeBase*)_ptr1, (ParseTreeBase*)_ptr2, _i ); 00099 } 00100 00101 void* KTraderParse_newBRACKETS( void *_ptr1 ) 00102 { 00103 return new ParseTreeBRACKETS( (ParseTreeBase*)_ptr1 ); 00104 } 00105 00106 void* KTraderParse_newNOT( void *_ptr1 ) 00107 { 00108 return new ParseTreeNOT( (ParseTreeBase*)_ptr1 ); 00109 } 00110 00111 void* KTraderParse_newEXIST( char *_ptr1 ) 00112 { 00113 ParseTreeEXIST *t = new ParseTreeEXIST( _ptr1 ); 00114 free(_ptr1); 00115 return t; 00116 } 00117 00118 void* KTraderParse_newID( char *_ptr1 ) 00119 { 00120 ParseTreeID *t = new ParseTreeID( _ptr1 ); 00121 free(_ptr1); 00122 return t; 00123 } 00124 00125 void* KTraderParse_newSTRING( char *_ptr1 ) 00126 { 00127 ParseTreeSTRING *t = new ParseTreeSTRING( _ptr1 ); 00128 free(_ptr1); 00129 return t; 00130 } 00131 00132 void* KTraderParse_newNUM( int _i ) 00133 { 00134 return new ParseTreeNUM( _i ); 00135 } 00136 00137 void* KTraderParse_newFLOAT( float _f ) 00138 { 00139 return new ParseTreeDOUBLE( _f ); 00140 } 00141 00142 void* KTraderParse_newBOOL( char _b ) 00143 { 00144 return new ParseTreeBOOL( (bool)_b ); 00145 } 00146 00147 void* KTraderParse_newMAX2( char *_id ) 00148 { 00149 ParseTreeMAX2 *t = new ParseTreeMAX2( _id ); 00150 free(_id); 00151 return t; 00152 } 00153 00154 void* KTraderParse_newMIN2( char *_id ) 00155 { 00156 ParseTreeMIN2 *t = new ParseTreeMIN2( _id ); 00157 free(_id); 00158 return t; 00159 }