00001
00058 #ifndef ABA_POOLSLOT_H
00059 #define ABA_POOLSLOT_H
00060
00061 #include "abacus/abacusroot.h"
00062
00063 class ABA_MASTER;
00064 class ABA_SUB;
00065 class ABA_CONSTRAINT;
00066 class ABA_VARIABLE;
00067 template<class BaseType, class CoType> class ABA_POOL;
00068 template<class BaseType, class CoType> class ABA_POOLSLOTREF;
00069 template<class BaseType, class CoType> class ABA_STANDARDPOOL;
00070 template<class BaseType, class CoType> class ABA_NONDUPLPOOL;
00071 template<class BaseType, class CoType> class ABA_CUTBUFFER;
00072
00073 #ifdef ABACUS_PARALLEL
00074 class ABA_ID;
00075 #endif
00076 template<class BaseType, class CoType> class ABA_POOLSLOT : public ABA_ABACUSROOT {
00077 friend class ABA_POOLSLOTREF<BaseType,CoType>;
00078 friend class ABA_POOL<BaseType,CoType>;
00079 friend class ABA_STANDARDPOOL<BaseType,CoType>;
00080 friend class ABA_CUTBUFFER<BaseType,CoType>;
00081
00082 friend class ABA_SUB;
00083 friend class ABA_POOLSLOTREF<ABA_CONSTRAINT, ABA_VARIABLE>;
00084 friend class ABA_POOLSLOTREF<ABA_VARIABLE, ABA_CONSTRAINT>;
00085 friend class ABA_POOL<ABA_CONSTRAINT, ABA_VARIABLE>;
00086 friend class ABA_POOL<ABA_VARIABLE, ABA_CONSTRAINT>;
00087 friend class ABA_STANDARDPOOL<ABA_CONSTRAINT, ABA_VARIABLE>;
00088 friend class ABA_STANDARDPOOL<ABA_VARIABLE, ABA_CONSTRAINT>;
00089 friend class ABA_NONDUPLPOOL<ABA_CONSTRAINT, ABA_VARIABLE>;
00090 friend class ABA_NONDUPLPOOL<ABA_VARIABLE, ABA_CONSTRAINT>;
00091 friend class ABA_CUTBUFFER<ABA_CONSTRAINT, ABA_VARIABLE>;
00092 friend class ABA_CUTBUFFER<ABA_VARIABLE, ABA_CONSTRAINT>;
00093 public:
00094
00105 ABA_POOLSLOT(ABA_MASTER *master,
00106 ABA_POOL<BaseType, CoType> *pool,
00107 BaseType *convar = 0);
00108
00112 ~ABA_POOLSLOT();
00113
00116 BaseType *conVar() const;
00117 #ifdef ABACUS_PARALLEL
00118
00124 const ABA_ID &getIdentification(void) const;
00125
00132 void setIdentification(const ABA_ID &id);
00133
00138 void setNewIdentification();
00139 #endif
00140
00141 private:
00142
00151 void insert(BaseType *convar);
00152
00160 int softDelete();
00161
00166 void hardDelete();
00167
00170 void removeConVarFromPool();
00171
00174 unsigned long version() const;
00175
00178 ABA_MASTER *master();
00179
00182 ABA_MASTER *master_;
00183
00186 BaseType *conVar_;
00187
00190 unsigned long version_;
00191
00194 ABA_POOL<BaseType, CoType> *pool_;
00195 ABA_POOLSLOT(const ABA_POOLSLOT<BaseType, CoType> &rhs);
00196 const ABA_POOLSLOT<BaseType, CoType>
00197 &operator=(const ABA_POOLSLOT<BaseType, CoType> &rhs);
00198 };
00199
00200 #include "abacus/poolslot.inc"
00201
00202 #endif // ABA_POOLSLOT_H
00203
00204