| # Gaudi Framework, version v20r2
Generated: 18 Jul 2008

- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages

- Search for |

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# IToolSvc Class Reference

`#include <GaudiKernel/IToolSvc.h>`

Inheritance diagram for IToolSvc:

[legend]
Collaboration diagram for IToolSvc:

[legend]
List of all members.

## Detailed Description

The interface implemented by the IToolSvc base class.

Author:
  G.Corti

Definition at line 20 of file IToolSvc.h.

## Public Member Functions
virtual StatusCode | retrieve (const std::string &type, const InterfaceID &iid, IAlgTool *&tool, const IInterface *parent=0, bool createIf=true)=0
| Retrieve tool with tool dependent part of the name automatically assigned.
virtual StatusCode | retrieve (const std::string &type, const std::string &name, const InterfaceID &iid, IAlgTool *&tool, const IInterface *parent=0, bool createIf=true)=0
| Retrieve tool with tool dependent part of the name specified by the requester.
virtual std::vector< std::string > | getInstances (const std::string &toolType)=0
| Get all instance of tool by type.
virtual StatusCode | releaseTool (IAlgTool *tool)=0
| Release the tool.
template<class T>
StatusCode | retrieveTool (const std::string &type, T *&tool, const IInterface *parent=0, bool createIf=true)
| Retrieve specified tool sub-type with tool dependent part of the name automatically assigned.
template<class T>
StatusCode | retrieveTool (const std::string &type, const std::string &name, T *&tool, const IInterface *parent=0, bool createIf=true)
| Retrieve specified tool sub-type with tool dependent part of the name tool dependent part of the name specified by the requester.
virtual void | registerObserver (Observer *obs)=0
virtual void | unRegisterObserver (Observer *obs)=0
## Static Public Member Functions
static const InterfaceID & | interfaceID ()
| Retrieve interface ID.
## Classes
class | Observer
| allow call-backs when a tool is a created or retrieved More...

## Member Function Documentation

static const InterfaceID& IToolSvc::interfaceID | ( |  | ) | `[inline, static]`

Retrieve interface ID.

Reimplemented from IInterface.

Definition at line 24 of file IToolSvc.h.

References IID_IToolSvc.

Referenced by HbookCnv::HFileCnv::initialize().

    00024 { return IID_IToolSvc; }

virtual StatusCode IToolSvc::retrieve | ( | const std::string & | type,
|  | const InterfaceID & | iid,
|  | IAlgTool *& | tool,
|  | const IInterface * | parent = `0`,
|  | bool | createIf = `true` |
| ) |  |  | `[pure virtual]`

Retrieve tool with tool dependent part of the name automatically assigned.

By default a tool will be created if it does not exist, unless otherwise specified. By default it will be a common tool unless a parent is specified. The parent of a common tool is automatically taken as the ToolSvc itself.

Parameters:

  | type | AlgTool type name
  | iid | the unique interface identifier
  | tool | returned tool
  | parent | constant reference to the parent (def=none)
  | createIf | creation flag (def=create if not existing)

Implemented in ToolSvc.

Referenced by VFSSvc::initialize(), retrieveTool(), and GaudiPython::Helper::tool().

virtual StatusCode IToolSvc::retrieve | ( | const std::string & | type,
|  | const std::string & | name,
|  | const InterfaceID & | iid,
|  | IAlgTool *& | tool,
|  | const IInterface * | parent = `0`,
|  | bool | createIf = `true` |
| ) |  |  | `[pure virtual]`

Retrieve tool with tool dependent part of the name specified by the requester.

By default a tool will be created if it does not exist, unless otherwise specified. By default it will be a common tool unless a parent is specified. The parent of a common tool is automatically taken as the ToolSvc itself.

Parameters:

  | type | AlgTool type name
  | name | name to be assigned to tool dependent part of the name
  | iid | the unique interface identifier
  | tool | returned tool
  | parent | constant reference to parent (def=none)
  | createIf | creation flag (def=create if not existing)

Implemented in ToolSvc.

virtual std::vector<std::string> IToolSvc::getInstances | ( | const std::string & | toolType | ) | `[pure virtual]`

Get all instance of tool by type.

Parameters:

  | toolType | type of tool

Implemented in ToolSvc.

virtual StatusCode IToolSvc::releaseTool | ( | IAlgTool * | tool | ) | `[pure virtual]`

Release the tool.

Parameters:

  | tool | to be released

Implemented in ToolSvc.

Referenced by VFSSvc::finalize(), PartitionSwitchAlg::finalize(), and PartitionSwitchAlg::initialize().

template<class T>

