00001 #ifndef RawDataCnvSvc_H
00002 #define RawDataCnvSvc_H
00003
00004 #include <map>
00005 #include "GaudiKernel/ConversionSvc.h"
00006 #include "RawDataCnvBase/IRawDataCnvSvc.h"
00007
00008 template <class TYPE> class SvcFactory;
00009
00010 class IOpaqueAddress;
00011
00023 class RawDataCnvSvc : public ConversionSvc, virtual public IRawDataCnvSvc {
00024
00025 friend class SvcFactory<RawDataCnvSvc>;
00026
00028 typedef std::map<std::string, Leaf*> LeafMap;
00029 LeafMap m_leaves;
00030
00031 public:
00032
00033 virtual StatusCode initialize();
00034
00035 virtual StatusCode finalize();
00036
00038 virtual StatusCode declareObject(const IRawDataCnvSvc::Leaf& leaf);
00039
00041 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface);
00042
00043
00044 virtual StatusCode createAddress( long svc_type,
00045 const CLID& clid,
00046 const std::string* par,
00047 const unsigned long* ip,
00048 IOpaqueAddress*& refpAddress);
00049 virtual StatusCode createAddress(long storageType,
00050 const CLID& clid,
00051 const std::string&,
00052 IOpaqueAddress*& refpAddress);
00053
00054 protected:
00055 virtual StatusCode addConverters () = 0;
00056
00057 StatusCode updateServiceState(IOpaqueAddress* pAddress);
00058
00059 RawDataCnvSvc(const std::string& name, ISvcLocator* svc, long storageTyp);
00060
00061 virtual ~RawDataCnvSvc() { };
00062 };
00063
00064
00065 #endif // RawDataCnvSvc_H
00066