00001 #ifndef __ABOX_H__
00002 #define __ABOX_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00201 namespace DLITE
00202 {
00203
00204
00205 class iABox;
00206 typedef _s_ptr<iABox> spiABox;
00207
00208 class iABox
00209 {
00210 public:
00211
00212
00213 enum res_t
00214 {
00215 res_inv,
00216 res_done,
00217 res_dup,
00218 res_clash,
00219 res_none,
00220 };
00221
00222 typedef dword slot_t;
00223
00224 protected:
00225
00226
00227 iABox() {}
00228
00229 public:
00230
00231
00232 virtual ~iABox() {}
00233
00234
00235 virtual slot_t Save() = 0;
00236
00237
00238 virtual void Restore(const slot_t i_nSlot) = 0;
00239
00240
00241 virtual res_t Cache(const operator_t i_nConcept) = 0;
00242
00243
00244 virtual res_t Add(const operator_t i_nConcept) = 0;
00245
00246
00247 virtual res_t Add(const operator_t i_nRole, const operator_t i_nNode) = 0;
00248
00249
00250 virtual bool Select(const operator_t i_nNode) = 0;
00251
00252
00253 virtual operator_t CurNode() = 0;
00254
00255
00256 virtual operator_t NewNode(const operator_t i_nNode = 0) = 0;
00257
00258
00259 virtual res_t Check(const operator_t i_nNode, const operator_t i_nConcept) = 0;
00260
00261
00262 virtual list<operator_t> Successors(const operator_t i_nRole) = 0;
00263
00264
00265 virtual void Clear() = 0;
00266
00267
00268 virtual bool Empty() const = 0;
00269
00270
00271 static spiABox Create();
00272 };
00273 }
00274
00275 #endif //_ABOX_H