| The Gaudi Framework v28r2-patches (bc4ad17a)

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

- File List
- File Members

SmartDataPtr.h
Go to the documentation of this file.
1 // ====================================================================
2 // SmartDataPtr.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_SMARTDATAPTR_H
13 #define GAUDIKERNEL_SMARTDATAPTR_H 1
14
15 // Framework include files
16 #include "GaudiKernel/SmartDataStorePtr.h"
17 #include "GaudiKernel/DataObject.h"
18
46 template<class TYPE> class SmartDataPtr : public SmartDataStorePtr<TYPE, SmartDataObjectPtr::ObjectLoader> {
47 public:
48
50 #if !defined(__ICC) && !defined(__COVERITY__)
51 // icc and Coverity do not like this line, they fail with
52 // SmartDataPtr.h(147): internal error: assertion failed: add_symbol_to_overload_list:
53 // symbol not in symbol header list (shared/edgcpfe/symbol_tbl.c, line 4804)
54 using SmartDataStorePtr<TYPE, SmartDataObjectPtr::ObjectLoader>::operator=;
55 #endif
56
64 SmartDataPtr(IDataProviderSvc* pService, const std::string& fullPath)
65 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,nullptr,fullPath)
66 {
67 }
68
77 SmartDataPtr(IDataProviderSvc* pService, IRegistry* pDirectory)
78 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,pDirectory,"")
79 {
80 }
81
93 SmartDataPtr(IDataProviderSvc* pService, DataObject* pObject, const std::string& path)
94 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,nullptr,path)
95 {
96 if ( pObject ) this->m_pRegistry = pObject->registry();
97 }
98
108 SmartDataPtr(SmartDataObjectPtr& refObject, IRegistry* pDirectory)
109 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), pDirectory, "")
110 {
111 }
112
122 SmartDataPtr(SmartDataObjectPtr& refObject, const std::string& path)
123 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), refObject.directory(), path)
124 {
125 }
126
130 SmartDataPtr(const SmartDataObjectPtr& copy)
131 : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( copy )
132 {
133 }
134
137 virtual ~SmartDataPtr() = default;
138
140 template <class OTHER>
141 SmartDataPtr& operator=( OTHER* pObj ) {
142 this->m_pObject = dynamic_cast<TYPE*>(pObj);
143 return *this;
144 }
145
147 template <class OTHER>
148 SmartDataPtr& operator=( const OTHER* pObj ) {
149 this->m_pObject = dynamic_cast<TYPE*>(const_cast<OTHER*>(pObj));
150 return *this;
151 }
152 };
153
154 #endif // GAUDIKERNEL_SMARTDATAPTR_H
SmartDataPtr::SmartDataPtr
SmartDataPtr(SmartDataObjectPtr &refObject, const std::string &path)
Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject ins...
Definition: SmartDataPtr.h:122
SmartDataPtr::operator=
SmartDataPtr & operator=(const OTHER *pObj)
Automatic conversion to data type.
Definition: SmartDataPtr.h:148
IDataProviderSvc
Data provider interface definition.
Definition: IDataProviderSvc.h:45
DataObject::registry
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:74
SmartDataObjectPtr::service
IDataProviderSvc * service()
Retrieve data service.
Definition: SmartDataObjectPtr.h:93
std::string
STL class.
SmartDataPtr::~SmartDataPtr
virtual ~SmartDataPtr()=default
Standard destructor.
SmartDataObjectPtr::ObjectLoader
Helper class to configure smart pointer functionality.
Definition: SmartDataObjectPtr.h:36
SmartDataStorePtr.h
SmartDataObjectPtr::path
const std::string & path() const
Path name.
Definition: SmartDataObjectPtr.h:78
SmartDataPtr::SmartDataPtr
SmartDataPtr(const SmartDataObjectPtr &copy)
Copy constructor: Construct an copy of a SmartDataPtr instance.
Definition: SmartDataPtr.h:130
SmartDataPtr::SmartDataPtr
SmartDataPtr(IDataProviderSvc *pService, const std::string &fullPath)
Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject ins...
Definition: SmartDataPtr.h:64
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
SmartDataPtr::SmartDataPtr
SmartDataPtr(IDataProviderSvc *pService, IRegistry *pDirectory)
Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject ins...
Definition: SmartDataPtr.h:77
SmartDataPtr::operator=
SmartDataPtr & operator=(OTHER *pObj)
Automatic conversion to data type.
Definition: SmartDataPtr.h:141
SmartDataObjectPtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataObjectPtr.h:32
SmartDataStorePtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataStorePtr.h:44
SmartDataPtr::SmartDataPtr
SmartDataPtr(SmartDataObjectPtr &refObject, IRegistry *pDirectory)
Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject ins...
Definition: SmartDataPtr.h:108
SmartDataPtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataPtr.h:46
SmartDataObjectPtr::directory
IRegistry * directory()
Access to data directory.
Definition: SmartDataObjectPtr.h:83
SmartDataPtr::SmartDataPtr
SmartDataPtr(IDataProviderSvc *pService, DataObject *pObject, const std::string &path)
Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject ins...
Definition: SmartDataPtr.h:93
SmartDataObjectPtr::m_pRegistry
IRegistry * m_pRegistry
Pointer to the data registry containing the object.
Definition: SmartDataObjectPtr.h:188
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
SmartDataStorePtr< TYPE, SmartDataObjectPtr::ObjectLoader >::m_pObject
TYPE * m_pObject
Pointer to data store object.
Definition: SmartDataStorePtr.h:135
DataObject.h