00001 #ifndef __PXXVUnpackable__H__ 00002 #define __PXXVUnpackable__H__ 00003 00019 00020 #include "payloads-unpacker/base/PXXObject.h" 00021 #include "payloads-unpacker/payloads/PXXVAttWritable.h" 00022 #include <string> 00023 00024 class PXXVUnpackable : public PXXObject, public PXXVAttWritable 00025 { 00026 public: 00027 00031 virtual ~PXXVUnpackable(); 00032 //------------------------------------------------------------------------------ 00033 00040 virtual Int32b_t Unpack(); 00041 //------------------------------------------------------------------------------ 00042 00046 virtual Bool8b_t IsUnpacked() const { return fIsUnpacked_; } 00047 //------------------------------------------------------------------------------ 00048 00049 protected: 00050 00054 PXXVUnpackable(); 00055 //------------------------------------------------------------------------------ 00056 00057 private: 00058 00063 virtual Int32b_t ReadData() = 0; 00064 //------------------------------------------------------------------------------ 00065 00066 private: 00067 00068 Bool8b_t fIsUnpacked_; // bool indicates whether Unpack() is called 00069 00070 ClassDef(PXXVUnpackable, 0) // interface of payloads 00071 00072 }; 00073 00074 #ifdef __USEROOT__ // compile with ROOT 00075 typedef PXXVUnpackable* PXXVUnpackablePtr; 00076 #else // compile with IceTray 00077 typedef shared_ptr<PXXVUnpackable> PXXVUnpackablePtr; 00078 #endif 00079 00080 #endif // __PXXVUnpackable__H__