| 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 Member Functions | Private Attributes | List of all members
GaudiHandleBase Class Reference

Base class to handles to be used in lieu of naked pointers to various Gaudi components. More...

`#include <GaudiKernel/GaudiHandle.h>`

Inheritance diagram for GaudiHandleBase:
[legend]
Collaboration diagram for GaudiHandleBase:
[legend]

## Public Member Functions
std::string | typeAndName () const
| The full type and name: "type/name". More...
std::string | type () const
| The concrete component class name: the part before the '/'. More...
std::string | name () const
| The instance name: the part after the '/'. More...
bool | empty () const
| Check if the handle has been set to empty string (i.e. More...
void | setTypeAndName (std::string myTypeAndName)
| The component "type/name" string. More...
void | setName (const std::string &myName)
| Set the instance name (part after the '/') without changing the class type. More...
std::string | pythonPropertyClassName () const override
| Name of the componentType with "Handle" appended. More...
std::string | messageName () const
| name used for printing messages More...
std::string | pythonRepr () const override
| Python representation of handle, i.e. More...
Public Member Functions inherited from GaudiHandleInfo
virtual | ~GaudiHandleInfo ()=default
| virtual destructor so that derived class destructor is called. More...
const std::string & | componentType () const
const std::string & | propertyName () const
| name as used in declareProperty(name,gaudiHandle) More...
void | setPropertyName (std::string propName)
| set name as used in declareProperty(name,gaudiHandle). More...
const std::string & | parentName () const
| The name of the parent. More...

## Protected Member Functions
| GaudiHandleBase (std::string myTypeAndName, std::string myComponentType, std::string myParentName)
| Create a handle ('smart pointer') to a gaudi component. More...
Protected Member Functions inherited from GaudiHandleInfo
| GaudiHandleInfo (std::string myComponentType, std::string myParentName)
| Some basic information and helper functions shared between various handles/arrays. More...
void | setComponentType (const std::string &componentType)
| The component type. More...
void | setParentName (const std::string &parent)
| The name of the parent. More...

## Private Attributes
std::string | m_typeAndName

## Detailed Description

Base class to handles to be used in lieu of naked pointers to various Gaudi components.

This allows better control through the framework of component loading, configuration and usage. This base class implements common features.

Author
  Marti.nosp@m.n.Wo.nosp@m.udstr.nosp@m.a@ce.nosp@m.rn.ch

Definition at line 83 of file GaudiHandle.h.

## Constructor & Destructor Documentation

GaudiHandleBase::GaudiHandleBase | ( | std::string | myTypeAndName,
|  | std::string | myComponentType,
|  | std::string | myParentName
| ) |  |
| inline protected

Create a handle ('smart pointer') to a gaudi component.

Parameters

  myTypeAndName | "MyType/MyName" ("MyType" is short for "MyType/MyType") 'MyType' is the name of the concrete class of the component 'MyName' is to distinguish several instances of the same concrete class
  myComponentType | string indicating what type of component the handle is pointing to. For example: "PublicTool", "PrivateTool", "Service". This is used for printout and on the python side for type checking. On the python side there are classes with these names with "Handle" appended: PublicToolHandle,PrivateToolHandle,ServiceHandle
  myParentName | Name of the parent that has this handle as a member. Used in printout.

Definition at line 100 of file GaudiHandle.h.

101 : GaudiHandleInfo( std::move( myComponentType ), std::move( myParentName ) )
102 {
103 setTypeAndName( std::move( myTypeAndName ) );
104 }
GaudiHandleBase::setTypeAndName
void setTypeAndName(std::string myTypeAndName)
The component "type/name" string.
Definition: GaudiHandle.cpp:9
std::move
T move(T...args)
GaudiHandleInfo::GaudiHandleInfo
GaudiHandleInfo(std::string myComponentType, std::string myParentName)
Some basic information and helper functions shared between various handles/arrays.
Definition: GaudiHandle.h:27

## Member Function Documentation

bool GaudiHandleBase::empty | ( |  | ) | const
| inline

Check if the handle has been set to empty string (i.e.

typeAndName string is empty).

Definition at line 120 of file GaudiHandle.h.

120 { return m_typeAndName.empty(); }
std::string::empty
T empty(T...args)
GaudiHandleBase::m_typeAndName
std::string m_typeAndName
Definition: GaudiHandle.h:145

std::string GaudiHandleBase::messageName | ( |  | ) | const

name used for printing messages

Definition at line 44 of file GaudiHandle.cpp.

45 {
46 std::string propName = propertyName();
47 if ( propName.empty() ) {
48 propName = pythonPropertyClassName() + "('" + m_typeAndName + "')";
49 }
50 return parentName() + "." + propName;
51 }
std::string::empty
T empty(T...args)
GaudiHandleBase::pythonPropertyClassName
std::string pythonPropertyClassName() const override
Name of the componentType with "Handle" appended.
Definition: GaudiHandle.cpp:42
GaudiHandleInfo::parentName
const std::string & parentName() const
The name of the parent.
Definition: GaudiHandle.h:47
std::string
STL class.
GaudiHandleInfo::propertyName
const std::string & propertyName() const
name as used in declareProperty(name,gaudiHandle)
Definition: GaudiHandle.h:41
GaudiHandleBase::m_typeAndName
std::string m_typeAndName
Definition: GaudiHandle.h:145

std::string GaudiHandleBase::name | ( |  | ) | const

The instance name: the part after the '/'.

Definition at line 23 of file GaudiHandle.cpp.

24 {
25 auto slash = m_typeAndName.find( '/' );
26 if ( slash == std::string::npos ) {
27 // only type is given, or string is empty.
28 // return default name (=type or empty, in this case full string)
29 return m_typeAndName;
30 } else if ( slash != m_typeAndName.length() - 1 ) {
31 // an explicit name is given, so return it
32 return m_typeAndName.substr( slash + 1 );
33 } else {
34 // ends with /, i.e. explicit empty name.
35 // Should probably never happen.
36 return "";
37 }
38 }
GaudiHandleBase::m_typeAndName
std::string m_typeAndName
Definition: GaudiHandle.h:145
std::string::find
T find(T...args)
std::string::length
T length(T...args)
std::string::substr
T substr(T...args)

std::string GaudiHandleBase::pythonPropertyClassName | ( |  | ) | const
| override virtual

Name of the componentType with "Handle" appended.

Used as the python class name for the property in the genconf-generated configurables. The python class is defined in GaudiPython/python/GaudiHandles.py.

Implements GaudiHandleInfo.

Definition at line 42 of file GaudiHandle.cpp.

42 { return componentType() + "Handle"; }
GaudiHandleInfo::componentType
const std::string & componentType() const
Definition: GaudiHandle.h:38

std::string GaudiHandleBase::pythonRepr | ( |  | ) | const
| override virtual

Python representation of handle, i.e.

python class name and argument. Can be used in the genconf-generated configurables. The corresponding python classes are defined in GaudiPython/GaudiHandles.py

Implements GaudiHandleInfo.

Definition at line 53 of file GaudiHandle.cpp.

53 { return pythonPropertyClassName() + "('" + m_typeAndName + "')"; }
GaudiHandleBase::pythonPropertyClassName
std::string pythonPropertyClassName() const override
Name of the componentType with "Handle" appended.
Definition: GaudiHandle.cpp:42
GaudiHandleBase::m_typeAndName
std::string m_typeAndName
Definition: GaudiHandle.h:145

void GaudiHandleBase::setName | ( | const std::string & | myName | ) |

Set the instance name (part after the '/') without changing the class type.

Definition at line 40 of file GaudiHandle.cpp.

40 { m_typeAndName = type() + '/' + myName; }
GaudiHandleBase::m_typeAndName
std::string m_typeAndName
Definition: GaudiHandle.h:145
GaudiHandleBase::type
std::string type() const
The concrete component class name: the part before the &#39;/&#39;.
Definition: GaudiHandle.cpp:11

void GaudiHandleBase::setTypeAndName | ( | std::string | myTypeAndName | ) |

The component "type/name" string.

Definition at line 9 of file GaudiHandle.cpp.

9 { m_typeAndName = std::move( myTypeAndName ); }
GaudiHandleBase::m_typeAndName
std::string m_typeAndName
Definition: GaudiHandle.h:145
std::move
T move(T...args)

std::string GaudiHandleBase::type | ( |  | ) | const

The concrete component class name: the part before the '/'.

Definition at line 11 of file GaudiHandle.cpp.

12 {
13 std::string::size_type slash = m_typeAndName.find( '/' );
14 if ( slash != std::string::npos ) {
15 // return only part before /
16 return m_typeAndName.substr( 0, slash );
17 } else {
18 // return full string
19 return m_typeAndName;
20 }
21 }
GaudiHandleBase::m_typeAndName
std::string m_typeAndName
Definition: GaudiHandle.h:145
std::string::find
T find(T...args)
std::string::substr
T substr(T...args)

std::string GaudiHandleBase::typeAndName | ( |  | ) | const
| inline

The full type and name: "type/name".

Definition at line 111 of file GaudiHandle.h.

111 { return m_typeAndName; }
GaudiHandleBase::m_typeAndName
std::string m_typeAndName
Definition: GaudiHandle.h:145

## Member Data Documentation

std::string GaudiHandleBase::m_typeAndName
| private

Definition at line 145 of file GaudiHandle.h.

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

- GaudiKernel/GaudiKernel/GaudiHandle.h
- GaudiKernel/src/Lib/GaudiHandle.cpp