| The Gaudi Framework v29r1 (5cd95fa2)

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

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Attributes | List of all members
SmartDataStorePtr< TYPE, LOADER > Class Template Reference

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

`#include <GaudiKernel/SmartDataStorePtr.h>`

Inheritance diagram for SmartDataStorePtr< TYPE, LOADER >:
[legend]
Collaboration diagram for SmartDataStorePtr< TYPE, LOADER >:
[legend]

## Public Member Functions
| 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...
SmartDataStorePtr & | operator= (DataObject *pObj)
| Automatic conversion to data type. More...
SmartDataStorePtr & | operator= (const DataObject *pObj)
| Automatic conversion to data type. More...
SmartDataStorePtr & | operator= (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::string & | path () const
| Path name. More...
IRegistry * | directory ()
| Access to data directory. More...
void | setService (IDataProviderSvc *svc)
| Assign data service. More...
IDataProviderSvc * | service ()
| Retrieve data service. More...
const StatusCode & | getLastError () const
| Access to potential errors during data accesses. More...
DataObject * | accessData ()
| Static Object retrieval method: must call specific function. More...
DataObject * | retrieveObject ()
| Object retrieve method. More...
DataObject * | findObject ()
| Object find method. More...
DataObject * | updateObject ()
| Object update method. More...

## Protected Attributes
TYPE * | m_pObject
| Pointer to data store object. More...
Protected Attributes inherited from SmartDataObjectPtr
IDataProviderSvc * | m_dataProvider = nullptr
| Pointer to contained object. More...
IRegistry * | m_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...

## Additional Inherited Members
Public Types inherited from SmartDataObjectPtr
using | AccessFunction = DataObject *(*)(SmartDataObjectPtr *ptr)
Static Public Member Functions inherited from SmartDataObjectPtr
static DataObject * | retrieve (SmartDataObjectPtr *ptr)
| Static Object retrieval method. More...
static DataObject * | find (SmartDataObjectPtr *ptr)
| Static Object find method. More...
static DataObject * | update (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...

## Detailed Description

### template<class TYPE, class LOADER>
class SmartDataStorePtr< TYPE, LOADER >

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 SmartDataStorePtr 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: SmartDataObjectPtr

Author
  M.Frank

Version
  1.0

Definition at line 45 of file SmartDataStorePtr.h.

## Constructor & Destructor Documentation

template<class TYPE, class LOADER>

SmartDataStorePtr< TYPE, LOADER >::SmartDataStorePtr | ( | IDataProviderSvc * | pService,
|  | IRegistry * | pRegistry,
|  | const std::string & | path
| ) |  |
| inline

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

FASTEST ACCESS TO THE DATA STORE ***

Parameters

  pService | Pointer to the data service interface which should be used to load the object.
  pDirectory | Pointer to the data directory entry.

Definition at line 56 of file SmartDataStorePtr.h.

57 : SmartDataObjectPtr( LOADER::access(), pService, pRegistry, path ), m_pObject( 0 )
58 {
59 }
SmartDataObjectPtr::SmartDataObjectPtr
SmartDataObjectPtr(AccessFunction access, IDataProviderSvc *pService, IRegistry *pDir, std::string path)
Standard constructor: Construct an SmartDataObjectPtr instance.
Definition: SmartDataObjectPtr.h:57
Objects::access
bool access(const ContainedObject *from, ContainedObject **to)
Definition: KeyedObject.cpp:55
SmartDataStorePtr::m_pObject
TYPE * m_pObject
Pointer to data store object.
Definition: SmartDataStorePtr.h:129
template<class TYPE, class LOADER>

SmartDataStorePtr< TYPE, LOADER >::SmartDataStorePtr | ( | const SmartDataObjectPtr & | copy | ) |
| inline

Copy constructor: Construct an copy of a SmartDataStorePtr instance.

Parameters

  copy | Copy of Smart Pointer to object.

Definition at line 63 of file SmartDataStorePtr.h.

63 : SmartDataObjectPtr( copy ), m_pObject( 0 ) {}
SmartDataObjectPtr::SmartDataObjectPtr
SmartDataObjectPtr(AccessFunction access, IDataProviderSvc *pService, IRegistry *pDir, std::string path)
Standard constructor: Construct an SmartDataObjectPtr instance.
Definition: SmartDataObjectPtr.h:57
SmartDataStorePtr::m_pObject
TYPE * m_pObject
Pointer to data store object.
Definition: SmartDataStorePtr.h:129
template<class TYPE, class LOADER>

virtual SmartDataStorePtr< TYPE, LOADER >::~SmartDataStorePtr | ( |  | ) |
| inline virtual

Standard Destructor.

Definition at line 66 of file SmartDataStorePtr.h.

66 {}

## Member Function Documentation

template<class TYPE, class LOADER>

TYPE* SmartDataStorePtr< TYPE, LOADER >::accessTypeSafeData | ( |  | ) |
| inline

Internal type safe accessor to data.

Definition at line 119 of file SmartDataStorePtr.h.

120 {
121 if ( 0 == m_pObject ) {
122 m_pObject = dynamic_cast<TYPE*>( accessData() );
123 }
124 return m_pObject;
125 }
SmartDataObjectPtr::accessData
DataObject * accessData()
Static Object retrieval method: must call specific function.
Definition: SmartDataObjectPtr.h:91
SmartDataStorePtr::m_pObject
TYPE * m_pObject
Pointer to data store object.
Definition: SmartDataStorePtr.h:129
template<class TYPE, class LOADER>

SmartDataStorePtr< TYPE, LOADER >::operator int | ( |  | ) |
| inline

operator int for statements like: if ( SmartDataStorePtr<XXX>(...) ) {}

Definition at line 113 of file SmartDataStorePtr.h.

113 { return 0 != accessTypeSafeData(); }
SmartDataStorePtr::accessTypeSafeData
TYPE * accessTypeSafeData()
Internal type safe accessor to data.
Definition: SmartDataStorePtr.h:119
template<class TYPE, class LOADER>

SmartDataStorePtr< TYPE, LOADER >::operator TYPE & | ( |  | ) |
| inline

Automatic conversion to data type.

Definition at line 106 of file SmartDataStorePtr.h.

107 {
108 TYPE* result = accessTypeSafeData();
109 return *result;
110 }
SmartDataStorePtr::accessTypeSafeData
TYPE * accessTypeSafeData()
Internal type safe accessor to data.
Definition: SmartDataStorePtr.h:119
template<class TYPE, class LOADER>

SmartDataStorePtr< TYPE, LOADER >::operator TYPE * | ( |  | ) |
| inline

Automatic conversion to data type.

Definition at line 103 of file SmartDataStorePtr.h.

103 { return accessTypeSafeData(); }
SmartDataStorePtr::accessTypeSafeData
TYPE * accessTypeSafeData()
Internal type safe accessor to data.
Definition: SmartDataStorePtr.h:119
template<class TYPE, class LOADER>

bool SmartDataStorePtr< TYPE, LOADER >::operator! | ( |  | ) |
| inline

operator ! for statements like: if ( !SmartDataStorePtr<XXX>(...) ) {}

Definition at line 116 of file SmartDataStorePtr.h.

116 { return 0 == accessTypeSafeData(); }
SmartDataStorePtr::accessTypeSafeData
TYPE * accessTypeSafeData()
Internal type safe accessor to data.
Definition: SmartDataStorePtr.h:119
template<class TYPE, class LOADER>

TYPE& SmartDataStorePtr< TYPE, LOADER >::operator* | ( |  | ) |
| inline

Dereference operator: the heart of the smart pointer.

Definition at line 96 of file SmartDataStorePtr.h.

97 {
98 TYPE* result = accessTypeSafeData();
99 return *result;
100 }
SmartDataStorePtr::accessTypeSafeData
TYPE * accessTypeSafeData()
Internal type safe accessor to data.
Definition: SmartDataStorePtr.h:119
template<class TYPE, class LOADER>

TYPE* SmartDataStorePtr< TYPE, LOADER >::operator-> | ( |  | ) |
| inline

Dereference operator: the heart of the smart pointer.

Definition at line 93 of file SmartDataStorePtr.h.

93 { return accessTypeSafeData(); }
SmartDataStorePtr::accessTypeSafeData
TYPE * accessTypeSafeData()
Internal type safe accessor to data.
Definition: SmartDataStorePtr.h:119
template<class TYPE, class LOADER>

SmartDataStorePtr& SmartDataStorePtr< TYPE, LOADER >::operator= | ( | DataObject * | pObj | ) |
| inline

Automatic conversion to data type.

Definition at line 69 of file SmartDataStorePtr.h.

70 {
71 m_pObject = dynamic_cast<TYPE*>( pObj );
72 return *this;
73 }
SmartDataStorePtr::m_pObject
TYPE * m_pObject
Pointer to data store object.
Definition: SmartDataStorePtr.h:129
template<class TYPE, class LOADER>

SmartDataStorePtr& SmartDataStorePtr< TYPE, LOADER >::operator= | ( | const DataObject * | pObj | ) |
| inline

Automatic conversion to data type.

Definition at line 76 of file SmartDataStorePtr.h.

77 {
78 m_pObject = dynamic_cast<TYPE*>( const_cast<DataObject*>( pObj ) );
79 return *this;
80 }
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:29
SmartDataStorePtr::m_pObject
TYPE * m_pObject
Pointer to data store object.
Definition: SmartDataStorePtr.h:129
template<class TYPE, class LOADER>

SmartDataStorePtr& SmartDataStorePtr< TYPE, LOADER >::operator= | ( | const SmartDataObjectPtr & | copy | ) |
| inline override virtual

unhides assignment operator of base class

Reimplemented from SmartDataObjectPtr.

Definition at line 83 of file SmartDataStorePtr.h.

84 {
85 this->m_pObject = dynamic_cast<TYPE*>( const_cast<SmartDataObjectPtr*>( &copy ) );
86 return *this;
87 }
SmartDataObjectPtr
A small class used to access easily (and efficiently) data items residing in data stores...
Definition: SmartDataObjectPtr.h:32
SmartDataStorePtr::m_pObject
TYPE * m_pObject
Pointer to data store object.
Definition: SmartDataStorePtr.h:129
template<class TYPE, class LOADER>

TYPE* SmartDataStorePtr< TYPE, LOADER >::ptr | ( |  | ) |
| inline

Automatic conversion to data type.

Definition at line 90 of file SmartDataStorePtr.h.

90 { return accessTypeSafeData(); }
SmartDataStorePtr::accessTypeSafeData
TYPE * accessTypeSafeData()
Internal type safe accessor to data.
Definition: SmartDataStorePtr.h:119

## Member Data Documentation

template<class TYPE, class LOADER>

TYPE* SmartDataStorePtr< TYPE, LOADER >::m_pObject
| mutable protected

Pointer to data store object.

Definition at line 129 of file SmartDataStorePtr.h.

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

- GaudiKernel/GaudiKernel/SmartDataStorePtr.h