All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
extend_interfaces.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_EXTEND_INTERFACES_H
2 #define GAUDIKERNEL_EXTEND_INTERFACES_H
3 
5 
6 // -----------------------------------------------------------------------------
7 // Interface extension classes
8 // -----------------------------------------------------------------------------
12 template <typename I1>
13 struct GAUDI_API extend_interfaces1: virtual public I1 {
14 #ifndef __GCCXML__
15  typedef typename I1::iid::iids::type ext_iids;
17 #endif
18  virtual ~extend_interfaces1() {}
20 };
21 
25 template <typename I1, typename I2>
26 struct GAUDI_API extend_interfaces2: virtual public I1, virtual public I2 {
27 #ifndef __GCCXML__
28  typedef typename mpl::fold<
30  typename I1::iid::iids::type,
31  typename I2::iid::iids::type,
32  mpl::insert<mpl::_1,mpl::_2>
34 #endif
35  virtual ~extend_interfaces2() {}
37 };
38 
42 template <typename I1, typename I2, typename I3>
43 struct GAUDI_API extend_interfaces3: virtual public I1,
44  virtual public I2,
45  virtual public I3 {
46 #ifndef __GCCXML__
47  typedef typename mpl::fold<
49  typename I1::iid::iids::type,
50  typename mpl::fold<
51  typename I2::iid::iids::type,
52  typename I3::iid::iids::type,
53  mpl::insert<mpl::_1,mpl::_2>
54  >::type,
55  mpl::insert<mpl::_1,mpl::_2>
57 #endif
58  virtual ~extend_interfaces3() {}
60 };
61 
65 template <typename I1, typename I2, typename I3, typename I4>
66 struct GAUDI_API extend_interfaces4: virtual public I1,
67  virtual public I2,
68  virtual public I3,
69  virtual public I4 {
70 #ifndef __GCCXML__
71  typedef typename mpl::fold<
73  typename I1::iid::iids::type,
74  typename mpl::fold<
75  typename I2::iid::iids::type,
76  typename mpl::fold<
77  typename I3::iid::iids::type,
78  typename I4::iid::iids::type,
79  mpl::insert<mpl::_1,mpl::_2>
80  >::type,
81  mpl::insert<mpl::_1,mpl::_2>
82  >::type,
83  mpl::insert<mpl::_1,mpl::_2>
85 #endif
86  virtual ~extend_interfaces4() {}
88 };
89 
90 
91 #endif
Base class to be used to extend an interface.
Base class to be used to extend an interface.
mpl::fold< typename I1::iid::iids::type, typename I2::iid::iids::type, mpl::insert< mpl::_1, mpl::_2 > >::type ext_iids
MPL set of interfaces extended by this one.
Base class to be used to extend an interface.
string type
Definition: gaudirun.py:126
I1::iid::iids::type ext_iids
MPL set of interfaces extended by this one.
mpl::fold< typename I1::iid::iids::type, typename mpl::fold< typename I2::iid::iids::type, typename mpl::fold< typename I3::iid::iids::type, typename I4::iid::iids::type, mpl::insert< mpl::_1, mpl::_2 > >::type, mpl::insert< mpl::_1, mpl::_2 > >::type, mpl::insert< mpl::_1, mpl::_2 > >::type ext_iids
MPL set of interfaces extended by this one.
Base class to be used to extend an interface.
#define GAUDI_API
Definition: Kernel.h:108
mpl::fold< typename I1::iid::iids::type, typename mpl::fold< typename I2::iid::iids::type, typename I3::iid::iids::type, mpl::insert< mpl::_1, mpl::_2 > >::type, mpl::insert< mpl::_1, mpl::_2 > >::type ext_iids
MPL set of interfaces extended by this one.