00001 //==================================================================== 00002 // DbContainer class definitions 00003 //-------------------------------------------------------------------- 00004 // 00005 // Package : DbCnv ( The LHCb Offline System) 00006 // Author : M.Frank 00007 //==================================================================== 00008 #ifndef DBCNV_DBCONTAINEROBJ_H 00009 #define DBCNV_DBCONTAINEROBJ_H 1 00010 00011 // Framework include files 00012 #include "GaudiDb/DbHandle.h" 00013 #include "GaudiDb/DbContainer.h" 00014 #include "GaudiDb/DbAccessObj.h" 00015 #include "GaudiDb/DbDataBase.h" 00016 00017 class IOODataBase; 00018 class DbObject; 00019 class DbContainer; 00020 class DbTypeInfo; 00021 00049 class DbContainer : public DbAccessObj<DbObject*, DbObject > { 00050 public: 00052 typedef DbAccessObj<DbObject*, DbObject > _Base; 00054 friend class DbDataBase; 00055 friend class DbContainerImpl; 00056 friend dbHandle<DbContainer>; 00057 00058 private: 00060 IOODataBase* m_dbOOMs; 00062 IDbContainer* m_info; 00064 IMessageSvc* m_msgSvc; 00066 const DbTypeInfo& m_typeInfo; 00068 mutable dbHandle<DbDataBase> m_database; 00070 mutable bool m_isOpen; 00071 00072 private: 00074 DbContainer(dbHandle<DbDataBase>& db, const std::string& name, const DbTypeInfo& info, DbAccessMode mode); 00076 virtual ~DbContainer(); 00078 IDbContainer* info(); 00080 IOODataBase* db(); 00082 IMessageSvc* msgSvc(); 00084 const DbTypeInfo* typeInfo() const; 00086 dbHandle<DbDataBase>& database(); 00088 const dbHandle<DbDataBase>& database() const; 00090 long size() const; 00092 DbResult open() const; 00094 DbResult close() const; 00096 DbResult addEntry(const dbHandle<DbObject>& handle); 00098 DbResult updateEntry(const dbHandle<DbObject>& handle); 00100 DbResult find(const dbHandle<DbContainer>& cntH, dbHandle<DbObject>& objH, const dbHandle<DbLink>& link) const; 00102 DbResult select(ISelectStatement* sel) const; 00104 DbResult unselect() const; 00106 DbResult remove(dbHandle<DbObject>& element); 00108 IDbCursor* makeCursor() const; 00109 }; 00110 00111 // Inline code 00112 inline dbHandle<DbDataBase>& DbContainer::database() { 00113 return m_database; 00114 } 00115 00116 inline const dbHandle<DbDataBase>& DbContainer::database() const { 00117 return m_database; 00118 } 00119 00120 inline IDbContainer* DbContainer::info() { 00121 return m_info; 00122 } 00123 00124 inline IMessageSvc* DbContainer::msgSvc() { 00125 return m_msgSvc; 00126 } 00127 00128 inline IOODataBase* DbContainer::db() { 00129 return m_dbOOMs; 00130 } 00131 00132 inline const DbTypeInfo* DbContainer::typeInfo() const { 00133 return &m_typeInfo; 00134 } 00135 00136 #endif // DBCNV_DBCONTAINEROBJ_H
1.2.3 written by Dimitri van Heesch,
© 1997-2000