| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SmartDataLocator.h
Go to the documentation of this file.
1 // ====================================================================
2 // SmartDataLocator.h
3 // --------------------------------------------------------------------
4 //
5 // Package : GaudiKernel ( The LHCb Offline System)
6 //
7 // Description: Implementation of a smart pointer class to access
8 // easily (and efficiently) data stores.
9 //
10 // Author : M.Frank
11 // ====================================================================
12 #ifndef GAUDIKERNEL_SMARTDATALOCATOR_H
13 #define GAUDIKERNEL_SMARTDATALOCATOR_H 1
14
15 // Framework include files
16 #include "GaudiKernel/SmartDataPtr.h"
17
45 template<class TYPE> class SmartDataLocator : public SmartDataStorePtr<TYPE, SmartDataObjectPtr::ObjectLoader> {
46 public:
55 SmartDataLocator(IDataProviderSvc* pService, const std::string& fullPath)
56 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,0,fullPath)
57 {
58 }
59
68 SmartDataLocator(IDataProviderSvc* pService, IRegistry* pDirectory)
69 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,pDirectory,"")
70 {
71 }
72
84 SmartDataLocator(IDataProviderSvc* pService, DataObject* pObject, const std::string& path)
85 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,0,path)
86 {
87 if ( 0 != pObject ) {
88 this->m_pDirectory = pObject->registry();
89 }
90 }
91
101 SmartDataLocator(SmartDataObjectPtr& refObject, IRegistry* pDirectory)
102 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), pDirectory, "")
103 {
104 }
105
115 SmartDataLocator(SmartDataObjectPtr& refObject, const std::string& path)
116 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), refObject.directory(), path)
117 {
118 }
119
122 virtual ~SmartDataLocator() {
123 }
124
126 template <class OTHER>
127 SmartDataPtr<OTHER>& operator=( OTHER* pObj ) {
128 this->m_pObject = dynamic_cast<TYPE*>(pObj);
129 return *this;
130 }
131
133 template <class OTHER>
134 SmartDataPtr<OTHER>& operator=( const OTHER* pObj ) {
135 this->m_pObject = dynamic_cast<TYPE*>(const_cast<OTHER*>(pObj));
136 return *this;
137 }
138 };
139
140 #endif // GAUDIKERNEL_SMARTDATALOCATOR_H