00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _EYEDB_CHAR_CLASS_H
00026 #define _EYEDB_CHAR_CLASS_H
00027
00028 namespace eyedb {
00029
00038 class CharClass : public BasicClass {
00039
00040
00041
00042 public:
00047 CharClass(Database *db = NULL);
00048
00053 CharClass(const CharClass &cl);
00054
00059 CharClass& operator=(const CharClass &cl);
00060
00066 Object *newObj(Database *db = NULL) const;
00067
00074 Object *newObj(Data data, Bool copy = True) const;
00075
00085 Status traceData(FILE *fd, int indent, Data inidata,
00086 Data data, TypeModifier *tmod = NULL) const;
00087
00092 virtual CharClass *asCharClass() {return this;}
00093
00098 virtual const CharClass *asCharClass() const {return this;}
00099
00100
00101
00102
00103 private:
00104 Status trace_realize(FILE*, int, unsigned int, const RecMode *) const;
00105
00106
00107
00108
00109 public:
00110
00111 virtual void decode(void * hdata,
00112 const void * xdata,
00113 Size incsize,
00114 unsigned int nb = 1) const;
00115
00116 virtual void encode(void * xdata,
00117 const void * hdata,
00118 Size incsize,
00119 unsigned int nb = 1) const;
00120
00121 virtual int cmp(const void * xdata,
00122 const void * hdata,
00123 Size incsize,
00124 unsigned int nb = 1) const;
00125 };
00126
00127 class CharClassPtr : public BasicClassPtr {
00128
00129 public:
00130 CharClassPtr(CharClass *o = 0) : BasicClassPtr(o) { }
00131
00132 CharClass *getCharClass() {return dynamic_cast<CharClass *>(o);}
00133 const CharClass *getCharClass() const {return dynamic_cast<CharClass *>(o);}
00134
00135 CharClass *operator->() {return dynamic_cast<CharClass *>(o);}
00136 const CharClass *operator->() const {return dynamic_cast<CharClass *>(o);}
00137 };
00138
00139 typedef std::vector<CharClassPtr> CharClassPtrVector;
00140
00145 }
00146
00147 #endif
00148