The Gaudi Framework  master (37c0b60a)
GaudiHandleBase Class Reference

#include <GaudiKernel/GaudiHandle.h>

Inheritance diagram for GaudiHandleBase:
Collaboration diagram for GaudiHandleBase:

Public Types

using PropertyType = GaudiHandleProperty
 

Public Member Functions

const std::stringtypeAndName () 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 (std::string_view 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 ()
 virtual destructor so that derived class destructor is called. More...
 
const std::stringcomponentType () const
 
const std::stringpropertyName () 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::stringparentName () 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 (std::string componentType)
 The component type. More...
 
void setParentName (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 105 of file GaudiHandle.h.

Member Typedef Documentation

◆ PropertyType

Constructor & Destructor Documentation

◆ GaudiHandleBase()

GaudiHandleBase::GaudiHandleBase ( std::string  myTypeAndName,
std::string  myComponentType,
std::string  myParentName 
)
inlineprotected

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
myComponentTypestring 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
myParentNameName of the parent that has this handle as a member. Used in printout.

Definition at line 121 of file GaudiHandle.h.

122  : GaudiHandleInfo( std::move( myComponentType ), std::move( myParentName ) ) {
123  setTypeAndName( std::move( myTypeAndName ) );
124  }

Member Function Documentation

◆ empty()

bool GaudiHandleBase::empty ( ) const
inline

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

typeAndName string is empty).

Definition at line 140 of file GaudiHandle.h.

140 { return m_typeAndName.empty(); }

◆ messageName()

std::string GaudiHandleBase::messageName ( ) const

name used for printing messages

Definition at line 52 of file GaudiHandle.cpp.

52  {
53  std::string propName = propertyName();
54  if ( propName.empty() ) { propName = pythonPropertyClassName() + "('" + m_typeAndName + "')"; }
55  return parentName() + "." + propName;
56 }

◆ name()

std::string GaudiHandleBase::name ( ) const

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

Definition at line 32 of file GaudiHandle.cpp.

32  {
33  auto slash = m_typeAndName.find( '/' );
34  if ( slash == std::string::npos ) {
35  // only type is given, or string is empty.
36  // return default name (=type or empty, in this case full string)
37  return m_typeAndName;
38  } else if ( slash != m_typeAndName.length() - 1 ) {
39  // an explicit name is given, so return it
40  return m_typeAndName.substr( slash + 1 );
41  } else {
42  // ends with /, i.e. explicit empty name.
43  // Should probably never happen.
44  return "";
45  }
46 }

◆ pythonPropertyClassName()

std::string GaudiHandleBase::pythonPropertyClassName ( ) const
overridevirtual

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 50 of file GaudiHandle.cpp.

50 { return componentType() + "Handle"; }

◆ pythonRepr()

std::string GaudiHandleBase::pythonRepr ( ) const
overridevirtual

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 58 of file GaudiHandle.cpp.

58 { return pythonPropertyClassName() + "('" + m_typeAndName + "')"; }

◆ setName()

void GaudiHandleBase::setName ( std::string_view  myName)

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

Definition at line 48 of file GaudiHandle.cpp.

48 { m_typeAndName = type().append( "/" ).append( myName ); }

◆ setTypeAndName()

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

The component "type/name" string.

Definition at line 19 of file GaudiHandle.cpp.

19 { m_typeAndName = std::move( myTypeAndName ); }

◆ type()

std::string GaudiHandleBase::type ( ) const

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

Definition at line 21 of file GaudiHandle.cpp.

21  {
22  std::string::size_type slash = m_typeAndName.find( '/' );
23  if ( slash != std::string::npos ) {
24  // return only part before /
25  return m_typeAndName.substr( 0, slash );
26  } else {
27  // return full string
28  return m_typeAndName;
29  }
30 }

◆ typeAndName()

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

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

Definition at line 131 of file GaudiHandle.h.

131 { return m_typeAndName; }

Member Data Documentation

◆ m_typeAndName

std::string GaudiHandleBase::m_typeAndName
private

Definition at line 167 of file GaudiHandle.h.


The documentation for this class was generated from the following files:
GaudiHandleInfo::parentName
const std::string & parentName() const
The name of the parent.
Definition: GaudiHandle.h:65
std::string
STL class.
std::move
T move(T... args)
std::string::find
T find(T... args)
std::string::length
T length(T... args)
GaudiHandleInfo::componentType
const std::string & componentType() const
Definition: GaudiHandle.h:56
GaudiHandleBase::m_typeAndName
std::string m_typeAndName
Definition: GaudiHandle.h:167
GaudiHandleInfo::propertyName
const std::string & propertyName() const
name as used in declareProperty(name,gaudiHandle)
Definition: GaudiHandle.h:59
std::string::append
T append(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:44
std::string::substr
T substr(T... args)
GaudiHandleBase::type
std::string type() const
The concrete component class name: the part before the '/'.
Definition: GaudiHandle.cpp:21
GaudiHandleBase::pythonPropertyClassName
std::string pythonPropertyClassName() const override
Name of the componentType with "Handle" appended.
Definition: GaudiHandle.cpp:50
std::string::empty
T empty(T... args)
GaudiHandleBase::setTypeAndName
void setTypeAndName(std::string myTypeAndName)
The component "type/name" string.
Definition: GaudiHandle.cpp:19