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_UNION_CLASS_H
00026 #define _EYEDB_UNION_CLASS_H
00027
00028 namespace eyedb {
00029
00035 class Union;
00036
00040 class UnionClass : public AgregatClass {
00041 friend class Union;
00042
00043
00044
00045
00046 public:
00052 UnionClass(const char *s, Class *p = NULL);
00053
00059 UnionClass(const char *s, const Oid *poid);
00060
00067 UnionClass(Database *db, const char *s, Class *p = NULL);
00068
00075 UnionClass(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 UnionClass *asUnionClass() {return this;}
00097
00102 virtual const UnionClass *asUnionClass() const {return this;}
00103
00104
00105 virtual Status loadComplete(const Class *);
00106 };
00107
00108 class UnionClassPtr : public AgregatClassPtr {
00109
00110 public:
00111 UnionClassPtr(UnionClass *o = 0) : AgregatClassPtr(o) { }
00112
00113 UnionClass *getUnionClass() {return dynamic_cast<UnionClass *>(o);}
00114 const UnionClass *getUnionClass() const {return dynamic_cast<UnionClass *>(o);}
00115
00116 UnionClass *operator->() {return dynamic_cast<UnionClass *>(o);}
00117 const UnionClass *operator->() const {return dynamic_cast<UnionClass *>(o);}
00118 };
00119
00120 typedef std::vector<UnionClassPtr> UnionClassPtrVector;
00121
00126 }
00127
00128 #endif