| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

IToolSvc Class Reference

The interface implemented by the IToolSvc base class. More...

#include <GaudiKernel/IToolSvc.h>

Inheritance diagram for IToolSvc:

[legend]
Collaboration diagram for IToolSvc:
[legend]
List of all members.

Public Types

 SUCCESS = 1
 Normal successful completion.
 NO_INTERFACE
 Requested interface is not available.
 VERSMISMATCH
 Requested interface version is incompatible.
 LAST_ERROR
 Last error.
enum  Status { SUCCESS = 1, NO_INTERFACE, VERSMISMATCH, LAST_ERROR }
 Return status. More...

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
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvInterface)=0
 Query interfaces of Interface.
virtual unsigned long addRef ()=0
 Increment the reference count of Interface instance.
virtual unsigned long release ()=0
 Release Interface instance.

Static Public Member Functions

static const InterfaceIDinterfaceID ()
 Retrieve interface ID.

Classes

class  Observer
 allow call-backs when a tool is a created or retrieved More...

Detailed Description

The interface implemented by the IToolSvc base class.

Author:
G.Corti

Definition at line 20 of file IToolSvc.h.


Member Enumeration Documentation

enum IInterface::Status [inherited]

Return status.

Enumerator:
SUCCESS  Normal successful completion.
NO_INTERFACE  Requested interface is not available.
VERSMISMATCH  Requested interface version is incompatible.
LAST_ERROR  Last error.

Reimplemented in IConversionSvc, IConverter, and IDataProviderSvc.

Definition at line 113 of file IInterface.h.

00113                 {
00115     SUCCESS = 1,
00117     NO_INTERFACE,
00119     VERSMISMATCH,
00121     LAST_ERROR
00122   };


Member Function Documentation

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

Retrieve interface ID.

Reimplemented from IInterface.

Definition at line 24 of file IToolSvc.h.

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)

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)

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

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

Release the tool.

Parameters:
tool to be released

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.

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.

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]

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

virtual StatusCode IInterface::queryInterface ( const InterfaceID riid,
void **  ppvInterface 
) [pure virtual, inherited]

Query interfaces of Interface.

Parameters:
riid ID of Interface to be retrieved
ppvInterface Pointer to Location for interface pointer

Implemented in Algorithm, AlgTool, Auditor, ConversionSvc, Converter, DataSvc, EventSelectorDataStream, MinimalEventLoopMgr, PropertyMgr, SelectStatement, and Service.

virtual unsigned long IInterface::addRef (  )  [pure virtual, inherited]

Increment the reference count of Interface instance.

Implemented in Algorithm, AlgTool, Auditor, Converter, EventSelectorDataStream, IFactory, PropertyMgr, SelectStatement, and Service.

virtual unsigned long IInterface::release (  )  [pure virtual, inherited]

Release Interface instance.

Implemented in Algorithm, AlgTool, Auditor, Converter, EventSelectorDataStream, IFactory, PropertyMgr, SelectStatement, and Service.


The documentation for this class was generated from the following file:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 19:57:11 2011 for GaudiKernel by doxygen 1.4.7