| # Gaudi Framework, version v21r10p1 |

Home |  | Generated: 29 Jul 2010

# 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 // Interface extension classes
    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