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

DbContainer.h

Go to the documentation of this file.
00001 //====================================================================
00002 //      DbContainer handle definitions
00003 //--------------------------------------------------------------------
00004 //
00005 //      Package    : DbCnv ( The LHCb Offline System)
00006 //      Author     : M.Frank
00007 //====================================================================
00008 #ifndef DBCNV_DBCONTAINER_H
00009 #define DBCNV_DBCONTAINER_H
00010 
00011 // Forward declarations
00012 class ISelectStatement;
00013 class DbLink;
00014 class DbObject;
00015 class DbCursor;
00016 class DbDataBase;
00017 class DbContainer;
00018 class IDbContainer;
00019 class IDbCursor;
00020 template <class T> class dbHandle;
00021 typedef dbHandle<DbContainer> dbHandle_DbContainer;
00022 
00023 // Framework include files
00024 #include "GaudiDb/DbBase.h"
00025 #include "GaudiDb/DbTypeInfo.h"
00026 
00048 template <> class dbHandle<DbContainer> : public dbHandleBase<DbContainer>   {
00049 public:
00050   // friend class declaration
00051   friend class DbContainer;
00052   friend class DbContainerImplementation;
00053 private:
00055   mutable std::string       m_name;
00057   mutable DbAccessMode      m_mode;
00058 private:
00060   dbHandle<DbContainer> (DbContainer* ptr);
00062   void switchPtr(DbContainer* obj)  const;
00064   DbResult i_addEntry(const dbHandle<DbObject>& handle);
00066   DbResult i_updateEntry(const dbHandle<DbObject>& handle);
00068   IDbContainer* info()  const;
00069 
00070 public:
00072   dbHandle () 
00073   : dbHandleBase<DbContainer>(), m_mode(DbOOMs::READ)  {
00074   }
00076   dbHandle(unsigned char type) 
00077   : dbHandleBase<DbContainer>(), m_mode(DbOOMs::READ)  {
00078     m_type = type;
00079   }
00081   dbHandle(const dbHandle<DbContainer>& copy)
00082   : dbHandleBase<DbContainer>()  {
00083     *this = copy;
00084   }
00086   virtual ~dbHandle()   {
00087     switchPtr( 0 );
00088   }
00090   dbHandle<DbContainer>& operator=(const dbHandle<DbContainer>& copy)  {
00091     switchPtr( copy.m_ptr );
00092     m_name = copy.m_name;
00093     m_mode = copy.m_mode;
00094     return *this;
00095   }
00097   const std::string& name()   const  {
00098     return m_name;
00099   }
00101   bool isValid()   const  {
00102     return 0 != m_ptr;
00103   }  
00105   long addRef()  const;
00107   long release()  const;
00109   long size()    const;
00111   DbAccessMode openMode()   const;
00113   dbHandle<DbDataBase> containedIn()    const;
00115   dbHandle<DbObject> find(const dbHandle<DbLink>& handle)    const;
00117   DbResult remove(dbHandle<DbObject>& objH);
00119   template <class T> DbResult addEntry(const dbHandle<T>& objH)   {
00120     return i_addEntry(objH);
00121   }
00123   template <class T> DbResult updateEntry(const dbHandle<T>& objH)   {
00124     return i_updateEntry(objH);
00125   }
00127   DbResult select(ISelectStatement* sel)  const;
00129   DbResult unselect()  const;
00131   DbResult close()    const;
00133   DbResult open(dbHandle<DbDataBase>& file, const std::string& name, const DbTypeInfo& info, DbAccessMode mode)   const;
00135   DbResult open(dbHandle<DbDataBase>& file, const std::string& name) const;
00137   IDbCursor* makeCursor() const;
00139   IOODataBase* db();
00141   const DbTypeInfo* typeInfo()  const;
00143   IMessageSvc* msgSvc();
00144 };
00145 
00146 #endif // DBCNV_DBCONTAINER_H

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