The Gaudi Framework  v29r0 (ff2e7097)
SmartDataLocator< TYPE > Class Template Reference

A small class used to access easily (and efficiently) data items residing in data stores. More...

#include <GaudiKernel/SmartDataLocator.h>

Inheritance diagram for SmartDataLocator< TYPE >:
Collaboration diagram for SmartDataLocator< TYPE >:

Public Member Functions

 SmartDataLocator (IDataProviderSvc *pService, const std::string &fullPath)
 Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent. More...
 
 SmartDataLocator (IDataProviderSvc *pService, IRegistry *pDirectory)
 Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its directory entry. More...
 
 SmartDataLocator (IDataProviderSvc *pService, DataObject *pObject, const std::string &path)
 Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent. More...
 
 SmartDataLocator (SmartDataObjectPtr &refObject, IRegistry *pDirectory)
 Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent. More...
 
 SmartDataLocator (SmartDataObjectPtr &refObject, const std::string &path)
 Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent. More...
 
virtual ~SmartDataLocator ()
 Standard destructor. More...
 
template<class OTHER >
SmartDataPtr< OTHER > & operator= (OTHER *pObj)
 Automatic conversion to data type. More...
 
template<class OTHER >
SmartDataPtr< OTHER > & operator= (const OTHER *pObj)
 Automatic conversion to data type. More...
 
- Public Member Functions inherited from SmartDataStorePtr< TYPE, SmartDataObjectPtr::ObjectLoader >
 SmartDataStorePtr (IDataProviderSvc *pService, IRegistry *pRegistry, const std::string &path)
 Standard constructor: Construct an SmartDataStorePtr instance which is able to connect to a DataObject instance which is identified by its directory entry. More...
 
 SmartDataStorePtr (const SmartDataObjectPtr &copy)
 Copy constructor: Construct an copy of a SmartDataStorePtr instance. More...
 
virtual ~SmartDataStorePtr ()
 Standard Destructor. More...
 
SmartDataStorePtroperator= (DataObject *pObj)
 Automatic conversion to data type. More...
 
SmartDataStorePtroperator= (const DataObject *pObj)
 Automatic conversion to data type. More...
 
SmartDataStorePtroperator= (const SmartDataObjectPtr &copy) override
 unhides assignment operator of base class More...
 
TYPE * ptr ()
 Automatic conversion to data type. More...
 
TYPE * operator-> ()
 Dereference operator: the heart of the smart pointer. More...
 
TYPE & operator* ()
 Dereference operator: the heart of the smart pointer. More...
 
 operator TYPE * ()
 Automatic conversion to data type. More...
 
 operator TYPE & ()
 Automatic conversion to data type. More...
 
 operator int ()
 operator int for statements like: if ( SmartDataStorePtr<XXX>(...) ) {} More...
 
bool operator! ()
 operator ! for statements like: if ( !SmartDataStorePtr<XXX>(...) ) {} More...
 
TYPE * accessTypeSafeData ()
 Internal type safe accessor to data. More...
 
- Public Member Functions inherited from SmartDataObjectPtr
 SmartDataObjectPtr (AccessFunction access, IDataProviderSvc *pService, IRegistry *pDir, std::string path)
 Standard constructor: Construct an SmartDataObjectPtr instance. More...
 
 SmartDataObjectPtr (const SmartDataObjectPtr &)=default
 Copy constructor: Construct an copy of a SmartDataStorePtr instance. More...
 
virtual ~SmartDataObjectPtr ()=default
 Standard Destructor. More...
 
 operator IRegistry * ()
 Automatic conversion to data directory. More...
 
const std::stringpath () const
 Path name. More...
 
IRegistrydirectory ()
 Access to data directory. More...
 
void setService (IDataProviderSvc *svc)
 Assign data service. More...
 
IDataProviderSvcservice ()
 Retrieve data service. More...
 
const StatusCodegetLastError () const
 Access to potential errors during data accesses. More...
 
DataObjectaccessData ()
 Static Object retrieval method: must call specific function. More...
 
DataObjectretrieveObject ()
 Object retrieve method. More...
 
DataObjectfindObject ()
 Object find method. More...
 
DataObjectupdateObject ()
 Object update method. More...
 

Additional Inherited Members

- Public Types inherited from SmartDataObjectPtr
using AccessFunction = DataObject *(*)(SmartDataObjectPtr *ptr)
 
- Static Public Member Functions inherited from SmartDataObjectPtr
static DataObjectretrieve (SmartDataObjectPtr *ptr)
 Static Object retrieval method. More...
 
static DataObjectfind (SmartDataObjectPtr *ptr)
 Static Object find method. More...
 
static DataObjectupdate (SmartDataObjectPtr *ptr)
 Static Object update method. More...
 
- Protected Member Functions inherited from SmartDataObjectPtr
StatusCode find (IRegistry *pDirectory, const std::string &path, DataObject *&refpObject)
 Find the specified object from the data store. More...
 
StatusCode find (const std::string &fullPath, DataObject *&refpObject)
 Find the specified object from the data store. More...
 
StatusCode retrieve (IRegistry *pDirectory, const std::string &path, DataObject *&refpObject)
 Retrieve the specified object from the data store. More...
 
StatusCode retrieve (const std::string &fullPath, DataObject *&refpObject)
 Retrieve the specified object from the data store. More...
 
