kio Library: ktraderparsetree.h Source File (kio Library)

| # kio Library API Documentation
Overview | Class Hierarchy | Classes | Classes (annotated) | Members | Namespaces | Source Files

# ktraderparsetree.h

    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., 59 Temple Place - Suite 330,
    00017    Boston, MA 02111-1307, USA.
    00018 */
    00019
    00020 #ifndef __parse_tree_h__
    00021 #define __parse_tree_h__
    00022
    00023 #include <qstring.h>
    00024 #include <qstringlist.h>
    00025 #include <qvaluelist.h>
    00026 #include <qmap.h>
    00027 #include <qshared.h>
    00028
    00029 #include <kservice.h>
    00030 #include <kuserprofile.h>
    00031
    00032 #include "ktrader.h"
    00033
    00034 namespace KIO {
    00035
    00036 class ParseTreeBase;
    00037
    00039 struct KIO_EXPORT PreferencesReturn
    00040 {
    00041   enum Type { PRT_DOUBLE, PRT_ERROR };
    00042
    00043   PreferencesReturn() { type = PRT_ERROR; }
    00044
    00045   PreferencesReturn( const PreferencesReturn& _r )
    00046   {
    00047     type = _r.type;
    00048     f = _r.f;
    00049   }
    00050
    00051   Type type;
    00052   double f;
    00053 };
    00054
    00055
    00062 KIO_EXPORT int matchConstraint( const ParseTreeBase *_tree, const KService::Ptr &,
    00063              const KServiceTypeProfile::OfferList& );
    00064
    00069 KIO_EXPORT PreferencesReturn matchPreferences( const ParseTreeBase *_tree, const KService::Ptr &,
    00070                     const KServiceTypeProfile::OfferList& );
    00071
    00075 struct KIO_EXPORT PreferencesMaxima
    00076 {
    00077   enum Type { PM_ERROR, PM_INVALID_INT, PM_INVALID_DOUBLE, PM_DOUBLE, PM_INT };
    00078
    00079   Type type;
    00080   int iMax;
    00081   int iMin;
    00082   double fMax;
    00083   double fMin;
    00084 };
    00085
    00089 class KIO_EXPORT ParseContext
    00090 {
    00091 public:
    00095   ParseContext( const ParseContext* _ctx ) : service( _ctx->service ), maxima( _ctx->maxima ),
    00096     offers( _ctx->offers ) {}
    00097   ParseContext( const KService::Ptr & _service, const KServiceTypeProfile::OfferList& _offers,
    00098         QMap<QString,PreferencesMaxima>& _m )
    00099     : service( _service ), maxima( _m ), offers( _offers ) {}
    00100
    00101   bool initMaxima( const QString& _prop);
    00102
    00103   enum Type { T_STRING = 1, T_DOUBLE = 2, T_NUM = 3, T_BOOL = 4,
    00104           T_STR_SEQ = 5, T_SEQ = 6 };
    00105
    00106   QString str;
    00107   int i;
    00108   double f;
    00109   bool b;
    00110   QValueList<QVariant> seq;
    00111   QStringList strSeq;
    00112   Type type;
    00113
    00114   KService::Ptr service;
    00115
    00116   QMap<QString,PreferencesMaxima>& maxima;
    00117   const KServiceTypeProfile::OfferList& offers;
    00118 };
    00119
    00123 class KIO_EXPORT ParseTreeBase : public KShared
    00124 {
    00125 public:
    00126   typedef KSharedPtr<ParseTreeBase> Ptr;
    00127   ParseTreeBase() { }
    00128
    00129   virtual bool eval( ParseContext *_context ) const = 0;
    00130 protected:
    00131   virtual ~ParseTreeBase() { };
    00132 };
    00133
    00134 KIO_EXPORT ParseTreeBase::Ptr parseConstraints( const QString& _constr );
    00135 KIO_EXPORT ParseTreeBase::Ptr parsePreferences( const QString& _prefs );
    00136
    00140 class KIO_EXPORT ParseTreeOR : public ParseTreeBase
    00141 {
    00142 public:
    00143   ParseTreeOR( ParseTreeBase *_ptr1, ParseTreeBase *_ptr2 ) { m_pLeft = _ptr1; m_pRight = _ptr2; }
    00144
    00145   bool eval( ParseContext *_context ) const;
    00146
    00147 protected:
    00148   ParseTreeBase::Ptr m_pLeft;
    00149   ParseTreeBase::Ptr m_pRight;
    00150 };
    00151
    00155 class KIO_EXPORT ParseTreeAND : public ParseTreeBase
    00156 {
    00157 public:
    00158   ParseTreeAND( ParseTreeBase *_ptr1, ParseTreeBase *_ptr2 ) { m_pLeft = _ptr1; m_pRight = _ptr2; }
    00159
    00160   bool eval( ParseContext *_context ) const;
    00161
    00162 protected:
    00163   ParseTreeBase::Ptr m_pLeft;
    00164   ParseTreeBase::Ptr m_pRight;
    00165 };
    00166
    00170 class KIO_EXPORT ParseTreeCMP : public ParseTreeBase
    00171 {
    00172 public:
    00173   ParseTreeCMP( ParseTreeBase *_ptr1, ParseTreeBase *_ptr2, int _i ) { m_pLeft = _ptr1; m_pRight = _ptr2; m_cmd = _i; }
    00174
    00175   bool eval( ParseContext *_context ) const;
    00176
    00177 protected:
    00178   ParseTreeBase::Ptr m_pLeft;
    00179   ParseTreeBase::Ptr m_pRight;
    00180   int m_cmd;
    00181 };
    00182
    00186 class KIO_EXPORT ParseTreeIN : public ParseTreeBase
    00187 {
    00188 public:
    00189   ParseTreeIN( ParseTreeBase *_ptr1, ParseTreeBase *_ptr2 ) { m_pLeft = _ptr1; m_pRight = _ptr2; }
    00190
    00191   bool eval( ParseContext *_context ) const;
    00192
    00193 protected:
    00194   ParseTreeBase::Ptr m_pLeft;
    00195   ParseTreeBase::Ptr m_pRight;
    00196 };
    00197
    00201 class KIO_EXPORT ParseTreeMATCH : public ParseTreeBase
    00202 {
    00203 public:
    00204   ParseTreeMATCH( ParseTreeBase *_ptr1, ParseTreeBase *_ptr2 ) { m_pLeft = _ptr1; m_pRight = _ptr2; }
    00205
    00206   bool eval( ParseContext *_context ) const;
    00207
    00208 protected:
    00209   ParseTreeBase::Ptr m_pLeft;
    00210   ParseTreeBase::Ptr m_pRight;
    00211 };
    00212
    00216 class KIO_EXPORT ParseTreeCALC : public ParseTreeBase
    00217 {
    00218 public:
    00219   ParseTreeCALC( ParseTreeBase *_ptr1, ParseTreeBase *_ptr2, int _i ) { m_pLeft = _ptr1; m_pRight = _ptr2; m_cmd = _i; }
    00220
    00221   bool eval( ParseContext *_context ) const;
    00222
    00223 protected:
    00224   ParseTreeBase::Ptr m_pLeft;
    00225   ParseTreeBase::Ptr m_pRight;
    00226   int m_cmd;
    00227 };
    00228
    00232 class KIO_EXPORT ParseTreeBRACKETS : public ParseTreeBase
    00233 {
    00234 public:
    00235   ParseTreeBRACKETS( ParseTreeBase *_ptr ) { m_pLeft = _ptr; }
    00236
    00237   bool eval( ParseContext *_context ) const { return m_pLeft->eval( _context ); }
    00238
    00239 protected:
    00240   ParseTreeBase::Ptr m_pLeft;
    00241 };
    00242
    00246 class KIO_EXPORT ParseTreeNOT : public ParseTreeBase
    00247 {
    00248 public:
    00249   ParseTreeNOT( ParseTreeBase *_ptr ) { m_pLeft = _ptr; }
    00250
    00251   bool eval( ParseContext *_context ) const;
    00252
    00253 protected:
    00254   ParseTreeBase::Ptr m_pLeft;
    00255 };
    00256
    00260 class KIO_EXPORT ParseTreeEXIST : public ParseTreeBase
    00261 {
    00262 public:
    00263   ParseTreeEXIST( const char *_id ) { m_id = _id; }
    00264
    00265   bool eval( ParseContext *_context ) const;
    00266
    00267 protected:
    00268   QString m_id;
    00269 };
    00270
    00274 class KIO_EXPORT ParseTreeID : public ParseTreeBase
    00275 {
    00276 public:
    00277   ParseTreeID( const char *arg ) { m_str = arg; }
    00278
    00279   bool eval( ParseContext *_context ) const;
    00280
    00281 protected:
    00282   QString m_str;
    00283 };
    00284
    00288 class KIO_EXPORT ParseTreeSTRING : public ParseTreeBase
    00289 {
    00290 public:
    00291   ParseTreeSTRING( const char *arg ) { m_str = arg; }
    00292
    00293   bool eval( ParseContext *_context ) const { _context->type = ParseContext::T_STRING; _context->str = m_str; return true; }
    00294
    00295 protected:
    00296   QString m_str;
    00297 };
    00298
    00302 class KIO_EXPORT ParseTreeNUM : public ParseTreeBase
    00303 {
    00304 public:
    00305   ParseTreeNUM( int arg ) { m_int = arg; }
    00306
    00307   bool eval( ParseContext *_context ) const { _context->type = ParseContext::T_NUM; _context->i = m_int; return true; }
    00308
    00309 protected:
    00310   int m_int;
    00311 };
    00312
    00316 class KIO_EXPORT ParseTreeDOUBLE : public ParseTreeBase
    00317 {
    00318 public:
    00319   ParseTreeDOUBLE( double arg ) { m_double = arg; }
    00320
    00321   bool eval( ParseContext *_context ) const { _context->type = ParseContext::T_DOUBLE; _context->f = m_double; return true; }
    00322
    00323 protected:
    00324   double m_double;
    00325 };
    00326
    00330 class KIO_EXPORT ParseTreeBOOL : public ParseTreeBase
    00331 {
    00332 public:
    00333   ParseTreeBOOL( bool arg ) { m_bool = arg; }
    00334
    00335   bool eval( ParseContext *_context ) const { _context->type = ParseContext::T_BOOL; _context->b = m_bool; return true; }
    00336
    00337 protected:
    00338   bool m_bool;
    00339 };
    00340
    00344 class KIO_EXPORT ParseTreeMAX2 : public ParseTreeBase
    00345 {
    00346 public:
    00347   ParseTreeMAX2( const char *_id ) { m_strId = _id; }
    00348
    00349   bool eval( ParseContext *_context ) const;
    00350
    00351 protected:
    00352   QString m_strId;
    00353 };
    00354
    00358 class KIO_EXPORT ParseTreeMIN2 : public ParseTreeBase
    00359 {
    00360 public:
    00361   ParseTreeMIN2( const char *_id ) { m_strId = _id; }
    00362
    00363   bool eval( ParseContext *_context ) const;
    00364
    00365 protected:
    00366   QString m_strId;
    00367 };
    00368
    00369 }
    00370
    00371 #endif

This file is part of the documentation for kio Library Version 3.4.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jun 11 20:24:04 2005 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003