Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v28r2p1 (f1a77ff4)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
SmartDataObjectPtr.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_SMARTDATAOBJECTPTR_H
2 #define GAUDIKERNEL_SMARTDATAOBJECTPTR_H 1
3 
4 // STL include files
5 #include <string>
6 
7 // Framework include files
8 #include "GaudiKernel/Kernel.h"
10 
11 // Forward declarations
12 class SmartDataObjectPtr;
13 class IDataProviderSvc;
14 class IRegistry;
15 class DataObject;
16 
33 public:
36  class ObjectLoader {
37  public:
38  static AccessFunction access();
39  };
40 
42  class ObjectFinder {
43  public:
44  static AccessFunction access();
45  };
46 
47 public:
55  : m_dataProvider(pService),
56  m_pRegistry(pDir),
57  m_path(std::move(path)),
58  m_accessFunc(access)
59  {
60  }
64  SmartDataObjectPtr(const SmartDataObjectPtr&) = default;
65 
67  virtual ~SmartDataObjectPtr() = default;
68 
71 
73  operator IRegistry*() {
74  return m_pRegistry;
75  }
76 
78  const std::string& path() const {
79  return m_path;
80  }
81 
84  return m_pRegistry;
85  }
86 
89  m_dataProvider = svc;
90  }
91 
94  return m_dataProvider;
95  }
96 
98  const StatusCode& getLastError() const {
99  return m_status;
100  }
101 
104  return m_accessFunc(this);
105  }
106 
109  return ptr->retrieveObject();
110  }
111 
114  return ptr->findObject();
115  }
116 
119  return ptr->updateObject();
120  }
121 
127  DataObject* retrieveObject();
128 
134  DataObject* findObject();
135 
142  DataObject* updateObject();
143 
144 protected:
145 
151  StatusCode find(IRegistry* pDirectory, const std::string& path, DataObject*& refpObject);
152 
158  StatusCode find(const std::string& fullPath, DataObject*& refpObject);
159 
165  StatusCode retrieve(IRegistry* pDirectory, const std::string& path, DataObject*& refpObject);
171  StatusCode retrieve(const std::string& fullPath, DataObject*& refpObject);
172 
177  StatusCode update(IRegistry* pDirectory);
182  StatusCode update(const std::string& fullPath);
183 
184 protected:
186  mutable IDataProviderSvc* m_dataProvider = nullptr;
188  mutable IRegistry* m_pRegistry = nullptr;
190  mutable StatusCode m_status = { StatusCode::SUCCESS, true } ;
195 
196 };
197 #endif // GAUDIKERNEL_SMARTDATAOBJECTPTR_H
static DataObject * find(SmartDataObjectPtr *ptr)
Static Object find method.
DataObject * retrieveObject()
Object retrieve method.
STL namespace.
DataObject *(*)(SmartDataObjectPtr *ptr) AccessFunction
Data provider interface definition.
SmartDataObjectPtr(AccessFunction access, IDataProviderSvc *pService, IRegistry *pDir, std::string path)
Standard constructor: Construct an SmartDataObjectPtr instance.
void setService(IDataProviderSvc *svc)
Assign data service.
IDataProviderSvc * service()
Retrieve data service.
static DataObject * update(SmartDataObjectPtr *ptr)
Static Object update method.
PropertyMgr & operator=(const PropertyMgr &)=delete
static DataObject * retrieve(SmartDataObjectPtr *ptr)
Static Object retrieval method.
STL class.
Helper class to configure smart pointer functionality.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
std::string m_path
Path to object.
DataObject * accessData()
Static Object retrieval method: must call specific function.
const std::string & path() const
Path name.
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
bool access(const ContainedObject *from, ContainedObject **to)
Definition: KeyedObject.cpp:53
AccessFunction m_accessFunc
Data access function.
A small class used to access easily (and efficiently) data items residing in data stores...
Helper class to configure smart pointer functionality.
DataObject * findObject()
Object find method.
const StatusCode & getLastError() const
Access to potential errors during data accesses.
IRegistry * directory()
Access to data directory.
#define GAUDI_API
Definition: Kernel.h:107
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
DataObject * updateObject()
Object update method.