| # Gaudi Framework, version v21r7p1 |

Home |  | Generated: 15 Feb 2010

# extends1< BASE, I1 > Struct Template Reference

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

`#include <extends.h>`

Inheritance diagram for extends1< BASE, I1 >:

[legend]
Collaboration diagram for extends1< BASE, I1 >:

[legend]

List of all members.

## Public Types
typedef extends1 | base_class
| Typedef to this class.
typedef extend_interfaces1< I1 > | 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>
| extends1 (A1 a1, A2 a2, A3 a3)
| Templated constructor with 3 arguments.
template<typename A1, typename A2>
| extends1 (A1 a1, A2 a2)
| Templated constructor with 2 arguments.
template<typename A1>
| extends1 (A1 a1)
| Templated constructor with 1 argument.
| extends1 ()
| Default constructor.
virtual void * | i_cast (const std::type_info &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 | ~extends1 ()
| Virtual destructor.

## Detailed Description

### template<typename BASE, typename I1>
struct extends1< BASE, I1 >

Base class used to extend a class implementing other interfaces.

Version for one interface.

Author:
  Marco Clemencic

Definition at line 10 of file extends.h.

## Member Typedef Documentation

template<typename BASE, typename I1>

typedef extends1 extends1< BASE, I1 >::base_class

Typedef to this class.

Definition at line 12 of file extends.h.

template<typename BASE, typename I1>

typedef extend_interfaces1<I1> extends1< BASE, I1 >::extend_interfaces_base

Typedef to the base of this class.

Definition at line 14 of file extends.h.

template<typename BASE, typename I1>

typedef extend_interfaces_base::ext_iids extends1< BASE, I1 >::interfaces

MPL set of all the implemented interfaces.

Definition at line 17 of file extends.h.

## Constructor & Destructor Documentation

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

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

Templated constructor with 3 arguments.

Definition at line 21 of file extends.h.

    00021 : BASE(a1,a2,a3){}

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

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

Templated constructor with 2 arguments.

Definition at line 23 of file extends.h.

    00023 : BASE(a1, a2){}

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

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

Templated constructor with 1 argument.

Definition at line 25 of file extends.h.

    00025 : BASE(a1){}

template<typename BASE, typename I1>

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

Default constructor.

Definition at line 27 of file extends.h.

    00027 : BASE(){}

template<typename BASE, typename I1>

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

Virtual destructor.

Definition at line 68 of file extends.h.

    00068 {}

## Member Function Documentation

template<typename BASE, typename I1>

virtual void* extends1< BASE, I1 >::i_cast | ( | const std::type_info & | tid | ) | const`[inline, virtual]`

Implementation of IInterface::i_cast.

Definition at line 30 of file extends.h.

    00030                                                       {
    00031     void *ptr = 0;
    00032 #ifndef __GCCXML__
    00033     check_cast<base_class> caster(this,tid,ptr);
    00034     mpl::for_each<interfaces>(caster);
    00035 #endif
    00036     if (!ptr) {
    00037       ptr = BASE::i_cast(tid);
    00038     }
    00039     return ptr;
    00040   }

template<typename BASE, typename I1>

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

Implementation of IInterface::queryInterface.

Definition at line 43 of file extends.h.

    00043                                                                      {
    00044     if (!pp) return StatusCode::FAILURE;
    00045     *pp = 0;
    00046 #ifndef __GCCXML__
    00047     interfaceMatch<base_class> matcher(this,ti,*pp);
    00048     mpl::for_each<interfaces>(matcher);
    00049     if (!*pp) { // cast failed, try the base class
    00050       return BASE::queryInterface(ti,pp);
    00051     }
    00052     this->addRef();
    00053 #endif
    00054     return StatusCode::SUCCESS;
    00055   }

template<typename BASE, typename I1>

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

Implementation of IInterface::getInterfaceNames.

Definition at line 58 of file extends.h.

    00058                                                          {
    00059     std::vector<std::string> v = BASE::getInterfaceNames(); // start from the base
    00060 #ifndef __GCCXML__
    00061     AppendInterfaceName appender(v);
    00062     mpl::for_each<interfaces>(appender);
    00063 #endif
    00064     return v;
    00065   }

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

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