|
Gaudi Framework, version v23r2 |
| Home | Generated: Thu Jun 28 2012 |
Handle to be used in lieu of naked pointers to gaudis. More...
#include <GaudiKernel/GaudiHandle.h>


Public Member Functions | |
| GaudiHandle (const GaudiHandle &other) | |
| Copy constructor needed for correct ref-counting. | |
| GaudiHandle & | operator= (const GaudiHandle &other) |
| Assignment operator for correct ref-counting. | |
| StatusCode | retrieve () const |
| Retrieve the component. | |
| StatusCode | release () const |
| Release the component. | |
| operator bool () const | |
| For testing if handle has component. | |
| T & | operator* () |
| T * | operator-> () |
| T & | operator* () const |
| T * | operator-> () const |
| std::string | getDefaultType () |
| Helper function to get default type string from the class type. | |
| std::string | getDefaultName () |
Protected Member Functions | |
| GaudiHandle (const std::string &myTypeAndName, const std::string &myComponentType, const std::string &myParentName) | |
| virtual StatusCode | retrieve (T *&) const =0 |
| Retrieve the component. | |
| virtual StatusCode | release (T *comp) const |
| Release the component. | |
Private Member Functions | |
| void | setDefaultTypeAndName () |
| Helper function to set default name and type. | |
| void | setDefaultType () |
| Helper function to set default type from the class type T. | |
| bool | getObject () const |
| Load the pointer to the component. | |
| void | assertObject () const |
| Load the pointer to the component. | |
Private Attributes | |
| T * | m_pObject |
Handle to be used in lieu of naked pointers to gaudis.
This allows better control through the framework of gaudi loading and usage. T is the type of the component interface (or concrete class).
Definition at line 158 of file GaudiHandle.h.
| GaudiHandle< T >::GaudiHandle | ( | const std::string & | myTypeAndName, |
| const std::string & | myComponentType, | ||
| const std::string & | myParentName | ||
| ) | [inline, protected] |
Definition at line 163 of file GaudiHandle.h.
: GaudiHandleBase(myTypeAndName, myComponentType, myParentName), m_pObject(0) {}
| GaudiHandle< T >::GaudiHandle | ( | const GaudiHandle< T > & | other ) | [inline] |
Copy constructor needed for correct ref-counting.
Definition at line 170 of file GaudiHandle.h.
: GaudiHandleBase( other ) { m_pObject = other.m_pObject; if ( m_pObject ) m_pObject->addRef(); }
| void GaudiHandle< T >::assertObject | ( | ) | const [inline, private] |
Load the pointer to the component.
Do a retrieve if needed. Throw an exception if retrieval fails.
Definition at line 274 of file GaudiHandle.h.
{ // not really const, because it may update m_pObject
if ( !getObject() ) {
throw GaudiException("Failed to retrieve " + componentType() + ": " + typeAndName(),
componentType() + " retrieve", StatusCode::FAILURE);
}
}
| std::string GaudiHandle< T >::getDefaultName | ( | ) | [inline] |
Definition at line 238 of file GaudiHandle.h.
{
std::string defName = GaudiHandleBase::type();
if ( defName.empty() ) defName = getDefaultType();
return defName;
}
| std::string GaudiHandle< T >::getDefaultType | ( | ) | [inline] |
Helper function to get default type string from the class type.
Definition at line 234 of file GaudiHandle.h.
{
return System::typeinfoName( typeid(T) );
}
| bool GaudiHandle< T >::getObject | ( | ) | const [inline, private] |
Load the pointer to the component.
Do a retrieve if needed
Definition at line 268 of file GaudiHandle.h.
| GaudiHandle< T >::operator bool | ( | ) | const [inline] |
For testing if handle has component.
Does retrieve() if needed. If this returns false, the component could not be retrieved.
Definition at line 209 of file GaudiHandle.h.
{ // not really const, because it may update m_pObject
return getObject();
}
| T& GaudiHandle< T >::operator* | ( | ) | [inline] |
Definition at line 213 of file GaudiHandle.h.
{
assertObject();
return *m_pObject;
}
| T& GaudiHandle< T >::operator* | ( | ) | const [inline] |
Definition at line 223 of file GaudiHandle.h.
{ // not really const, because it may update m_pObject
assertObject();
return *m_pObject;
}
| T* GaudiHandle< T >::operator-> | ( | ) | const [inline] |
Definition at line 228 of file GaudiHandle.h.
{ // not really const, because it may update m_pObject
assertObject();
return m_pObject;
}
| T* GaudiHandle< T >::operator-> | ( | ) | [inline] |
Definition at line 218 of file GaudiHandle.h.
{
assertObject();
return m_pObject;
}
| GaudiHandle& GaudiHandle< T >::operator= | ( | const GaudiHandle< T > & | other ) | [inline] |
Assignment operator for correct ref-counting.
Definition at line 177 of file GaudiHandle.h.
| virtual StatusCode GaudiHandle< T >::release | ( | T * | comp ) | const [inline, protected, virtual] |
Release the component.
Default implementation calls release() on the component. Can be overridden by the derived class if something else if needed.
Reimplemented in ToolHandle< T >.
Definition at line 250 of file GaudiHandle.h.
{ // not really const, because it updates m_pObject
comp->release();
return StatusCode::SUCCESS;
}
| StatusCode GaudiHandle< T >::release | ( | ) | const [inline] |
Release the component.
Reimplemented in ToolHandle< T >.
Definition at line 198 of file GaudiHandle.h.
{ // not really const, because it updates m_pObject
if ( m_pObject ) {
StatusCode sc = release( m_pObject );
m_pObject = 0;
return sc;
}
return StatusCode::SUCCESS;
}
| StatusCode GaudiHandle< T >::retrieve | ( | ) | const [inline] |
Retrieve the component.
Release existing component if needed.
Reimplemented in ServiceHandle< T >, ToolHandle< T >, and ServiceHandle< IToolSvc >.
Definition at line 188 of file GaudiHandle.h.
{ // not really const, because it updates m_pObject
if ( m_pObject && release().isFailure() ) return StatusCode::FAILURE;
if ( retrieve( m_pObject ).isFailure() ) {
m_pObject = 0;
return StatusCode::FAILURE;
}
return StatusCode::SUCCESS;
}
| virtual StatusCode GaudiHandle< T >::retrieve | ( | T *& | ) | const [protected, pure virtual] |
Retrieve the component.
To be implemented by the derived class. It will pass the pointer
Implemented in ServiceHandle< T >, ToolHandle< T >, and ServiceHandle< IToolSvc >.
| void GaudiHandle< T >::setDefaultType | ( | ) | [inline, private] |
Helper function to set default type from the class type T.
Definition at line 263 of file GaudiHandle.h.
| void GaudiHandle< T >::setDefaultTypeAndName | ( | ) | [inline, private] |
Helper function to set default name and type.
Definition at line 257 of file GaudiHandle.h.
{
const std::string& myType = getDefaultType();
GaudiHandleBase::setTypeAndName(myType+'/'+myType);
}
T* GaudiHandle< T >::m_pObject [mutable, private] |
Definition at line 283 of file GaudiHandle.h.