bind_cc.hpp

Go to the documentation of this file.
00001 //
00002 //  bind/bind_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 template<class R>
00016     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (), _bi::list0>
00017     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) ())
00018 {
00019     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) ();
00020     typedef _bi::list0 list_type;
00021     return _bi::bind_t<R, F, list_type> (f, list_type());
00022 }
00023 
00024 template<class R, class B1, class A1>
00025     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1), typename _bi::list_av_1<A1>::type>
00026     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1), A1 a1)
00027 {
00028     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1);
00029     typedef typename _bi::list_av_1<A1>::type list_type;
00030     return _bi::bind_t<R, F, list_type> (f, list_type(a1));
00031 }
00032 
00033 template<class R, class B1, class B2, class A1, class A2>
00034     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2), typename _bi::list_av_2<A1, A2>::type>
00035     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2), A1 a1, A2 a2)
00036 {
00037     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2);
00038     typedef typename _bi::list_av_2<A1, A2>::type list_type;
00039     return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
00040 }
00041 
00042 template<class R,
00043     class B1, class B2, class B3,
00044     class A1, class A2, class A3>
00045     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3), typename _bi::list_av_3<A1, A2, A3>::type>
00046     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3), A1 a1, A2 a2, A3 a3)
00047 {
00048     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3);
00049     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
00050     return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
00051 }
00052 
00053 template<class R,
00054     class B1, class B2, class B3, class B4,
00055     class A1, class A2, class A3, class A4>
00056     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4), typename _bi::list_av_4<A1, A2, A3, A4>::type>
00057     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4)
00058 {
00059     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4);
00060     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
00061     return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
00062 }
00063 
00064 template<class R,
00065     class B1, class B2, class B3, class B4, class B5,
00066     class A1, class A2, class A3, class A4, class A5>
00067     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5), typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
00068     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
00069 {
00070     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5);
00071     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
00072     return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
00073 }
00074 
00075 template<class R,
00076     class B1, class B2, class B3, class B4, class B5, class B6,
00077     class A1, class A2, class A3, class A4, class A5, class A6>
00078     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6), typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
00079     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
00080 {
00081     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6);
00082     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
00083     return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
00084 }
00085 
00086 template<class R,
00087     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
00088     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
00089     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7), typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
00090     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
00091 {
00092     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7);
00093     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
00094     return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
00095 }
00096 
00097 template<class R,
00098     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
00099     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
00100     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8), typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
00101     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *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)
00102 {
00103     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8);
00104     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
00105     return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
00106 }
00107 
00108 template<class R,
00109     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B9,
00110     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
00111     _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8, B9), typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
00112     BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8, B9), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
00113 {
00114     typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8, B9);
00115     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
00116     return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
00117 }

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