The Gaudi Framework  v30r3 (a5ef0a68)
extends< BASE, Interfaces > Class Template Reference

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

#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. More...
 
using extend_interfaces_base = extend_interfaces< Interfaces... >
 Typedef to the base of this class. More...
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
 take union of the ext_iids of all Interfaces... More...
 

Public Member Functions

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

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 10 of file extends.h.

Member Typedef Documentation

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

Typedef to this class.

Definition at line 15 of file extends.h.

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 17 of file extends.h.

Member Function Documentation

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

Implementation of IInterface::getInterfaceNames.

Definition at line 42 of file extends.h.

43  {
44  using iids = typename extend_interfaces_base::ext_iids;
45  auto vb = BASE::getInterfaceNames();
46  auto vi = Gaudi::getInterfaceNames( iids{} );
47  // start with base, and move the rest...
48  vb.insert( vb.end(), std::make_move_iterator( vi.begin() ), std::make_move_iterator( vi.end() ) );
49  return vb;
50  }
typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type ext_iids
take union of the ext_iids of all Interfaces...
T make_move_iterator(T...args)
T insert(T...args)
std::vector< std::string > getInterfaceNames(Gaudi::interface_list< Is... >)
Definition: IInterface.h:206
template<typename BASE, typename... Interfaces>
void* extends< BASE, Interfaces >::i_cast ( const InterfaceID tid) const
inlineoverride

Implementation of IInterface::i_cast.

Definition at line 22 of file extends.h.

23  {
24  using iids = typename extend_interfaces_base::ext_iids;
25  void* ptr = Gaudi::iid_cast( tid, iids{}, this );
26  return ptr ? ptr : BASE::i_cast( tid );
27  }
typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type ext_iids
take union of the ext_iids of all Interfaces...
void * iid_cast(const InterfaceID &tid, Gaudi::interface_list< Is... >, P *ptr)
Definition: IInterface.h:212
template<typename BASE, typename... Interfaces>
StatusCode extends< BASE, Interfaces >::queryInterface ( const InterfaceID ti,
void **  pp 
)
inlineoverride

Implementation of IInterface::queryInterface.

Definition at line 30 of file extends.h.

31  {
32  if ( !pp ) return StatusCode::FAILURE;
33  using iids = typename extend_interfaces_base::ext_iids;
34  *pp = Gaudi::iid_cast( ti, iids{}, this );
35  // if cast failed, try the base class
36  if ( !*pp ) return BASE::queryInterface( ti, pp );
37  this->addRef();
38  return StatusCode::SUCCESS;
39  }
constexpr static const auto FAILURE
Definition: StatusCode.h:88
typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type ext_iids
take union of the ext_iids of all Interfaces...
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
StatusCode queryInterface(const InterfaceID &iid, void **pinterface) override
void * iid_cast(const InterfaceID &tid, Gaudi::interface_list< Is... >, P *ptr)
Definition: IInterface.h:212

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