//==================================================================== // AthenaPoolConverter implementation //-------------------------------------------------------------------- // // Package : AthenaPoolCnvSvc // // Description: Base Athena converter class implementation // // Author : Valeri Fine // created : Mar 3, 2003 // History : //==================================================================== #ifndef EVENTINFOPOOLCNV_POOLCONVERTER_H #define EVENTINFOPOOLCNV_POOLCONVERTER_H #include "GaudiKernel/Converter.h" #include "POOLCore/pool.h" #include "POOLCore/Placement.h" class IOpaqueAddress; class DataObject; class StatusCode; class IAddressCreator; class AthenaPoolCnvSvc; class AthenaPoolAddress; #include // Abstract factory to create the converter template class CnvFactory; // Externals extern unsigned char Pool_StorageType; class AthenaPoolConverter: public Converter { // friend class CnvFactory; protected: AthenaPoolConverter(const CLID& id, ISvcLocator* svcloc); virtual std::string markWrite()=0; virtual StatusCode DataObjectToPool(DataObject* pObj,std::string tname)=0; virtual StatusCode PoolToDataObject(DataObject* pObj,AthenaPoolAddress *pAddress)=0; virtual void setPlacement()=0; public: virtual StatusCode initialize(); virtual StatusCode createObj(IOpaqueAddress* pAddr, DataObject*& pObj); // virtual StatusCode fillObjRefs(IOpaqueAddress* pAddr, DataObject* pObj); virtual StatusCode createRep(DataObject* pObj, IOpaqueAddress*& pAddr); /// Storage type and class ID static const unsigned char storageType() { return Pool_StorageType; } static const CLID& classID(); protected: AthenaPoolCnvSvc* m_AthenaPoolCnvSvc; pool::Placement m_Placement; }; #endif