| # Gaudi Framework, version v23r0 |

Home |  | Generated: Mon Jan 30 2012

Public Types | Public Member Functions

# extends2< BASE, I1, I2 > Struct Template Reference

Base class used to extend a class implementing other interfaces. More...

`#include <extends.h>`

Inheritance diagram for extends2< BASE, I1, I2 >:
[legend]
Collaboration diagram for extends2< BASE, I1, I2 >:
[legend]

List of all members.

## Public Types
typedef extends2 | base_class
| Typedef to this class.
typedef extend_interfaces2< I1, I2 > | extend_interfaces_base
| Typedef to the base of this class.
typedef extend_interfaces_base::ext_iids | interfaces
| MPL set of all the implemented interfaces.
## Public Member Functions
template<typename A1 , typename A2 , typename A3 >
| extends2 (A1 a1, A2 a2, A3 a3)
| Templated constructor with 3 arguments.
template<typename A1 , typename A2 >
| extends2 (A1 a1, A2 a2)
| Templated constructor with 2 arguments.
template<typename A1 >
| extends2 (A1 a1)
| Templated constructor with 1 argument.
| extends2 ()
| Default constructor.
virtual void * | i_cast (const InterfaceID &tid) const
| Implementation of IInterface::i_cast.
virtual StatusCode | queryInterface (const InterfaceID &ti, void **pp)
| Implementation of IInterface::queryInterface.
virtual std::vector< std::string > | getInterfaceNames () const
| Implementation of IInterface::getInterfaceNames.
virtual | ~extends2 ()
| Virtual destructor.

## Detailed Description

### template<typename BASE, typename I1, typename I2>
struct extends2< BASE, I1, I2 >

Base class used to extend a class implementing other interfaces.

Version for two interfaces.

Author:
  Marco Clemencic

Definition at line 75 of file extends.h.

## Member Typedef Documentation

template<typename BASE, typename I1, typename I2>

typedef extends2 extends2< BASE, I1, I2 >::base_class

Typedef to this class.

Reimplemented in extends1< DataSvc, IIncidentListener >, extends1< DataSvc, IHistogramSvc >, extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 77 of file extends.h.

template<typename BASE, typename I1, typename I2>

typedef extend_interfaces2<I1,I2> extends2< BASE, I1, I2 >::extend_interfaces_base

Typedef to the base of this class.

Reimplemented in extends1< DataSvc, IIncidentListener >, extends1< DataSvc, IHistogramSvc >, extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 79 of file extends.h.

template<typename BASE, typename I1, typename I2>

typedef extend_interfaces_base::ext_iids extends2< BASE, I1, I2 >::interfaces

MPL set of all the implemented interfaces.

Reimplemented in extends1< DataSvc, IIncidentListener >, extends1< DataSvc, IHistogramSvc >, extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 82 of file extends.h.

## Constructor & Destructor Documentation

template<typename BASE, typename I1, typename I2>
template<typename A1 , typename A2 , typename A3 >

extends2< BASE, I1, I2 >::extends2 | ( | A1 | a1,
|  | A2 | a2,
|  | A3 | a3
| ) |  | `[inline]`

Templated constructor with 3 arguments.

Reimplemented in extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 86 of file extends.h.

    : BASE(a1,a2,a3){}

template<typename BASE, typename I1, typename I2>
template<typename A1 , typename A2 >

extends2< BASE, I1, I2 >::extends2 | ( | A1 | a1,
|  | A2 | a2
| ) |  | `[inline]`

Templated constructor with 2 arguments.

Reimplemented in extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 88 of file extends.h.

    : BASE(a1, a2){}

template<typename BASE, typename I1, typename I2>
template<typename A1 >

extends2< BASE, I1, I2 >::extends2 | ( | A1 | a1 ) | `[inline]`

Templated constructor with 1 argument.

Reimplemented in extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 90 of file extends.h.

    : BASE(a1){}

template<typename BASE, typename I1, typename I2>

extends2< BASE, I1, I2 >::extends2 | ( | ) | `[inline]`

Default constructor.

Reimplemented in extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 92 of file extends.h.

    : BASE(){}

template<typename BASE, typename I1, typename I2>

virtual extends2< BASE, I1, I2 >::~extends2 | ( | ) | `[inline, virtual]`

Virtual destructor.

Reimplemented in extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 133 of file extends.h.

    {}

## Member Function Documentation

template<typename BASE, typename I1, typename I2>

virtual std::vector<std::string> extends2< BASE, I1, I2 >::getInterfaceNames | ( | ) | const`[inline, virtual]`

Implementation of IInterface::getInterfaceNames.

Reimplemented in extends1< DataSvc, IIncidentListener >, extends1< DataSvc, IHistogramSvc >, extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 123 of file extends.h.

                                                             {
        std::vector<std::string> v = BASE::getInterfaceNames(); // start from the base
    #ifndef __GCCXML__
        AppendInterfaceName appender(v);
        mpl::for_each<interfaces>(appender);
    #endif
        return v;
      }

template<typename BASE, typename I1, typename I2>

virtual void* extends2< BASE, I1, I2 >::i_cast | ( | const InterfaceID & | tid ) | const`[inline, virtual]`

Implementation of IInterface::i_cast.

Reimplemented in extends1< DataSvc, IIncidentListener >, extends1< DataSvc, IHistogramSvc >, extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 95 of file extends.h.

                                                         {
        void *ptr = 0;
    #ifndef __GCCXML__
        interfaceMatch<base_class> matcher(this,tid,ptr);
        mpl::for_each<interfaces>(matcher);
    #endif
        if (!ptr) {
          ptr = BASE::i_cast(tid);
        }
        return ptr;
      }

template<typename BASE, typename I1, typename I2>

virtual StatusCode extends2< BASE, I1, I2 >::queryInterface | ( | const InterfaceID & | ti,
|  | void ** | pp
| ) |  | `[inline, virtual]`

Implementation of IInterface::queryInterface.

Reimplemented in extends1< DataSvc, IIncidentListener >, extends1< DataSvc, IHistogramSvc >, extends2< DataSvc, IDetDataSvc, IIncidentListener >, and extends2< DataSvc, INTupleSvc, IDataSourceMgr >.

Definition at line 108 of file extends.h.

                                                                         {
        if (!pp) return StatusCode::FAILURE;
        *pp = 0;
    #ifndef __GCCXML__
        interfaceMatch<base_class> matcher(this,ti,*pp);
        mpl::for_each<interfaces>(matcher);
        if (!*pp) { // cast failed, try the base class
          return BASE::queryInterface(ti,pp);
        }
        this->addRef();
    #endif
        return StatusCode::SUCCESS;
      }

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v23r0/GaudiKernel/GaudiKernel/extends.h

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines