00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef DATASVC_SMARTDATAPTR_H
00013 #define DATASVC_SMARTDATAPTR_H 1
00014
00015
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