| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

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

- File List
- File Members

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
4 #include "GaudiKernel/IInterface.h"
5
6 // -----------------------------------------------------------------------------
7 // Interface extension classes
8 // -----------------------------------------------------------------------------
12 template <typename I1>
13 struct GAUDI_API extend_interfaces1: virtual public I1 {
14 #ifndef __GCCXML__
15
16 typedef typename I1::iid::iids::type ext_iids;
17 #endif
18
19 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
29 typedef typename mpl::fold<
30 typename I1::iid::iids::type,
31 typename I2::iid::iids::type,
32 mpl::insert<mpl::_1,mpl::_2>
33 >::type ext_iids;
34 #endif
35
36 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
48 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>
56 >::type ext_iids;
57 #endif
58
59 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
72 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>
84 >::type ext_iids;
85 #endif
86
87 virtual ~extend_interfaces4() {}
88 };
89
90
91 #endif