00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SAX_STORAGE_H
00022 #define SAX_STORAGE_H 1
00023
00024
00025
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
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
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
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 }
00186 #endif