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_FLOAT_H
00026 #define _EYEDB_FLOAT_H
00027
00028 namespace eyedb {
00029
00038 class Float : public Basic {
00039
00040
00041
00042
00043 public:
00048 Float(double d =0.0);
00049
00056 Float(Database *db, double d = 0.0, const Dataspace *dataspace = 0);
00057
00062 Float(const Float *o);
00063
00068 Float(const Float &o);
00069
00074 virtual Object *clone() const {return new Float(*this);}
00075
00081 Float& operator=(const Float &o);
00082
00090 Status trace(FILE *fd = stdout, unsigned int flags = 0, const RecMode *recmode = RecMode::FullRecurs) const;
00091
00097 Status setValue(Data data);
00098
00104 Status getValue(Data *data) const;
00105
00110 virtual Float *asFloat() {return this;}
00111
00116 virtual const Float *asFloat() const {return this;}
00117
00118
00119
00120
00121 private:
00122 Status trace_realize(FILE*, int, unsigned int, const RecMode *) const;
00123 double val;
00124 Status create();
00125 Status update();
00126 };
00127
00128 class FloatPtr : public BasicPtr {
00129
00130 public:
00131 FloatPtr(Float *o = 0) : BasicPtr(o) { }
00132
00133 Float *getFloat() {return dynamic_cast<Float *>(o);}
00134 const Float *getFloat() const {return dynamic_cast<Float *>(o);}
00135
00136 Float *operator->() {return dynamic_cast<Float *>(o);}
00137 const Float *operator->() const {return dynamic_cast<Float *>(o);}
00138 };
00139
00140 typedef std::vector<FloatPtr> FloatPtrVector;
00141
00142 extern FloatClass *Float_Class;
00143 extern const char float_class_name[];
00144
00149 }
00150
00151 #endif