Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

DbGenericConverter.h

Go to the documentation of this file.
00001 //====================================================================
00002 //      DbGenericConverter definition
00003 //--------------------------------------------------------------------
00004 //
00005 //      Package    : System ( The LHCb Offline System)
00006 //
00007 //  Description: Generic Db data converter
00008 //
00009 //      Author     : M.Frank
00010 //====================================================================
00011 #ifndef DBCNV_DBGENERICCONVERTER_H
00012 #define DBCNV_DBGENERICCONVERTER_H
00013 // $Header: /nfs/slac/g/glast/ground/cvs/GaudiDb/GaudiDb/DbGenericConverter.h,v 1.1.1.1 2001/04/18 21:13:34 tlindner Exp $
00014 
00015 // Framework include files
00016 #include "GaudiKernel/DataObject.h"
00017 #include "DbCnvFactory.h"
00018 #include "DbBaseConverter.h"
00019 
00044 class DbGenericConverter : public DbBaseConverter     {
00046   friend CnvFactory<DbGenericConverter>;
00047 protected:
00049   DbGenericConverter(const CLID& clid, IOODataBase* db, ISvcLocator* svc);
00051   virtual ~DbGenericConverter();
00053   void clearBuffers(DefHandle& objH);
00055   virtual dbHandle<DbObject> createPersistent(dbHandle<DbContainer>& cntH);
00056 
00058   virtual StatusCode beginPersistentUpdate( DefHandle& objH, const DataObject* pObject);
00060   virtual StatusCode endPersistentUpdate( DefHandle& objH, const DataObject* pObject);
00062   virtual StatusCode doPersistentUpdate( DefHandle& objH, const DataObject* pObject);
00063 
00065   virtual StatusCode beginTransientUpdate( DefHandle& objH, DataObject* pObject);
00067   virtual StatusCode endTransientUpdate( DefHandle& objH, DataObject* pObject);
00069   virtual StatusCode doTransientUpdate( DefHandle& objH, DataObject* pObject);
00070 };
00071 
00072 template <class T> class DbOOMsConverter : public DbGenericConverter   {
00073   friend DbOOMsCnvFactory< DbOOMsConverter < T > >;
00074 public:
00075   DbOOMsConverter(IOODataBase* db, ISvcLocator* svc) 
00076     : DbGenericConverter(classID(), db, svc)
00077   {
00078   }
00079   virtual ~DbOOMsConverter()    {
00080   }
00081   virtual DataObject* createTransient()  {
00082     return new T();
00083   }
00084   static const CLID& classID()    {
00085     return T::classID();
00086   }
00087 };
00088 
00089 template <> class DbOOMsConverter<DataObject> : public DbGenericConverter   {
00090   friend DbOOMsCnvFactory< DbOOMsConverter < DataObject > >;
00091 public:
00092   DbOOMsConverter(IOODataBase* db, ISvcLocator* svc) 
00093     : DbGenericConverter(classID(), db, svc)
00094   {
00095   }
00096   virtual ~DbOOMsConverter()    {
00097   }
00098   virtual DataObject* createTransient()  {
00099     return new DataObject();
00100   }
00101   static const CLID& classID()    {
00102     return CLID_DataObject;
00103   }
00104 };
00105 
00106 
00116 #define _ImplementConverter( Transient )                                \
00117 static DbOOMsCnvFactory< DbOOMsConverter < Transient > > s_##DBOOMs##Transient##factory; \
00118 const ICnvFactory& DbOOMs##Transient##CnvFactory = s_##DBOOMs##Transient##factory;
00119 
00120 #define _ImplementNameSpaceConverter( NameSpace, Transient )                                \
00121 static DbOOMsCnvFactory< DbOOMsConverter < NameSpace##::##Transient > > s_##DBOOMs##NameSpace##Transient##factory; \
00122 const ICnvFactory& DbOOMs##NameSpace##Transient##CnvFactory = s_##DBOOMs##NameSpace##Transient##factory;
00123 
00124 #endif    // DBCNV_DBGENERICCONVERTER_H

Generated at Wed Nov 21 12:22:19 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000