StatusCode update (IRegistry *pDirectory)
 Update the specified object from the data store. More...
 
StatusCode update (const std::string &fullPath)
 Update the specified object from the data store. More...
 
- Protected Attributes inherited from SmartDataStorePtr< TYPE, SmartDataObjectPtr::ObjectLoader >
TYPE * m_pObject
 Pointer to data store object. More...
 
- Protected Attributes inherited from SmartDataObjectPtr
IDataProviderSvcm_dataProvider = nullptr
 Pointer to contained object. More...
 
IRegistrym_pRegistry = nullptr
 Pointer to the data registry containing the object. More...
 
StatusCode m_status = {StatusCode::SUCCESS, true}
 Keep track of the last error. More...
 
std::string m_path
 Path to object. More...
 
AccessFunction m_accessFunc
 Data access function. More...
 

Detailed Description

template<class TYPE>
class SmartDataLocator< TYPE >

A small class used to access easily (and efficiently) data items residing in data stores.

The class constructors take several arguments neccessary to be passed tyo the data services in order to automatically load objects in case they are not yet loaded. This is achieved through a smart pointer mechanism i.e. by overloading the operator->() at dereferencing time the the object will be requested from the store.

The SmartDataLocator is meant to be "short living". It only makes sense to keep an object instance within e.g. the scope of one method. "long living" instances do not make sense and in the contrary would be harmful, because the information passed during construction to would be invalid and returned object pointers would actually point to hyperspace.

The intrinsic functionality, wether the object will be retrieved or loaded from the data store is defined by the LOADER::.

Base Class: SmartDataStorePtr

Author
M.Frank
Version
1.0

Definition at line 46 of file SmartDataLocator.h.

Constructor & Destructor Documentation

template<class TYPE >
SmartDataLocator< TYPE >::SmartDataLocator ( IDataProviderSvc pService,
const std::string fullPath 
)
inline

Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent.

Parameters
pServicePointer to the data service interface which should be used to load the object.
fullPathFull path leading to the data object.

Definition at line 57 of file SmartDataLocator.h.

template<class TYPE >
SmartDataLocator< TYPE >::SmartDataLocator ( IDataProviderSvc pService,
IRegistry pDirectory 
)
inline

Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its directory entry.

FASTEST ACCESS TO THE DATA STORE ***

Parameters
pServicePointer to the data service interface which should be used to load the object.
pDirectoryPointer to the data directory entry.

Definition at line 70 of file SmartDataLocator.h.

template<class TYPE >
SmartDataLocator< TYPE >::SmartDataLocator ( IDataProviderSvc pService,
DataObject pObject,
const std::string path 
)
inline

Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent.

The path is meant to address only ONE level, multiple path layers are invalid.

Parameters
pServicePointer to the data service interface which should be used to load the object.
pObjectPointer to the parent object.
pathPath to the data object relative to the parent object.

Definition at line 86 of file SmartDataLocator.h.

88  {
89  if ( 0 != pObject ) {
90  this->m_pDirectory = pObject->registry();
91  }
92  }
IRegistry * registry() const
Get pointer to Registry.
Definition: DataObject.h:72
const std::string & path() const
Path name.
template<class TYPE >
SmartDataLocator< TYPE >::SmartDataLocator ( SmartDataObjectPtr refObject,
IRegistry pDirectory 
)
inline

Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent.

The path is meant to address only ONE level, multiple path layers are invalid.

Parameters
refObjectSmart Pointer to the parent object.
pDirectoryPointer to the data directory entry.

Definition at line 103 of file SmartDataLocator.h.

105  {
106  }
IDataProviderSvc * service()
Retrieve data service.
template<class TYPE >
SmartDataLocator< TYPE >::SmartDataLocator ( SmartDataObjectPtr refObject,
const std::string path 
)
inline

Standard constructor: Construct an SmartDataLocator instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent.

The path is meant to address only ONE level, multiple path layers are invalid.

Parameters
refObjectSmart Pointer to the parent object.
pathPath to the data object relative to the parent object.

Definition at line 117 of file SmartDataLocator.h.

119  {
120  }
IDataProviderSvc * service()
Retrieve data service.
const std::string & path() const
Path name.
IRegistry * directory()
Access to data directory.
template<class TYPE >
virtual SmartDataLocator< TYPE >::~SmartDataLocator ( )
inlinevirtual

Standard destructor.

Definition at line 124 of file SmartDataLocator.h.

124 {}

Member Function Documentation

template<class TYPE >
template<class OTHER >
SmartDataPtr<OTHER>& SmartDataLocator< TYPE >::operator= ( OTHER *  pObj)
inline

Automatic conversion to data type.

Definition at line 128 of file SmartDataLocator.h.

129  {
130  this->m_pObject = dynamic_cast<TYPE*>( pObj );
131  return *this;
132  }
template<class TYPE >
template<class OTHER >
SmartDataPtr<OTHER>& SmartDataLocator< TYPE >::operator= ( const OTHER *  pObj)
inline

Automatic conversion to data type.

Definition at line 136 of file SmartDataLocator.h.

137  {
138  this->m_pObject = dynamic_cast<TYPE*>( const_cast<OTHER*>( pObj ) );
139  return *this;
140  }

The documentation for this class was generated from the following file: