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_BYTE_CLASS_H
00026 #define _EYEDB_BYTE_CLASS_H
00027
00028 namespace eyedb {
00029
00038 class ByteClass : public BasicClass {
00039
00040
00041
00042 public:
00047 ByteClass(Database *db = NULL);
00048
00053 ByteClass(const ByteClass &cl);
00054
00060 ByteClass& operator=(const ByteClass &cl);
00061
00066 virtual Object *clone() const {return new ByteClass(*this);}
00067
00073 Object *newObj(Database *db = NULL) const;
00074
00081 Object *newObj(Data data, Bool copy = True) const;
00082
00092 Status traceData(FILE *fd, int indent, Data inidata,
00093 Data data, TypeModifier *tmod = NULL) const;
00094
00099 virtual ByteClass *asByteClass() {return this;}
00100
00105 virtual const ByteClass *asByteClass() const {return this;}
00106
00107
00108
00109
00110 private:
00111 Status trace_realize(FILE*, int, unsigned int, const RecMode *) const;
00112
00113
00114
00115
00116 public:
00117
00118 virtual void decode(void * hdata,
00119 const void * xdata,
00120 Size incsize,
00121 unsigned int nb = 1) const;
00122
00123 virtual void encode(void * xdata,
00124 const void * hdata,
00125 Size incsize,
00126 unsigned int nb = 1) const;
00127
00128 virtual int cmp(const void * xdata,
00129 const void * hdata,
00130 Size incsize,
00131 unsigned int nb = 1) const;
00132 };
00133
00134 class ByteClassPtr : public BasicClassPtr {
00135
00136 public:
00137 ByteClassPtr(ByteClass *o = 0) : BasicClassPtr(o) { }
00138
00139 ByteClass *getByteClass() {return dynamic_cast<ByteClass *>(o);}
00140 const ByteClass *getByteClass() const {return dynamic_cast<ByteClass *>(o);}
00141
00142 ByteClass *operator->() {return dynamic_cast<ByteClass *>(o);}
00143 const ByteClass *operator->() const {return dynamic_cast<ByteClass *>(o);}
00144 };
00145
00146 typedef std::vector<ByteClassPtr> ByteClassPtrVector;
00147
00152 }
00153
00154 #endif
00155