All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SmartDataObjectPtr.h
Go to the documentation of this file.
1 // $Header: /tmp/svngaudi/tmp.jEpFh25751/Gaudi/GaudiKernel/GaudiKernel/SmartDataObjectPtr.h,v 1.7 2007/11/21 09:29:31 marcocle Exp $
2 #ifndef GAUDIKERNEL_SMARTDATAOBJECTPTR_H
3 #define GAUDIKERNEL_SMARTDATAOBJECTPTR_H 1
4 
5 // STL include files
6 #include <string>
7 
8 // Framework include files
9 #include "GaudiKernel/Kernel.h"
10 #include "GaudiKernel/StatusCode.h"
11 
12 // Forward declarations
13 class SmartDataObjectPtr;
14 class IDataProviderSvc;
15 class IRegistry;
16 class DataObject;
17 
34 public:
35  typedef DataObject* (* AccessFunction) (SmartDataObjectPtr* ptr);
37  class ObjectLoader {
38  public:
39  static AccessFunction access();
40  };
41 
43  class ObjectFinder {
44  public:
45  static AccessFunction access();
46  };
47 
48 public:
55  SmartDataObjectPtr(AccessFunction access, IDataProviderSvc* pService, IRegistry* pDir, const std::string& path)
56  : m_dataProvider(pService),
57  m_pRegistry(pDir),
58  m_status(StatusCode::SUCCESS,true),
59  m_path(path),
60  m_accessFunc(access)
61  {
62  }
67  : m_dataProvider(copy.m_dataProvider),
68  m_pRegistry(copy.m_pRegistry),
69  m_status(copy.m_status),
70  m_path(copy.m_path),
71  m_accessFunc(copy.m_accessFunc)
72  {
73  }
75  virtual ~SmartDataObjectPtr() {
76  }
78  virtual SmartDataObjectPtr& operator=(const SmartDataObjectPtr& copy);
79 
81  operator IRegistry*() {
82  return m_pRegistry;
83  }
84 
86  const std::string& path() const {
87  return m_path;
88  }
89 
92  return m_pRegistry;
93  }
94 
97  m_dataProvider = svc;
98  }
99 
102  return m_dataProvider;
103  }
104 
107  return m_status;
108  }
109 
112  return m_accessFunc(this);
113  }
114 
117  return ptr->retrieveObject();
118  }
119 
122  return ptr->findObject();
123  }
124 
127  return ptr->updateObject();
128  }
129 
135  DataObject* retrieveObject();
136 
142  DataObject* findObject();
143 
150  DataObject* updateObject();
151 
152 protected:
153 
159  StatusCode find(IRegistry* pDirectory, const std::string& path, DataObject*& refpObject);
160 
166  StatusCode find(const std::string& fullPath, DataObject*& refpObject);
167 
173  StatusCode retrieve(IRegistry* pDirectory, const std::string& path, DataObject*& refpObject);
179  StatusCode retrieve(const std::string& fullPath, DataObject*& refpObject);
180 
185  StatusCode update(IRegistry* pDirectory);
190  StatusCode update(const std::string& fullPath);
191 
192 protected:
200  std::string m_path;
202  AccessFunction m_accessFunc;
203 
204 };
205 #endif // GAUDIKERNEL_SMARTDATAOBJECTPTR_H
static DataObject * find(SmartDataObjectPtr *ptr)
Static Object find method.
DataObject * retrieveObject()
Object retrieve method.
Data provider interface definition.
void setService(IDataProviderSvc *svc)
Assign data service.
IDataProviderSvc * service()
Retrieve data service.
static DataObject * update(SmartDataObjectPtr *ptr)
Static Object update method.
static DataObject * retrieve(SmartDataObjectPtr *ptr)
Static Object retrieval method.
Helper class to configure smart pointer functionality.
StatusCode getLastError() const
Access to potential errors during data accesses.
SmartDataObjectPtr(AccessFunction access, IDataProviderSvc *pService, IRegistry *pDir, const std::string &path)
Standard constructor: Construct an SmartDataObjectPtr instance.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
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:66
GAUDI_API std::string path(const AIDA::IBaseHistogram *aida)
get the path in THS for AIDA histogram
SmartDataObjectPtr(const SmartDataObjectPtr &copy)
Copy constructor: Construct an copy of a SmartDataStorePtr instance.
virtual ~SmartDataObjectPtr()
Standard Destructor.
StatusCode m_status
Keep track of the last error.
AccessFunction m_accessFunc
Data access function.
A small class used to access easily (and efficiently) data items residing in data stores...
def update
Definition: install.py:213
Helper class to configure smart pointer functionality.
DataObject * findObject()
Object find method.
IDataProviderSvc * m_dataProvider
Pointer to contained object.
IRegistry * directory()
Access to data directory.
IRegistry * m_pRegistry
Pointer to the data registry containing the object.
#define GAUDI_API
Definition: Kernel.h:108
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:31
DataObject * updateObject()
Object update method.