storage.h

00001 /**************
00002 FILE          : storage.h
00003 ***************
00004 PROJECT       : SaX2 - library interface [header]
00005               :
00006 AUTHOR        : Marcus Schäfer <ms@suse.de>
00007               :
00008 BELONGS TO    : SaX2 - SuSE advanced X11 configuration 
00009               : 
00010               :
00011 DESCRIPTION   : native C++ class library to access SaX2
00012               : functionality. Easy to use interface for
00013               : //.../
00014               : - importing/exporting X11 configurations
00015               : - modifying/creating X11 configurations 
00016               : ---
00017               :
00018               :
00019 STATUS        : Status: Development
00020 **************/
00021 #ifndef SAX_STORAGE_H
00022 #define SAX_STORAGE_H 1
00023 
00024 //====================================
00025 // Includes...
00026 //------------------------------------
00027 #include <qdict.h>
00028 #include <qptrlist.h>
00029 #include <qstring.h>
00030 #include <qtextstream.h>
00031 #include <qstringlist.h>
00032 #include <qregexp.h>
00033 
00034 #include "exception.h"
00035 
00036 namespace SaX {
00037 //====================================
00038 // Defines...
00039 //------------------------------------
00040 #define NULL_STRING        ""
00041 #define SAX_DESKTOP_TYPE   1
00042 #define SAX_KEYBOARD_TYPE  2
00043 #define SAX_POINTER_TYPE   3
00044 
00045 //====================================
00046 // Interface class for dlopen ability
00047 //------------------------------------
00055 class SaXStorageIF : public SaXException {
00056         public:
00057         virtual void setItem ( const QString &, const QString & ) = 0;
00058         virtual void addItem ( const QString &, const QString & ) = 0;
00059         virtual void removeItem  ( const QString &, const QString & ) = 0;
00060         virtual void removeEntry ( const QString & ) = 0;
00061         virtual void setDenomination (
00062                 const QString &, const QString &,const QString &
00063         ) = 0;
00064         virtual void setRawItem (
00065                 const QString &, const QString &,const QString &
00066         ) = 0;
00067         virtual void addRawItem (
00068                 const QString &, const QString &,const QString &
00069         ) = 0;
00070         virtual void removeRawItem ( const QString &, const QString & ) = 0;
00071         virtual QString getItem ( const QString & ) = 0;
00072 
00073         public:
00074         virtual bool setID ( int ) = 0;
00075         virtual bool addID ( int ) = 0;
00076         virtual bool delID ( int ) = 0;
00077         virtual int getCurrentID ( void ) = 0;
00078         virtual QDict<QString> getTable ( int ) = 0;
00079         virtual QDict<QString>  getCurrentTable ( void ) = 0;
00080         virtual QDict<QString>* getTablePointer ( int  ) = 0;
00081     virtual QDict<QString>* getCurrentTablePointer ( void ) = 0;
00082         virtual void merge ( QList< QDict<QString> > ) = 0;
00083         virtual int getCount ( bool = false ) = 0;
00084 
00085         public:
00086         virtual void addGroup (
00087                 const QString &,const QString &, const QString &
00088         ) = 0;
00089         virtual QDict< QDict<QString> > getTablePointerCDB  ( void ) = 0;
00090         virtual QList< QDict<QString> > getTablePointerCDB_DATA (
00091                 const QString &
00092         ) = 0;
00093         virtual QList< QDict<QString> > getTablePointerDATA ( void ) = 0;
00094 
00095         public:
00096         virtual ~SaXStorageIF ( void ) { }
00097 };
00098 //====================================
00099 // Class SaXStorage...
00100 //------------------------------------
00129 class SaXStorage : public SaXStorageIF {
00130         protected:
00131         QList< QDict<QString> > mData;
00132         QDict< QDict<QString> > mCDB;
00133         int mCurrentID;
00134 
00135         public:
00136         void setItem ( const QString &, const QString & );
00137         void addItem ( const QString &, const QString & );
00138         void removeItem  ( const QString &, const QString & );
00139         void removeEntry ( const QString & );
00140         void setDenomination (
00141                 const QString &, const QString &,const QString &
00142         );
00143         void setRawItem (
00144                 const QString &, const QString &,const QString &
00145         );
00146         void addRawItem (
00147                 const QString &, const QString &,const QString &
00148         );
00149         void removeRawItem ( const QString &, const QString & );
00150         QString getItem ( const QString & );
00151 
00152         public:
00153         bool setID ( int );
00154         bool addID ( int );
00155         bool delID ( int );
00156         int getCurrentID ( void );
00157         QDict<QString> getTable ( int );
00158         QDict<QString>  getCurrentTable ( void );
00159         QDict<QString>* getTablePointer ( int  );
00160     QDict<QString>* getCurrentTablePointer ( void );
00161         void merge ( QList< QDict<QString> > );
00162         int getCount ( bool = false );
00163 
00164         public:
00165         void addGroup (
00166                 const QString &,const QString &, const QString &
00167         );
00168         QDict< QDict<QString> > getTablePointerCDB  ( void );
00169         QList< QDict<QString> > getTablePointerCDB_DATA ( const QString & );
00170         QList< QDict<QString> > getTablePointerDATA ( void );
00171 
00172         #ifndef NO_OPERATOR_SUPPORT
00173         public:
00174         QDict<QString> operator[] ( int id ) {
00175                 return getTable (id);
00176         }
00177         QString operator[] ( const QString & key ) {
00178                 return getItem (key);
00179         }
00180         #endif
00181 
00182         public:
00183         SaXStorage ( void );
00184 };
00185 } // end namespace
00186 #endif

Generated on Mon Jun 19 12:42:49 2006 for libsax by  doxygen 1.4.6