| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

Converter.h

Go to the documentation of this file.
00001 // $Header: /local/reps/Gaudi/GaudiKernel/GaudiKernel/Converter.h,v 1.10 2004/09/11 00:22:41 leggett Exp $
00002 #ifndef GAUDIKERNEL_CONVERTER_H
00003 #define GAUDIKERNEL_CONVERTER_H
00004 
00005 // generic experiment headers
00006 #include "GaudiKernel/IConverter.h"
00007 #include "GaudiKernel/ISvcLocator.h"
00008 #include "GaudiKernel/IService.h"
00009 #include "GaudiKernel/ConversionSvc.h"
00010 
00011 // Forward declarations
00012 class IMessageSvc;
00013 class IRegistry;
00014 class IDataProviderSvc;
00015 class IDataManagerSvc;
00016 
00025 class Converter : virtual public IConverter         {
00026 
00027 public:
00028 
00030   virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface);
00031 
00033   virtual unsigned long addRef();
00034 
00036   virtual unsigned long release();
00037 
00039   virtual StatusCode initialize();
00040 
00042   virtual StatusCode finalize();
00043 
00045   virtual StatusCode setDataProvider(IDataProviderSvc* svc);
00046 
00048   virtual IDataProviderSvc* dataProvider()    const;
00049 
00051   virtual StatusCode setConversionSvc(IConversionSvc* svc);
00052 
00054   virtual IConversionSvc* conversionSvc()    const;
00055 
00057   virtual StatusCode setAddressCreator(IAddressCreator* creator);
00058 
00060   virtual IAddressCreator* addressCreator()   const;
00061 
00063   virtual const CLID& objType() const;
00064 
00066   // MSF: Masked to generate compiler error due to interface change
00067   virtual long i_repSvcType() const;
00068 
00070   virtual StatusCode createObj(IOpaqueAddress* pAddress,DataObject*& refpObject);
00071 
00073   virtual StatusCode fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00074 
00076   virtual StatusCode updateObj(IOpaqueAddress* pAddress, DataObject* refpObject);
00077 
00079   virtual StatusCode updateObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00080 
00082   virtual StatusCode createRep(DataObject* pObject, IOpaqueAddress*& refpAddress);
00083 
00085   virtual StatusCode fillRepRefs(IOpaqueAddress* pAddress,DataObject* pObject);
00086 
00088   virtual StatusCode updateRep(IOpaqueAddress* pAddress, DataObject* pObject);
00089 
00091   virtual StatusCode updateRepRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00092 
00094   Converter(long storage_type, const CLID& class_type, ISvcLocator* svc);
00095 
00097   template <class T>
00098   StatusCode service( const std::string& name, T*& psvc, bool createIf = false ) const {
00099     return service_i(name, createIf, T::interfaceID(), (void**)&psvc);
00100   }
00101 
00103   template <class T>
00104   StatusCode service( const std::string& type, const std::string& name, T*& psvc) const {
00105     return service_i(type, name, T::interfaceID(), (void**)&psvc);
00106   }
00107 
00108 protected:
00109 
00111   virtual ~Converter();
00112 
00114   ISvcLocator* serviceLocator()   const;
00116   IMessageSvc* msgSvc()   const;
00117   // Obsoleted name, kept due to the backwards compatibility
00118   IMessageSvc* messageService()   const;
00120   IDataManagerSvc* dataManager() const;
00121 
00122 private:
00123 
00125   unsigned long     m_refCount;
00127   long              m_storageType;
00129   const CLID        m_classType;
00131   IAddressCreator*    m_addressCreator;
00133   IDataProviderSvc* m_dataProvider;
00135   IDataManagerSvc*  m_dataManager;
00137   IConversionSvc*   m_conversionSvc;
00139   ISvcLocator*      m_svcLocator;
00141   mutable IMessageSvc* m_messageSvc;
00142 
00144   StatusCode service_i(const std::string& svcName,
00145                        bool createIf,
00146                        const InterfaceID& iid,
00147                        void** ppSvc) const;
00148   StatusCode service_i(const std::string& svcType,
00149                        const std::string& svcName,
00150                        const InterfaceID& iid,
00151                        void** ppSvc) const;
00152 };
00153 
00154 
00155 #endif // GAUDIKERNEL_CONVERTER_H 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 19:56:57 2011 for GaudiKernel by doxygen 1.4.7