| # Gaudi Framework, version v20r4
Generated: 8 Jan 2009

# SmartDataLocator< TYPE > Class Template Reference

`#include <SmartDataLocator.h>`

Inheritance diagram for SmartDataLocator< TYPE >:

[legend]
Collaboration diagram for SmartDataLocator< TYPE >:

[legend]

List of all members.

## 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 45 of file SmartDataLocator.h.

## 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.
| 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.
| 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.
| 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.
| 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.
virtual | ~SmartDataLocator ()
| Standard destructor.
template<class OTHER>
SmartDataPtr< OTHER > & | operator= (OTHER *pObj)
| Automatic conversion to data type.
template<class OTHER>
SmartDataPtr< OTHER > & | operator= (const OTHER *pObj)
| Automatic conversion to data type.

## 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:

  | 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 55 of file SmartDataLocator.h.

    00056     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,0,fullPath)
    00057   {
    00058   }

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:

  | 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 68 of file SmartDataLocator.h.

    00069     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,pDirectory,"")
    00070   {
    00071   }

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:

  | 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 84 of file SmartDataLocator.h.

    00085     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( pService,0,path)
    00086   {
    00087     if ( 0 != pObject )   {
    00088       this->m_pDirectory = pObject->registry();
    00089     }
    00090   }

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:

  | refObject | Smart Pointer to the parent object.
  | pDirectory | Pointer to the data directory entry.

Definition at line 101 of file SmartDataLocator.h.

    00102     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), pDirectory, "")
    00103   {
    00104   }

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:

  | refObject | Smart Pointer to the parent object.
  | path | Path to the data object relative to the parent object.

Definition at line 115 of file SmartDataLocator.h.

    00116     : SmartDataStorePtr<TYPE,SmartDataObjectPtr::ObjectLoader>( refObject.service(), refObject.directory(), path)
    00117   {
    00118   }

template<class TYPE>

virtual SmartDataLocator< TYPE >::~SmartDataLocator | ( |  | ) | `[inline, virtual]`

Standard destructor.

Definition at line 122 of file SmartDataLocator.h.

    00122                                 {
    00123   }

## 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 127 of file SmartDataLocator.h.

    00127                                                    {
    00128     this->m_pObject = dynamic_cast<TYPE*>(pObj);
    00129     return *this;
    00130   }

template<class TYPE>
template<class OTHER>

SmartDataPtr<OTHER>& SmartDataLocator< TYPE >::operator= | ( | const OTHER * | pObj | ) | `[inline]`

Automatic conversion to data type.

Definition at line 134 of file SmartDataLocator.h.

    00134                                                          {
    00135     this->m_pObject = dynamic_cast<TYPE*>(const_cast<OTHER*>(pObj));
    00136     return *this;
    00137   }

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v20r4/GaudiKernel/GaudiKernel/SmartDataLocator.h