1 #ifndef GAUDIKERNEL_EXTENDS_H
2 #define GAUDIKERNEL_EXTENDS_H
4 #include "GaudiKernel/IInterface.h"
9 template <
typename BASE,
typename I1>
17 typedef typename extend_interfaces_base::ext_iids interfaces;
21 template <
typename A1,
typename A2,
typename A3>
extends1(A1 a1, A2 a2, A3 a3): BASE(a1,a2,a3){}
23 template <
typename A1,
typename A2>
extends1(A1 a1, A2 a2): BASE(a1, a2){}
25 template <
typename A1>
extends1(A1 a1): BASE(a1){}
30 virtual void *i_cast(
const InterfaceID &tid)
const {
34 mpl::for_each<interfaces>(matcher);
37 ptr = BASE::i_cast(tid);
48 mpl::for_each<interfaces>(matcher);
50 return BASE::queryInterface(ti,pp);
58 virtual std::vector<std::string> getInterfaceNames()
const {
59 std::vector<std::string> v = BASE::getInterfaceNames();
62 mpl::for_each<interfaces>(appender);
74 template <
typename BASE,
typename I1,
typename I2>
82 typedef typename extend_interfaces_base::ext_iids interfaces;
86 template <
typename A1,
typename A2,
typename A3>
extends2(A1 a1, A2 a2, A3 a3): BASE(a1,a2,a3){}
88 template <
typename A1,
typename A2>
extends2(A1 a1, A2 a2): BASE(a1, a2){}
90 template <
typename A1>
extends2(A1 a1): BASE(a1){}
95 virtual void *i_cast(
const InterfaceID &tid)
const {
99 mpl::for_each<interfaces>(matcher);
102 ptr = BASE::i_cast(tid);
113 mpl::for_each<interfaces>(matcher);
115 return BASE::queryInterface(ti,pp);
123 virtual std::vector<std::string> getInterfaceNames()
const {
124 std::vector<std::string> v = BASE::getInterfaceNames();
127 mpl::for_each<interfaces>(appender);
139 template <
typename BASE,
typename I1,
typename I2,
typename I3>
147 typedef typename extend_interfaces_base::ext_iids interfaces;
151 template <
typename A1,
typename A2,
typename A3>
extends3(A1 a1, A2 a2, A3 a3): BASE(a1,a2,a3){}
153 template <
typename A1,
typename A2>
extends3(A1 a1, A2 a2): BASE(a1, a2){}
155 template <
typename A1>
extends3(A1 a1): BASE(a1){}
160 virtual void *i_cast(
const InterfaceID &tid)
const {
164 mpl::for_each<interfaces>(matcher);
167 ptr = BASE::i_cast(tid);
178 mpl::for_each<interfaces>(matcher);
180 return BASE::queryInterface(ti,pp);
188 virtual std::vector<std::string> getInterfaceNames()
const {
189 std::vector<std::string> v = BASE::getInterfaceNames();
192 mpl::for_each<interfaces>(appender);