Gaudi Framework, version v22r0

Home   Generated: 9 Feb 2011

SmartDataPtr< TYPE > Class Template Reference

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

#include <SmartDataPtr.h>

Inheritance diagram for SmartDataPtr< TYPE >:
Inheritance graph
[legend]
Collaboration diagram for SmartDataPtr< TYPE >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 SmartDataPtr (IDataProviderSvc *pService, const std::string &fullPath)
 Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent.
 SmartDataPtr (IDataProviderSvc *pService, IRegistry *pDirectory)
 Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject instance which is identified by its directory entry.
 SmartDataPtr (IDataProviderSvc *pService, DataObject *pObject, const std::string &path)
 Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent.
 SmartDataPtr (SmartDataObjectPtr &refObject, IRegistry *pDirectory)
 Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent.
 SmartDataPtr (SmartDataObjectPtr &refObject, const std::string &path)
 Standard constructor: Construct an SmartDataPtr instance which is able to connect to a DataObject instance which is identified by its parent object and the path relative to the parent.
 SmartDataPtr (const SmartDataObjectPtr &copy)
 Copy constructor: Construct an copy of a SmartDataPtr instance.
virtual ~SmartDataPtr ()
 Standard destructor.
template<class OTHER >
SmartDataPtroperator= (OTHER *pObj)
 Automatic conversion to data type.
template<class OTHER >
SmartDataPtroperator= (const OTHER *pObj)
 Automatic conversion to data type.

Detailed Description

template<class TYPE>
class SmartDataPtr< 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 SmartDataPtr 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 SmartDataPtr.h.


Constructor & Destructor Documentation

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

Standard constructor: Construct an SmartDataPtr 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:
pService Pointer to the data service interface which should be used to load the object.
fullPath Full path leading to the data object.

Definition at line 64 of file SmartDataPtr.h.

00065     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,0,fullPath)
00066   {
00067   }

template<class TYPE>
SmartDataPtr< TYPE >::SmartDataPtr ( IDataProviderSvc pService,
IRegistry pDirectory 
) [inline]

Standard constructor: Construct an SmartDataPtr 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 77 of file SmartDataPtr.h.

00078     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,pDirectory,"")
00079   {
00080   }

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

Standard constructor: Construct an SmartDataPtr 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:
pService Pointer to the data service interface which should be used to load the object.
pObject Pointer to the parent object.
path Path to the data object relative to the parent object.

Definition at line 93 of file SmartDataPtr.h.

00094     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,0,path)
00095   {
00096     if ( 0 != pObject )   {
00097       this->m_pRegistry = pObject->registry();
00098     }
00099   }

template<class TYPE>
SmartDataPtr< TYPE >::SmartDataPtr ( SmartDataObjectPtr refObject,
IRegistry pDirectory 
) [inline]

Standard constructor: Construct an SmartDataPtr 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:
refObject Smart Pointer to the parent object.
pDirectory Pointer to the data directory entry.

Definition at line 110 of file SmartDataPtr.h.

00111     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), pDirectory, "")
00112   {
00113   }

template<class TYPE>
SmartDataPtr< TYPE >::SmartDataPtr ( SmartDataObjectPtr refObject,
const std::string path 
) [inline]

Standard constructor: Construct an SmartDataPtr 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:
refObject Smart Pointer to the parent object.
path Path to the data object relative to the parent object.

Definition at line 124 of file SmartDataPtr.h.

00125     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), refObject.directory(), path)
00126   {
00127   }

template<class TYPE>
SmartDataPtr< TYPE >::SmartDataPtr ( const SmartDataObjectPtr copy  )  [inline]

Copy constructor: Construct an copy of a SmartDataPtr instance.

Parameters:
copy Copy Smart Pointer to object.

Definition at line 132 of file SmartDataPtr.h.

template<class TYPE>
virtual SmartDataPtr< TYPE >::~SmartDataPtr (  )  [inline, virtual]

Standard destructor.

Definition at line 139 of file SmartDataPtr.h.

00139                             {
00140   }


Member Function Documentation

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

Automatic conversion to data type.

Definition at line 151 of file SmartDataPtr.h.

00151                                                   {
00152     this->m_pObject = dynamic_cast<TYPE*>(const_cast<OTHER*>(pObj));
00153     return *this;
00154   }

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

Automatic conversion to data type.

Definition at line 144 of file SmartDataPtr.h.

00144                                             {
00145     this->m_pObject = dynamic_cast<TYPE*>(pObj);
00146     return *this;
00147   }


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Wed Feb 9 16:31:51 2011 for Gaudi Framework, version v22r0 by Doxygen version 1.6.2 written by Dimitri van Heesch, © 1997-2004