| The Gaudi Framework v28r2p1 (f1a77ff4)

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

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

Public Types | Public Member Functions | List of all members
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 >:
[legend]
Collaboration diagram for extends< BASE, Interfaces >:
[legend]

## 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::string > | getInterfaceNames () const override
| Implementation of IInterface::getInterfaceNames. More...
| ~extends () override=default
| Virtual destructor. More...
Public Member Functions inherited from extend_interfaces< Interfaces... >
| ~extend_interfaces () override=default
| Virtual destructor. 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 14 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 16 of file extends.h.

## Constructor & Destructor Documentation

template<typename BASE, typename... Interfaces>

extends< BASE, Interfaces >::~extends | ( |  | ) |
| override default

Virtual destructor.

## Member Function Documentation

template<typename BASE, typename... Interfaces>

std::vector<std::string> extends< BASE, Interfaces >::getInterfaceNames | ( |  | ) | const
| inline override

Implementation of IInterface::getInterfaceNames.

Definition at line 39 of file extends.h.

39 {
40 using iids = typename extend_interfaces_base::ext_iids;
41 auto vb = BASE::getInterfaceNames();
42 auto vi = Gaudi::getInterfaceNames( iids{} );
43 // start with base, and move the rest...
44 vb.insert( vb.end(),
45 std::make_move_iterator(vi.begin()),
46 std::make_move_iterator(vi.end()) );
47 return vb;
48 }
extend_interfaces< Interfaces... >::ext_iids
typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type ext_iids
take union of the ext_iids of all Interfaces...
Definition: extend_interfaces.h:14
std::make_move_iterator
T make_move_iterator(T...args)
std::vector::insert
T insert(T...args)
Gaudi::getInterfaceNames
std::vector< std::string > getInterfaceNames(Gaudi::interface_list< Is... >)
Definition: IInterface.h:177
template<typename BASE, typename... Interfaces>

void* extends< BASE, Interfaces >::i_cast | ( | const InterfaceID & | tid | ) | const
| inline override

Implementation of IInterface::i_cast.

Definition at line 21 of file extends.h.

21 {
22 using iids = typename extend_interfaces_base::ext_iids;
23 void *ptr = Gaudi::iid_cast(tid, iids{}, this);
24 return ptr ? ptr : BASE::i_cast(tid);
25 }
extend_interfaces< Interfaces... >::ext_iids
typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type ext_iids
take union of the ext_iids of all Interfaces...
Definition: extend_interfaces.h:14
Gaudi::iid_cast
void * iid_cast(const InterfaceID &tid, Gaudi::interface_list< Is... >, P *ptr)
Definition: IInterface.h:182
template<typename BASE, typename... Interfaces>

StatusCode extends< BASE, Interfaces >::queryInterface | ( | const InterfaceID & | ti,
|  | void ** | pp
| ) |  |
| inline override

Implementation of IInterface::queryInterface.

Definition at line 28 of file extends.h.

28 {
29 if (!pp) return StatusCode::FAILURE;
30 using iids = typename extend_interfaces_base::ext_iids;
31 *pp = Gaudi::iid_cast(ti,iids{},this);
32 // if cast failed, try the base class
33 if (!*pp) return BASE::queryInterface(ti,pp);
34 this->addRef();
35 return StatusCode::SUCCESS;
36 }
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode::FAILURE
Definition: StatusCode.h:29
extend_interfaces< Interfaces... >::ext_iids
typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type ext_iids
take union of the ext_iids of all Interfaces...
Definition: extend_interfaces.h:14
compareOutputFiles.pp
pp
Definition: compareOutputFiles.py:417
queryInterface
StatusCode queryInterface(const InterfaceID &iid, void **pinterface) override
Gaudi::iid_cast
void * iid_cast(const InterfaceID &tid, Gaudi::interface_list< Is... >, P *ptr)
Definition: IInterface.h:182

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

- GaudiKernel/GaudiKernel/extends.h