The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
extends< BASE, Interfaces > Class Template Reference

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

#include </builds/gaudi/Gaudi/GaudiKernel/include/GaudiKernel/extends.h>

Inheritance diagram for extends< BASE, Interfaces >:
Collaboration diagram for extends< BASE, Interfaces >:

Public Types

using base_class = extends
 Typedef to this class.
 
using extend_interfaces_base = extend_interfaces<Interfaces...>
 Typedef to the base of this class.
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids
 take union of the ext_iids of all Interfaces...
 

Public Member Functions

void const * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast.
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface.
 
std::vector< std::string > getInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames.
 

Detailed Description

template<typename BASE, typename... Interfaces>
class extends< BASE, Interfaces >

Base class used to extend a class implementing other interfaces.

Version for one interface.

Author
Marco Clemencic

Definition at line 19 of file extends.h.

Member Typedef Documentation

◆ base_class

template<typename BASE, typename... Interfaces>
using extends< BASE, Interfaces >::base_class = extends

Typedef to this class.

Definition at line 23 of file extends.h.

◆ extend_interfaces_base

template<typename BASE, typename... Interfaces>
using extends< BASE, Interfaces >::extend_interfaces_base = extend_interfaces<Interfaces...>

Typedef to the base of this class.

Definition at line 25 of file extends.h.

Member Function Documentation

◆ getInterfaceNames()

template<typename BASE, typename... Interfaces>
std::vector< std::string > extends< BASE, Interfaces >::getInterfaceNames ( ) const
inlineoverride

Implementation of IInterface::getInterfaceNames.

Definition at line 48 of file extends.h.

48 {
52 // start with base, and move the rest...
53 vb.insert( vb.end(), std::make_move_iterator( vi.begin() ), std::make_move_iterator( vi.end() ) );
54 return vb;
55 }
Base class used to extend a class implementing other interfaces.
Definition extends.h:19
std::vector< std::string > getInterfaceNames(Gaudi::interface_list< Is... >)
Definition IInterface.h:158
typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type ext_iids

◆ i_cast()

template<typename BASE, typename... Interfaces>
void const * extends< BASE, Interfaces >::i_cast ( const InterfaceID & tid) const
inlineoverride

Implementation of IInterface::i_cast.

Definition at line 30 of file extends.h.

30 {
32 void* ptr = Gaudi::iid_cast( tid, iids{}, this );
33 return ptr ? ptr : BASE::i_cast( tid );
34 }
void * iid_cast(const InterfaceID &tid, Gaudi::interface_list< Is... >, P *ptr)
Definition IInterface.h:163

◆ queryInterface()

template<typename BASE, typename... Interfaces>
StatusCode extends< BASE, Interfaces >::queryInterface ( const InterfaceID & ti,
void ** pp )
inlineoverride

Implementation of IInterface::queryInterface.

Definition at line 37 of file extends.h.

37 {
38 if ( !pp ) return StatusCode::FAILURE;
40 *pp = Gaudi::iid_cast( ti, iids{}, this );
41 // if cast failed, try the base class
42 if ( !*pp ) return BASE::queryInterface( ti, pp );
43 this->addRef();
45 }

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