• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

kio

ktraderparsetree.h

Go to the documentation of this file.
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 #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

kio

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

API Reference

Skip menu "API Reference"
  • dcop
  • DNSSD
  • interfaces
  • Kate
  • kconf_update
  • KDECore
  • KDED
  • kdefx
  • KDEsu
  • kdeui
  • KDocTools
  • KHTML
  • KImgIO
  • KInit
  • kio
  • kioslave
  • KJS
  • KNewStuff
  • KParts
  • KUtils
Generated for API Reference by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal