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_LIST_H
00026 #define _EYEDB_COLL_LIST_H
00027
00028 namespace eyedb {
00029
00038 class CollList : public Collection {
00039
00040
00041
00042
00043 public:
00052 CollList(Database *db, const char *n, Class *mc = NULL,
00053 Bool isref = True,
00054 const CollImpl *collimpl = 0);
00055
00064 CollList(Database *db, const char *n, Class *mc, int dim,
00065 const CollImpl *collimpl = 0);
00066
00071 CollList(const CollList &o);
00072
00077 CollList& operator=(const CollList &o);
00078
00083 virtual Object *clone() const {return new CollList(*this);}
00084
00085
00092 Status insert(const Value &value, Bool noDup = False);
00093
00099 Status insertFirst(const Value &value, Collection::ItemId *iid = 0);
00100
00106 Status insertLast(const Value &value, Collection::ItemId *iid = 0);
00107
00113 Status insertBefore(Collection::ItemId id, const Value &value,
00114 Collection::ItemId *iid = 0);
00115
00121 Status insertAfter(Collection::ItemId id, const Value &value,
00122 Collection::ItemId *iid = 0);
00123
00130 Status replaceAt(Collection::ItemId id, const Value &value);
00131
00137 Status suppressAt(Collection::ItemId id);
00138
00145 Status retrieveAt(Collection::ItemId id, Oid &item_oid) const;
00146
00154 Status retrieveAt(Collection::ItemId id, ObjectPtr &item_o,
00155 const RecMode *recmode = RecMode::NoRecurs) const;
00156
00164 Status retrieveAt(Collection::ItemId id, Object *&item_o,
00165 const RecMode *recmode = RecMode::NoRecurs) const;
00166
00173 Status retrieveAt(Collection::ItemId id, Value &value) const;
00174
00179 virtual CollList *asCollList() {return this;}
00180
00185 virtual const CollList *asCollList() const {return this;}
00186
00187
00188
00189
00190 private:
00191 void init();
00192 const char *getClassName() const;
00193 CollList(const char *, Class *,
00194 const Oid&, const Oid&, int,
00195 int, int, const CollImpl *, Object *,
00196 Bool, Bool, Data, Size);
00197 friend class CollectionPeer;
00198
00199
00200
00201
00202 public:
00203 CollList(const char *, Class * = NULL, Bool = True,
00204 const CollImpl * = 0);
00205 CollList(const char *, Class *, int,
00206 const CollImpl * = 0);
00207
00208 Status insert_p(const Oid &item_oid, Bool noDup = False);
00209 Status insert_p(const Object *item_o, Bool noDup = False);
00210 Status insert_p(Data val, Bool noDup = False, Size size = defaultSize);
00211 Status insertFirst_p(const Oid &item_oid, Collection::ItemId *iid = 0);
00212 Status insertFirst_p(const Object *item_o, Collection::ItemId *iid = 0);
00213 Status insertLast_p(const Oid &item_oid, Collection::ItemId *iid = 0);
00214 Status insertLast_p(const Object *item_o, Collection::ItemId *iid = 0);
00215 Status insertBefore_p(Collection::ItemId id, const Oid &item_oid,
00216 Collection::ItemId *iid = 0);
00217 Status insertBefore_p(Collection::ItemId id, const Object *item_o,
00218 Collection::ItemId *iid = 0);
00219 Status insertAfter_p(Collection::ItemId id, const Oid &item_oid,
00220 Collection::ItemId *iid = 0);
00221 Status insertAfter_p(Collection::ItemId id, const Object *item_o,
00222 Collection::ItemId *iid = 0);
00223 Status replaceAt_p(Collection::ItemId id, const Oid &item_oid);
00224 Status replaceAt_p(Collection::ItemId id, const Object *item_o);
00225
00226 };
00227
00228 class CollListPtr : public CollectionPtr {
00229
00230 public:
00231 CollListPtr(CollList *o = 0) : CollectionPtr(o) { }
00232
00233 CollList *getCollList() {return dynamic_cast<CollList *>(o);}
00234 const CollList *getCollList() const {return dynamic_cast<CollList *>(o);}
00235
00236 CollList *operator->() {return dynamic_cast<CollList *>(o);}
00237 const CollList *operator->() const {return dynamic_cast<CollList *>(o);}
00238 };
00239
00240 typedef std::vector<CollListPtr> CollListPtrVector;
00241
00246 }
00247
00248 #endif