| # Gaudi Framework, version v20r3
Generated: 24 Nov 2008

# ICounterSvc Class Reference

`#include <GaudiKernel/ICounterSvc.h>`

Inheritance diagram for ICounterSvc:

[legend]
Collaboration diagram for ICounterSvc:

[legend]

List of all members.

## Detailed Description

Create / access multi purpose counters.

Counter Creation: -----------------

       // counter creation:
       ICounterSvc::CountObject obj = svc->create("AlgName","NumExecuted",0);

        obj++;
        obj += 10;

        ICounterSvc::Counter*  m_counter = obj.counter();
        // ICounterSvc::Counter*  m_counter = obj ; ///< the same

        ICounterSvc::Counter* m_counter = 0;
        if ( svc->create("AlgName","NumExecuted",0, m_counter).isSuccess() )
        {
           CountObject obj(m_counter);
           obj++;
        }

Counter access: ---------------

       ICounterSvc::Counter* m_counter = svc->get("AlgName","NumExecuted");
       if ( m_counter )  {....}

       // or:

       try {
         ICounterSvc::CountObject obj(svc->get("AlgName","NumExecuted"));
         obj++;
       }
       catch(std::invalid_argument e)  {
          ...handle exception ...
       }

Author:
  Markus Frank

  modified by Vanya BELYAEV ibelyaev@physics.syr.edu

Version:
  3.0

Definition at line 78 of file ICounterSvc.h.

## Public Types
enum | { COUNTER_NOT_PRESENT = 2, COUNTER_EXISTS = 4, COUNTER_REMOVED = 3 }
typedef StatEntity | Counter
| the actual type of counter
typedef Stat | CountObject
| Ease the manipulation of counters in a way, that they behave like objects: Avoid: Counter* cnt = .
typedef std::vector< CountObject > | Counters
| the actual type of vectors of initialized counters
## Public Member Functions
virtual Counter * | get (const std::string &group, const std::string &name) const =0
| Access an existing counter object.
virtual Counters | get (const std::string &group) const =0
| get all counters form the given group:
virtual StatusCode | create (const std::string &group, const std::string &name, longlong initial_value, Counter *&refpCounter)=0
| Create a new counter object.
virtual CountObject | create (const std::string &group, const std::string &name, longlong initial_value=0)=0
| If the counter object exists already, a std::runtime_error exception is thrown.
virtual StatusCode | remove (const std::string &group, const std::string &name)=0
| Remove a counter object.
virtual StatusCode | remove (const std::string &group)=0
| Remove all counters of a given group.
virtual StatusCode | print (const std::string &group, const std::string &name, Printout &printer) const =0
| Print counter value.
virtual StatusCode | print (const std::string &group, Printout &printer) const =0
| If no such counter exists the return code is COUNTER_NOT_PRESENT Note: This call is not direct access.
virtual StatusCode | print (const Counter *pCounter, Printout &printer) const =0
| Print counter value.
virtual StatusCode | print (const CountObject &pCounter, Printout &printer) const =0
| Print counter value.
virtual StatusCode | print (Printout &printer) const =0
virtual StatusCode | defaultPrintout (MsgStream &log, const Counter *pCounter) const =0
| Default Printout for counters.
## Static Public Member Functions
static const InterfaceID & | interfaceID ()
| Retrieve the unique interface ID.
## Protected Member Functions
virtual | ~ICounterSvc ()
| protected virtual destructor
## Classes
class | Printout
| Print counters for each element in the range [first, last) e.g. More...

## Member Typedef Documentation

typedef StatEntity ICounterSvc::Counter

the actual type of counter

See also:
  StatEntity

Definition at line 82 of file ICounterSvc.h.

typedef Stat ICounterSvc::CountObject

Ease the manipulation of counters in a way, that they behave like objects: Avoid: Counter* cnt = .

..; ++(*cnt);

Instead: Counter* cnt = ...; CountObject obj(cnt); ++cnt;

Note: No inheritance! This class has no virtual destructor

Author:
  Markus Frank

Version:
  1.0

Definition at line 98 of file ICounterSvc.h.

typedef std::vector<CountObject> ICounterSvc::Counters

the actual type of vectors of initialized counters

Definition at line 100 of file ICounterSvc.h.

## Member Enumeration Documentation

anonymous enum

Enumerator:

  COUNTER_NOT_PRESENT |
  COUNTER_EXISTS |
  COUNTER_REMOVED |

Definition at line 254 of file ICounterSvc.h.

    00254        {  COUNTER_NOT_PRESENT = 2,  // Error
    00255           COUNTER_EXISTS      = 4,  // Error ?
    00256           COUNTER_REMOVED     = 3   // Type of success. Low bit set
    00257   } ;

## Constructor & Destructor Documentation

ICounterSvc::~ICounterSvc | ( |  | ) | `[protected, virtual]`

protected virtual destructor

protected virtual destructor

Definition at line 38 of file ICounterSvc.cpp.

    00038 {}

## Member Function Documentation

virtual Counter* ICounterSvc::get | ( | const std::string & | group,
|  | const std::string & | name |
| ) |  |  | const`[pure virtual]`

