extend_interfaces.h
Go to the documentation of this file.00001 #ifndef GAUDIKERNEL_EXTEND_INTERFACES_H
00002 #define GAUDIKERNEL_EXTEND_INTERFACES_H
00003
00004 #include "GaudiKernel/IInterface.h"
00005
00006
00007
00008
00012 template <typename I1>
00013 struct GAUDI_API extend_interfaces1: virtual public I1 {
00014 #ifndef __GCCXML__
00016 typedef typename I1::iid::iids::type ext_iids;
00017 #endif
00019 virtual ~extend_interfaces1() {}
00020 };
00021
00025 template <typename I1, typename I2>
00026 struct GAUDI_API extend_interfaces2: virtual public I1, virtual public I2 {
00027 #ifndef __GCCXML__
00029 typedef typename mpl::fold<
00030 typename I1::iid::iids::type,
00031 typename I2::iid::iids::type,
00032 mpl::insert<mpl::_1,mpl::_2>
00033 >::type ext_iids;
00034 #endif
00036 virtual ~extend_interfaces2() {}
00037 };
00038
00042 template <typename I1, typename I2, typename I3>
00043 struct GAUDI_API extend_interfaces3: virtual public I1,
00044 virtual public I2,
00045 virtual public I3 {
00046 #ifndef __GCCXML__
00048 typedef typename mpl::fold<
00049 typename I1::iid::iids::type,
00050 typename mpl::fold<
00051 typename I2::iid::iids::type,
00052 typename I3::iid::iids::type,
00053 mpl::insert<mpl::_1,mpl::_2>
00054 >::type,
00055 mpl::insert<mpl::_1,mpl::_2>
00056 >::type ext_iids;
00057 #endif
00059 virtual ~extend_interfaces3() {}
00060 };
00061
00065 template <typename I1, typename I2, typename I3, typename I4>
00066 struct GAUDI_API extend_interfaces4: virtual public I1,
00067 virtual public I2,
00068 virtual public I3,
00069 virtual public I4 {
00070 #ifndef __GCCXML__
00072 typedef typename mpl::fold<
00073 typename I1::iid::iids::type,
00074 typename mpl::fold<
00075 typename I2::iid::iids::type,
00076 typename mpl::fold<
00077 typename I3::iid::iids::type,
00078 typename I4::iid::iids::type,
00079 mpl::insert<mpl::_1,mpl::_2>
00080 >::type,
00081 mpl::insert<mpl::_1,mpl::_2>
00082 >::type,
00083 mpl::insert<mpl::_1,mpl::_2>
00084 >::type ext_iids;
00085 #endif
00087 virtual ~extend_interfaces4() {}
00088 };
00089
00090
00091 #endif