The Gaudi Framework  v29r0 (ff2e7097)
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 {
34 public:
38  {
39  public:
40  static AccessFunction access();
41  };
42 
45  {
46  public:
47  static AccessFunction access();
48  };
49 
50 public:
58  : m_dataProvider( pService ), m_pRegistry( pDir ), m_path( std::move( path ) ), m_accessFunc( access )
59  {
60  }
64  SmartDataObjectPtr( const SmartDataObjectPtr& ) = default;
65 
67  virtual ~SmartDataObjectPtr() = default;
68 
71 
73  operator IRegistry*() { return m_pRegistry; }
74 
76  const std::string& path() const { return m_path; }
77 
79  IRegistry* directory() { return m_pRegistry; }
80 
82  void setService( IDataProviderSvc* svc ) { m_dataProvider = svc; }
83 
85  IDataProviderSvc* service() { return m_dataProvider; }
86 
88  const StatusCode& getLastError() const { return m_status; }
89 
91  DataObject* accessData() { return m_accessFunc( this ); }
92 
94  static DataObject* retrieve( SmartDataObjectPtr* ptr ) { return ptr->retrieveObject(); }
95 
97  static DataObject* find( SmartDataObjectPtr* ptr ) { return ptr->findObject(); }
98 
100  static DataObject* update( SmartDataObjectPtr* ptr ) { return ptr->updateObject(); }
101 
107  DataObject* retrieveObject();
108 
114  DataObject* findObject();
115 
122  DataObject* updateObject();
123 
124 protected:
130  StatusCode find( IRegistry* pDirectory, const std::string& path, DataObject*& refpObject );
131 
137  StatusCode find( const std::string& fullPath, DataObject*& refpObject );
138 
144  StatusCode retrieve( IRegistry* pDirectory, const std::string& path, DataObject*& refpObject );
150  StatusCode retrieve( const std::string& fullPath, DataObject*& refpObject );
151 
156  StatusCode update( IRegistry* pDirectory );
161  StatusCode update( const std::string& fullPath );
162 
163 protected:
165  mutable IDataProviderSvc* m_dataProvider = nullptr;
167  mutable IRegistry* m_pRegistry = nullptr;
169  mutable StatusCode m_status = {StatusCode::SUCCESS, true};
174 };
175 #endif // GAUDIKERNEL_SMARTDATAOBJECTPTR_H
static DataObject * find(SmartDataObjectPtr *ptr)
Static Object find method.
DataObject * retrieveObject()
Object retrieve method.
STL namespace.
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:28
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:55
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.
DataObject *(*)(SmartDataObjectPtr *ptr) AccessFunction
#define GAUDI_API
Definition: Kernel.h:110
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:29
DataObject * updateObject()
Object update method.