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_STRUCT_CLASS_H
00026 #define _EYEDB_STRUCT_CLASS_H
00027
00028 namespace eyedb {
00029
00035 class Struct;
00036
00040 class StructClass : public AgregatClass {
00041 friend class Struct;
00042
00043
00044
00045
00046 public:
00052 StructClass(const char *s, Class *p = NULL);
00053
00059 StructClass(const char *s, const Oid *poid);
00060
00067 StructClass(Database *db, const char *s, Class *p = NULL);
00068
00075 StructClass(Database *db, const char *s, const Oid *poid);
00076
00082 Object *newObj(Database *db = NULL) const;
00083
00090 Object *newObj(Data data, Bool copy = True) const;
00091
00096 virtual StructClass *asStructClass() {return this;}
00097
00102 virtual const StructClass *asStructClass() const {return this;}
00103
00104
00105
00106
00107
00108 public:
00109 StructClass(const Oid&, const char *);
00110 virtual Status loadComplete(const Class *);
00111 };
00112
00113 class StructClassPtr : public AgregatClassPtr {
00114
00115 public:
00116 StructClassPtr(StructClass *o = 0) : AgregatClassPtr(o) { }
00117
00118 StructClass *getStructClass() {return dynamic_cast<StructClass *>(o);}
00119 const StructClass *getStructClass() const {return dynamic_cast<StructClass *>(o);}
00120
00121 StructClass *operator->() {return dynamic_cast<StructClass *>(o);}
00122 const StructClass *operator->() const {return dynamic_cast<StructClass *>(o);}
00123 };
00124
00125 typedef std::vector<StructClassPtr> StructClassPtrVector;
00126
00131 }
00132
00133 #endif