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

SmartDataPtr.h

Go to the documentation of this file.
00001 //      ====================================================================
00002 //      SmartDataPtr.h
00003 //      --------------------------------------------------------------------
00004 //
00005 //      Package    : Gaudi/DataSvc ( The LHCb Offline System)
00006 //
00007 //  Description: Implementation of a smart pointer class to access
00008 //               easily (and efficiently) data stores.
00009 //
00010 //      Author     : M.Frank
00011 //      ====================================================================
00012 #ifndef DATASVC_SMARTDATAPTR_H
00013 #define DATASVC_SMARTDATAPTR_H 1
00014 
00015 // Framework include files
00016 #include "GaudiKernel/SmartDataStorePtr.h"
00017 
00058 template<class TYPE> class SmartDataPtr : public SmartDataStorePtr<TYPE, SmartDataObjectPtr::ObjectLoader>    {
00059 public:
00068   SmartDataPtr(IDataProviderSvc* pService, const std::string& fullPath)
00069     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,0,fullPath)
00070   {
00071   }
00080   SmartDataPtr(IDataProviderSvc* pService, IDataDirectory* pDirectory)
00081     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,pDirectory,"")
00082   {
00083   }
00095   SmartDataPtr(IDataProviderSvc* pService, DataObject* pObject, const std::string& path)
00096     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,0,path)
00097   {
00098     if ( 0 != pObject )   {
00099       m_pDirectory = pObject->directory();
00100     }
00101   }
00111   SmartDataPtr(SmartDataObjectPtr& refObject, IDataDirectory* pDirectory)
00112     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), pDirectory, "")
00113   {
00114   }
00124   SmartDataPtr(SmartDataObjectPtr& refObject, const std::string& path)
00125     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), refObject.directory(), path)
00126   {
00127   }
00131   SmartDataPtr(const SmartDataObjectPtr& copy)
00132     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( copy )
00133   {
00134   }
00137   virtual ~SmartDataPtr()   {
00138   }
00140   template <class OTHER>
00141   SmartDataPtr& operator=( OTHER* pObj )    {
00142     m_pObject = dynamic_cast<TYPE*>(pObj);
00143     return *this;
00144   }
00145 };
00146 
00147 #endif // DATASVC_SMARTDATAPTR_H

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