| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

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

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Types | Public Member Functions | List of all members
extends3< BASE, I1, I2, I3 > Struct Template Reference

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

`#include <extends.h>`

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

## Public Types
typedef extends3 | base_class
| Typedef to this class.
typedef extend_interfaces3< I1, I2, I3 > | 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 Types inherited from extend_interfaces3< I1, I2, I3 >
typedef mpl::fold< typename I1::iid::iids::type, typename mpl::fold< typename I2::iid::iids::type, typename I3::iid::iids::type, mpl::insert< mpl::_1, mpl::_2 > >::type, mpl::insert< mpl::_1, mpl::_2 > >::type | ext_iids
| MPL set of interfaces extended by this one.

## Public Member Functions
template<typename A1 , typename A2 , typename A3 >
| extends3 (A1 a1, A2 a2, A3 a3)
| Templated constructor with 3 arguments.
template<typename A1 , typename A2 >
| extends3 (A1 a1, A2 a2)
| Templated constructor with 2 arguments.
template<typename A1 >
| extends3 (A1 a1)
| Templated constructor with 1 argument.
| extends3 ()
| 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 | ~extends3 ()
| Virtual destructor.
Public Member Functions inherited from extend_interfaces3< I1, I2, I3 >
virtual | ~extend_interfaces3 ()
| Virtual destructor.

## Detailed Description

### template<typename BASE, typename I1, typename I2, typename I3>
struct extends3< BASE, I1, I2, I3 >

Base class used to extend a class implementing other interfaces.

Version for three interfaces.

Author
  Marco Clemencic

Definition at line 140 of file extends.h.

## Member Typedef Documentation

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

typedef extends3 extends3< BASE, I1, I2, I3 >::base_class

Typedef to this class.

Definition at line 142 of file extends.h.

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

typedef extend_interfaces3<I1,I2,I3> extends3< BASE, I1, I2, I3 >::extend_interfaces_base

Typedef to the base of this class.

Definition at line 144 of file extends.h.

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

typedef extend_interfaces_base::ext_iids extends3< BASE, I1, I2, I3 >::interfaces

MPL set of all the implemented interfaces.

Definition at line 147 of file extends.h.

## Constructor & Destructor Documentation

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

extends3< BASE, I1, I2, I3 >::extends3 | ( | A1 | a1,
|  | A2 | a2,
|  | A3 | a3
| ) |  |
| inline

Templated constructor with 3 arguments.

Definition at line 151 of file extends.h.

: BASE(a1,a2,a3){}
template<typename BASE, typename I1, typename I2, typename I3>
template<typename A1 , typename A2 >

extends3< BASE, I1, I2, I3 >::extends3 | ( | A1 | a1,
|  | A2 | a2
| ) |  |
| inline

Templated constructor with 2 arguments.

Definition at line 153 of file extends.h.

: BASE(a1, a2){}
template<typename BASE, typename I1, typename I2, typename I3>
template<typename A1 >

extends3< BASE, I1, I2, I3 >::extends3 | ( | A1 | a1 | ) |
| inline

Templated constructor with 1 argument.

Definition at line 155 of file extends.h.

: BASE(a1){}
template<typename BASE, typename I1, typename I2, typename I3>

extends3< BASE, I1, I2, I3 >::extends3 | ( |  | ) |
| inline

Default constructor.

Definition at line 157 of file extends.h.

: BASE(){}
template<typename BASE, typename I1, typename I2, typename I3>

virtual extends3< BASE, I1, I2, I3 >::~extends3 | ( |  | ) |
| inline virtual

Virtual destructor.

Definition at line 198 of file extends.h.

{}

## Member Function Documentation

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

virtual std::vector<std::string> extends3< BASE, I1, I2, I3 >::getInterfaceNames | ( |  | ) | const
| inline virtual

Implementation of IInterface::getInterfaceNames.

Definition at line 188 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, typename I3>

virtual void* extends3< BASE, I1, I2, I3 >::i_cast | ( | const InterfaceID & | tid | ) | const
| inline virtual

Implementation of IInterface::i_cast.

Definition at line 160 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, typename I3>

virtual StatusCode extends3< BASE, I1, I2, I3 >::queryInterface | ( | const InterfaceID & | ti,
|  | void ** | pp
| ) |  |
| inline virtual

Implementation of IInterface::queryInterface.

Definition at line 173 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_v25r0/GaudiKernel/GaudiKernel/extends.h