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_COLL_BAG_H
00026 #define _EYEDB_COLL_BAG_H
00027
00028 namespace eyedb {
00029
00038 class CollBag : public Collection {
00039
00040
00041
00042
00043 public:
00052 CollBag(Database *db, const char *n, Class *mc = NULL,
00053 Bool isref = True, const CollImpl *collimpl = 0);
00054
00063 CollBag(Database *db, const char *n, Class *mc, int dim,
00064 const CollImpl *collimpl = 0);
00065
00070 CollBag(const CollBag &o);
00071
00077 CollBag& operator=(const CollBag &o);
00078
00083 virtual Object *clone() const {return new CollBag(*this);}
00084
00085
00090 virtual CollBag *asCollBag() {return this;}
00091
00096 virtual const CollBag *asCollBag() const {return this;}
00097
00098
00099
00100
00101 private:
00102 void init();
00103 const char *getClassName() const;
00104 CollBag(const char *, Class *,
00105 const Oid&, const Oid&, int,
00106 int, int, const CollImpl *, Object *, Bool, Bool,
00107 Data, Size);
00108 friend class CollectionPeer;
00109
00110
00111
00112
00113 public:
00114 CollBag(const char *, Class * = NULL, Bool = True,
00115 const CollImpl * = 0);
00116 CollBag(const char *, Class *, int,
00117 const CollImpl * = 0);
00118
00119 Status insert_p(const Oid &item_oid, Bool noDup = False);
00120 Status insert_p(const Object *item_o, Bool noDup = False);
00121 Status insert_p(Data val, Bool noDup = False, Size size = defaultSize);
00122 };
00123
00124 class CollBagPtr : public CollectionPtr {
00125
00126 public:
00127 CollBagPtr(CollBag *o = 0) : CollectionPtr(o) { }
00128
00129 CollBag *getCollBag() {return dynamic_cast<CollBag *>(o);}
00130 const CollBag *getCollBag() const {return dynamic_cast<CollBag *>(o);}
00131
00132 CollBag *operator->() {return dynamic_cast<CollBag *>(o);}
00133 const CollBag *operator->() const {return dynamic_cast<CollBag *>(o);}
00134 };
00135
00136 typedef std::vector<CollBagPtr> CollBagPtrVector;
00137
00142 }
00143
00144 #endif