CkptObject.h

Go to the documentation of this file.
00001 #ifndef CKPTOBJECT_H_
00002 #define CKPTOBJECT_H_
00003 
00004 #include <memory>
00005 #include "CkptDAO.h"
00006 #include "CkptTypeRegistry.h"
00007 #include "CkptObjectKey.h"
00008 #include "CkptByteArray.h"
00009 
00010 enum CkptRC { CkptSuccess, CkptFailure};
00011 enum CkptObjectState { CKPT_OBJ_UNMANAGED,
00012                        CKPT_OBJ_MANAGED };
00013 
00014 class CkptContainer;
00015 
00022 class CkptObject : public DAOSerializable {
00023 public:
00024 CkptObject() {
00025   _key = NULL;
00026   _container = NULL;
00027   _state = CKPT_OBJ_UNMANAGED;
00028 }
00029 
00030 virtual ~CkptObject() {
00031     if (_key != NULL) {
00032         delete _key;
00033     }
00034 }
00035 
00039 //virtual CkptObject* clone() const = 0;
00040 
00047 virtual void serialize(DAOInterface &dao)=0;
00048 
00052 CkptObjectState getState() { return _state; }
00056 void setState(CkptObjectState state) { _state = state; }
00057 
00058 CkptContainer* getContainer() { return _container; }
00059 
00063 void setContainer(CkptContainer* container) {
00064   _container = container;
00065   if (container == NULL) setState(CKPT_OBJ_UNMANAGED);
00066   else setState(CKPT_OBJ_MANAGED);
00067 }
00068 
00078  virtual CkptObjectKey* getKey() { return _key; }
00079 
00086   virtual void setKey(CkptObjectKey *key) {
00087     if (_key != NULL) delete _key;
00088     _key = key;
00089   }
00090 
00096   virtual void setKey(CkptObjectKey const &key) {
00097     setKey(new CkptObjectKey(key));
00098   }
00099 
00105   virtual void setKey(std::string s) {
00106     setKey(new CkptObjectKey(s));
00107   }
00108 
00118 //virtual unsigned long getSerialVersion()=0;
00119 
00128 CkptRC commit();
00129 
00130 private:
00131  CkptContainer* _container; 
00132  CkptObjectState _state;    
00133  CkptObjectKey* _key;       
00134  unsigned long _serialVersion; 
00135 };
00136 
00137 
00145 #define CkptSimpleStructWrapper(_Tp, WrapperName) \
00146     class WrapperName : public CkptObject { \
00147      public: \
00148       void serialize(DAOInterface &dao) {  \
00149             char* dataPtr = (char*)&data; \
00150           dao.byteCopy(dataPtr, sizeof(_Tp));  } \
00151       _Tp* getStruct()  { return &data; } \
00152       _Tp* operator->() { return &data; } \
00153       COAL_DECLARE_CLASSNAME(#WrapperName) \
00154      private: _Tp data; \
00155     }; \
00156     COAL_REGISTER_TYPE(WrapperName)
00157 
00158 #endif /*CKPTOBJECT_H_*/
00159 

Generated on Fri Apr 27 17:20:01 2007 for aiscoal by  doxygen 1.5.2