StatusCode IToolSvc::retrieveTool | ( | const std::string & | type,
|  | T *& | tool,
|  | const IInterface * | parent = `0`,
|  | bool | createIf = `true` |
| ) |  |  | `[inline]`

Retrieve specified tool sub-type with tool dependent part of the name automatically assigned.

Internally it uses the corresponding IToolSvc::retrieve and does the dynamic casting.

      IToolSvc* svc  = ... ;
      IMyTool*  tool = 0   ;
      StatusCode sc = svc->retrieveTool ( "MyToolType" , tool ) ;

For this example public tool of type `'MyToolType'` will be retrieved from Tool Service (created on demand). The full name of the tool instance is set to be `ToolSvc.MyToolType`

      IToolSvc*   svc = ... ;
      IAlgorithm* alg = ... ;
      IMyTool*  tool  = 0   ;
      StatusCode sc   = svc->retrieveTool ( "MyToolType" , tool , alg ) ;

For this example the private tool of type `'MyToolType'` will be retrieved from Tool Service (created on demand). The full name of the tool instance is set to be `<AlgName>.MyToolType` , where `<AlgName>` is a name of the algorithm.

      IToolSvc* svc  = ... ;
      IMyTool*  tool = 0   ;
      StatusCode sc = svc->retrieveTool ( "MyToolType/MyToolName" , tool ) ;

For this example public tool of type `'MyToolType'` will be retrieved from Tool Service (created on demand). The full name of the tool instance is set to be `ToolSvc.MyToolName`

      IToolSvc*   svc = ... ;
      IAlgorithm* alg = ... ;
      IMyTool*  tool  = 0   ;
      StatusCode sc   = svc ->
                    retrieveTool ( "MyToolType/MyToolName" , tool , alg ) ;

For this example the private tool of type `'MyToolType'` will be retrieved from Tool Service (created on demand). The full name of the tool instance is set to be `<AlgName>.MyToolName` , where `<AlgName>` is a name of the algorithm.

Parameters:

  | tool | returned tool
  | parent | constant reference to parent (def=none)
  | createIf | creation flag (def=create if not existing)

Definition at line 137 of file IToolSvc.h.

References retrieve().

Referenced by EventSelector::initialize(), PartitionSwitchAlg::initialize(), and TimingAuditor::initialize().

    00141   {
    00142     return retrieve( type,
    00143                      T::interfaceID(),
    00144                      (IAlgTool*&)tool,
    00145                      parent,
    00146                      createIf );
    00147   }

template<class T>

StatusCode IToolSvc::retrieveTool | ( | const std::string & | type,
|  | const std::string & | name,
|  | T *& | tool,
|  | const IInterface * | parent = `0`,
|  | bool | createIf = `true` |
| ) |  |  | `[inline]`

Retrieve specified tool sub-type with tool dependent part of the name tool dependent part of the name specified by the requester.

Internally it uses the corresponding IToolSvc::retrieve and does the dynamic casting.

      IToolSvc* svc  = ... ;
      IMyTool*  tool = 0   ;
      StatusCode sc = svc->retrieveTool ( "MyToolType" ,
                                          "MyToolName" , tool ) ;

For this example public tool of type `'MyToolType'` will be retrieved from Tool Service (created on demand). The full name of the tool instance is set to be `ToolSvc.MyToolName`

      IToolSvc*   svc = ... ;
      IAlgorithm* alg = ... ;
      IMyTool*  tool  = 0   ;
      StatusCode sc   = svc->retrieveTool ( "MyToolType" ,
                                            "MyToolName" , tool , alg ) ;

For this example the private tool of type `'MyToolType'` will be retrieved from Tool Service (created on demand). The full name of the tool instance is set to be `<AlgName>.MyToolName` , where `<AlgName>` is a name of the algorithm.

If `name` is empty (`""`) it is assumed to be equal to the `type`

Parameters:

  | type | AlgTool type name
  | name | name to be assigned to tool dependent part of the name
  | tool | returned tool
  | parent | constant reference to parent (def=none)
  | createIf | creation flag (def=create if not existing)

Definition at line 193 of file IToolSvc.h.

References name, and retrieve().

    00198   {
    00199     return retrieve ( type,
    00200                       name,
    00201                       T::interfaceID(),
    00202                       (IAlgTool*&)tool,
    00203                       parent,
    00204                       createIf );
    00205   }

virtual void IToolSvc::registerObserver | ( | Observer * | obs | ) | `[pure virtual]`

Implemented in ToolSvc.

virtual void IToolSvc::unRegisterObserver | ( | Observer * | obs | ) | `[pure virtual]`

Implemented in ToolSvc.

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v20r2/GaudiKernel/v25r2/GaudiKernel/IToolSvc.h