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_H
00026 #define _EYEDB_BYTE_H
00027
00028 namespace eyedb {
00029
00038 class Byte : public Basic {
00039
00040
00041
00042
00043 public:
00048 Byte(unsigned char c =0);
00049
00056 Byte(Database *db, unsigned char c = 0, const Dataspace *dataspace = 0);
00057
00062 Byte(const Byte *o);
00063
00068 Byte(const Byte &o);
00069
00074 Byte& operator=(const Byte &o);
00075
00080 virtual Object *clone() const {return new Byte(*this);}
00081
00089 Status trace(FILE* fd = stdout, unsigned int flags = 0, const RecMode * recmode = RecMode::FullRecurs) const;
00090
00096 Status setValue(Data data);
00097
00103 Status getValue(Data* data) const;
00104
00109 virtual Byte *asByte() {return this;}
00110
00115 virtual const Byte *asByte() const {return this;}
00116
00117
00118
00119
00120 private:
00121 Status trace_realize(FILE*, int, unsigned int, const RecMode *) const;
00122 unsigned char val;
00123 Status create();
00124 Status update();
00125 };
00126
00127 class BytePtr : public BasicPtr {
00128
00129 public:
00130 BytePtr(Byte *o = 0) : BasicPtr(o) { }
00131
00132 Byte *getByte() {return dynamic_cast<Byte *>(o);}
00133 const Byte *getByte() const {return dynamic_cast<Byte *>(o);}
00134
00135 Byte *operator->() {return dynamic_cast<Byte *>(o);}
00136 const Byte *operator->() const {return dynamic_cast<Byte *>(o);}
00137 };
00138
00139 typedef std::vector<BytePtr> BytePtrVector;
00140
00141 extern ByteClass *Byte_Class;
00142 extern const char byte_class_name[];
00143
00148 }
00149
00150 #endif