The Gaudi Framework  master (82fdf313)
Loading...
Searching...
No Matches
extend_interfaces.h
Go to the documentation of this file.
1/***********************************************************************************\
2* (c) Copyright 1998-2025 CERN for the benefit of the LHCb and ATLAS collaborations *
3* *
4* This software is distributed under the terms of the Apache version 2 licence, *
5* copied verbatim in the file "LICENSE". *
6* *
7* In applying this licence, CERN does not waive the privileges and immunities *
8* granted to it by virtue of its status as an Intergovernmental Organization *
9* or submit itself to any jurisdiction. *
10\***********************************************************************************/
11#pragma once
12
13template <typename... Interfaces>
15
17
18// -----------------------------------------------------------------------------
19// Interface extension classes
20// -----------------------------------------------------------------------------
22template <typename... Interfaces>
23struct GAUDI_API extend_interfaces : virtual public Interfaces... {
25 using ext_iids = typename Gaudi::interface_list_cat<typename Interfaces::ext_iids...>::type;
26
27private:
28 // hide interfaceID from the interfaces we inherit from to avoid that it leaks in concrete implementations
29 static inline const InterfaceID& interfaceID() { return IInterface::interfaceID(); }
30};
31
32template <typename I1>
34template <typename I1, typename I2>
36template <typename I1, typename I2, typename I3>
38template <typename I1, typename I2, typename I3, typename I4>
#define GAUDI_API
Definition Kernel.h:49
static const InterfaceID & interfaceID()
Return an instance of InterfaceID identifying the interface.
Definition IInterface.h:234
Interface ID class.
Definition IInterface.h:38
extend_interfaces< I1, I2, I3 > extend_interfaces3
extend_interfaces< I1, I2, I3, I4 > extend_interfaces4
extend_interfaces< I1 > extend_interfaces1
extend_interfaces< I1, I2 > extend_interfaces2
Base class to be used to extend an interface.
typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type ext_iids
take union of the ext_iids of all Interfaces...
static const InterfaceID & interfaceID()