Access an existing counter object.

Parameters:

  | group | [IN] Hint for smart printing
  | name | [IN] Counter name
  | createIf | [IN] flag to indicate the creation if not counter found

Returns:
  Pointer to existing counter object (NULL if non existing).

Implemented in CounterSvc.

virtual Counters ICounterSvc::get | ( | const std::string & | group | ) | const`[pure virtual]`

get all counters form the given group:

        ICounterSvc::Counters cnts = svc->get("Efficiency") ;

        MsgStream& stream = ... ;
        for ( ICounterSvc::Counters::const_iterator ic = cnts.begin()  ;
              cnts.end() != ic ; ++ic )
           {
              stream << (*ic) << endreq ;
           }

See also:
  ICounterSvc::Counters

Parameters:

  | gorup | the gorup name

Returns:
  vector of the properly initialized counters

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::create | ( | const std::string & | group,
|  | const std::string & | name,
|  | longlong | initial_value,
|  | Counter *& | refpCounter |
| ) |  |  | `[pure virtual]`

Create a new counter object.

If the counter object exists already the existing object is returned. In this event the return code is COUNTER_EXISTS. The ownership of the actual counter stays with the service.

Parameters:

  | group | [IN] Hint for smart printing
  | name | [IN] Counter name
  | initial_value | [IN] Initial counter value
  | refpCounter | [OUT] Reference to store pointer to counter.

Returns:
  StatusCode indicating failure or success.

Implemented in CounterSvc.

virtual CountObject ICounterSvc::create | ( | const std::string & | group,
|  | const std::string & | name,
|  | longlong | initial_value = `0` |
| ) |  |  | `[pure virtual]`

If the counter object exists already, a std::runtime_error exception is thrown.

The ownership of the actual counter stays with the service.

Parameters:

  | group | [IN] Hint for smart printing
  | name | [IN] Counter name
  | initial_value | [IN] Initial counter value
  | refpCounter | [OUT] Reference to store pointer to counter.

Returns:
  Fully initialized CountObject.

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::remove | ( | const std::string & | group,
|  | const std::string & | name |
| ) |  |  | `[pure virtual]`

Remove a counter object.

If the counter object does not exists, the return code is COUNTER_NOT_PRESENT. The counter may not be used anymore after this call.

Parameters:

  | group | [IN] Hint for smart printing
  | name | [IN] Counter name
  | initial_value | [IN] Initial counter value
  | refpCounter | [OUT] Reference to store pointer to counter.

Returns:
  StatusCode indicating failure or success.

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::remove | ( | const std::string & | group | ) | `[pure virtual]`

Remove all counters of a given group.

If no such counter exists the return code is COUNTER_NOT_PRESENT

Parameters:

  | group | [IN] Hint for smart printing

Returns:
  StatusCode indicating failure or success.

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::print | ( | const std::string & | group,
|  | const std::string & | name,
|  | Printout & | printer |
| ) |  |  | const`[pure virtual]`

Print counter value.

Parameters:

  | group | [IN] Hint for smart printing
  | name | [IN] Counter name
  | printer | [IN] Print actor

Returns:
  StatusCode indicating failure or success.

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::print | ( | const std::string & | group,
|  | Printout & | printer |
| ) |  |  | const`[pure virtual]`

If no such counter exists the return code is COUNTER_NOT_PRESENT Note: This call is not direct access.

Parameters:

  | group | [IN] Hint for smart printing
  | printer | [IN] Print actor

Returns:
  StatusCode indicating failure or success.

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::print | ( | const Counter * | pCounter,
|  | Printout & | printer |
| ) |  |  | const`[pure virtual]`

Print counter value.

Parameters:

  | pCounter | [IN] Pointer to Counter object
  | printer | [IN] Print actor

Returns:
  StatusCode indicating failure or success.

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::print | ( | const CountObject & | pCounter,
|  | Printout & | printer |
| ) |  |  | const`[pure virtual]`

Print counter value.

Parameters:

  | refCounter | [IN] Reference to CountObject object
  | printer | [IN] Print actor

Returns:
  StatusCode indicating failure or success.

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::print | ( | Printout & | printer | ) | const`[pure virtual]`

Parameters:

  | printer | [IN] Print actor

Returns:
  StatusCode indicating failure or success.

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::defaultPrintout | ( | MsgStream & | log,
|  | const Counter * | pCounter |
| ) |  |  | const`[pure virtual]`

Default Printout for counters.

Implemented in CounterSvc.

const InterfaceID & ICounterSvc::interfaceID | ( |  | ) | `[static]`

Retrieve the unique interface ID.

See also:
  IInterface

Reimplemented from IInterface.

Definition at line 30 of file ICounterSvc.cpp.

    00031 {
    00032   static const InterfaceID s_IID_ICounterSvc ( "ICounterSvc" , 3 , 0 ) ;
    00033   return s_IID_ICounterSvc ;
    00034 }

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v20r3/GaudiKernel/GaudiKernel/ICounterSvc.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v20r3/GaudiKernel/src/Lib/ICounterSvc.cpp