bind_mf_cc.hpp

Go to the documentation of this file.
00001 //
00002 //  bind/bind_mf_cc.hpp - support for different calling conventions
00003 //
00004 //  Do not include this header directly.
00005 //
00006 //  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
00007 //
00008 // Distributed under the Boost Software License, Version 1.0. (See
00009 // accompanying file LICENSE_1_0.txt or copy at
00010 // http://www.boost.org/LICENSE_1_0.txt)
00011 //
00012 //  See http://www.boost.org/libs/bind/bind.html for documentation.
00013 //
00014 
00015 // 0
00016 
00017 template<class R, class T,
00018     class A1>
00019     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
00020     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
00021 {
00022     typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
00023     typedef typename _bi::list_av_1<A1>::type list_type;
00024     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
00025 }
00026 
00027 template<class R, class T,
00028     class A1>
00029     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
00030     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
00031 {
00032     typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
00033     typedef typename _bi::list_av_1<A1>::type list_type;
00034     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
00035 }
00036 
00037 // 1
00038 
00039 template<class R, class T,
00040     class B1,
00041     class A1, class A2>
00042     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
00043     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
00044 {
00045     typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
00046     typedef typename _bi::list_av_2<A1, A2>::type list_type;
00047     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
00048 }
00049 
00050 template<class R, class T,
00051     class B1,
00052     class A1, class A2>
00053     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
00054     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
00055 {
00056     typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
00057     typedef typename _bi::list_av_2<A1, A2>::type list_type;
00058     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
00059 }
00060 
00061 // 2
00062 
00063 template<class R, class T,
00064     class B1, class B2,
00065     class A1, class A2, class A3>
00066     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
00067     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
00068 {
00069     typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
00070     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
00071     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
00072 }
00073 
00074 template<class R, class T,
00075     class B1, class B2,
00076     class A1, class A2, class A3>
00077     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
00078     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
00079 {
00080     typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
00081     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
00082     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
00083 }
00084 
00085 // 3
00086 
00087 template<class R, class T,
00088     class B1, class B2, class B3,
00089     class A1, class A2, class A3, class A4>
00090     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
00091     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
00092 {
00093     typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
00094     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
00095     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
00096 }
00097 
00098 template<class R, class T,
00099     class B1, class B2, class B3,
00100     class A1, class A2, class A3, class A4>
00101     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
00102     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
00103 {
00104     typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
00105     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
00106     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
00107 }
00108 
00109 // 4
00110 
00111 template<class R, class T,
00112     class B1, class B2, class B3, class B4,
00113     class A1, class A2, class A3, class A4, class A5>
00114     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
00115     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
00116 {
00117     typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
00118     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
00119     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
00120 }
00121 
00122 template<class R, class T,
00123     class B1, class B2, class B3, class B4,
00124     class A1, class A2, class A3, class A4, class A5>
00125     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
00126     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
00127 {
00128     typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
00129     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
00130     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
00131 }
00132 
00133 // 5
00134 
00135 template<class R, class T,
00136     class B1, class B2, class B3, class B4, class B5,
00137     class A1, class A2, class A3, class A4, class A5, class A6>
00138     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
00139     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
00140 {
00141     typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
00142     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
00143     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
00144 }
00145 
00146 template<class R, class T,
00147     class B1, class B2, class B3, class B4, class B5,
00148     class A1, class A2, class A3, class A4, class A5, class A6>
00149     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
00150     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
00151 {
00152     typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
00153     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
00154     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
00155 }
00156 
00157 // 6
00158 
00159 template<class R, class T,
00160     class B1, class B2, class B3, class B4, class B5, class B6,
00161     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
00162     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
00163     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
00164 {
00165     typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
00166     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
00167     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
00168 }
00169 
00170 template<class R, class T,
00171     class B1, class B2, class B3, class B4, class B5, class B6,
00172     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
00173     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
00174     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
00175 {
00176     typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
00177     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
00178     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
00179 }
00180 
00181 // 7
00182 
00183 template<class R, class T,
00184     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
00185     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
00186     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
00187     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
00188 {
00189     typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
00190     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
00191     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
00192 }
00193 
00194 template<class R, class T,
00195     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
00196     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
00197     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
00198     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
00199 {
00200     typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
00201     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
00202     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
00203 }
00204 
00205 // 8
00206 
00207 template<class R, class T,
00208     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
00209     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
00210     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
00211     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
00212 {
00213     typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
00214     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
00215     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
00216 }
00217 
00218 template<class R, class T,
00219     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
00220     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
00221     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
00222     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
00223 {
00224     typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
00225     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
00226     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
00227 }

Generated on Wed Jan 21 15:32:09 2009 for SystemC by  doxygen 1.5.5