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_INSTANCE_H
00026 #define _EYEDB_INSTANCE_H
00027
00028 namespace eyedb {
00029
00038 class Instance : public Object {
00039
00040
00041
00042
00043 public:
00049 Instance(Database *db = 0, const Dataspace *dataspace = 0);
00050
00055 Instance(const Instance &o) : Object(o) {}
00056
00062 Instance(const Instance *o, Bool share = False) :
00063 Object(o, share) {}
00064
00069 Instance *asInstance() {return this;}
00070
00075 const Instance *asInstance() const {return this;}
00076
00081 virtual void garbage();
00082
00083 virtual ~Instance();
00084
00085
00086
00087
00088 protected:
00089 void initialize(Database *);
00090 };
00091
00092 class InstancePtr : public ObjectPtr {
00093
00094 public:
00095 InstancePtr(Instance *o = 0) : ObjectPtr(o) { }
00096
00097 Instance *getInstance() {return dynamic_cast<Instance *>(o);}
00098 const Instance *getInstance() const {return dynamic_cast<Instance *>(o);}
00099
00100 Instance *operator->() {return dynamic_cast<Instance *>(o);}
00101 const Instance *operator->() const {return dynamic_cast<Instance *>(o);}
00102 };
00103
00104 typedef std::vector<InstancePtr> InstancePtrVector;
00105
00110 }
00111
00112 #endif