Gaudi Framework, version v21r9

Home   Generated: 3 May 2010

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 >:

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

Collaboration graph
[legend]

List of all members.

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 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 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::stringgetInterfaceNames () const
 Implementation of IInterface::getInterfaceNames.
virtual ~extends3 ()
 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.

00151 : 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.

00153 : 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.

00155 : 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.

00157 : 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.

00198 {}


Member Function Documentation

template<typename BASE, typename I1, typename I2, typename I3>
virtual void* extends3< BASE, I1, I2, I3 >::i_cast ( const std::type_info tid  )  const [inline, virtual]

Implementation of IInterface::i_cast.

Definition at line 160 of file extends.h.

00160                                                       {
00161     void *ptr = 0;
00162 #ifndef __GCCXML__
00163     check_cast<base_class> caster(this,tid,ptr);
00164     mpl::for_each<interfaces>(caster);
00165 #endif
00166     if (!ptr) {
00167       ptr = BASE::i_cast(tid);
00168     }
00169     return ptr;
00170   }

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.

00173                                                                      {
00174     if (!pp) return StatusCode::FAILURE;
00175     *pp = 0;
00176 #ifndef __GCCXML__
00177     interfaceMatch<base_class> matcher(this,ti,*pp);
00178     mpl::for_each<interfaces>(matcher);
00179     if (!*pp) { // cast failed, try the base class
00180       return BASE::queryInterface(ti,pp);
00181     }
00182     this->addRef();
00183 #endif
00184     return StatusCode::SUCCESS;
00185   }

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.

00188                                                          {
00189     std::vector<std::string> v = BASE::getInterfaceNames(); // start from the base
00190 #ifndef __GCCXML__
00191     AppendInterfaceName appender(v);
00192     mpl::for_each<interfaces>(appender);
00193 #endif
00194     return v;
00195   }


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

Generated at Mon May 3 12:24:16 2010 for Gaudi Framework, version v21r9 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004