[857] | 1 | //
|
---|
| 2 | // bind/bind_cc.hpp - support for different calling conventions
|
---|
| 3 | //
|
---|
| 4 | // Do not include this header directly.
|
---|
| 5 | //
|
---|
| 6 | // Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
|
---|
| 7 | //
|
---|
| 8 | // Distributed under the Boost Software License, Version 1.0. (See
|
---|
| 9 | // accompanying file LICENSE_1_0.txt or copy at
|
---|
| 10 | // http://www.boost.org/LICENSE_1_0.txt)
|
---|
| 11 | //
|
---|
| 12 | // See http://www.boost.org/libs/bind/bind.html for documentation.
|
---|
| 13 | //
|
---|
| 14 |
|
---|
| 15 | template<class R>
|
---|
| 16 | _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (), _bi::list0>
|
---|
| 17 | BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) ())
|
---|
| 18 | {
|
---|
| 19 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) ();
|
---|
| 20 | typedef _bi::list0 list_type;
|
---|
| 21 | return _bi::bind_t<R, F, list_type> (f, list_type());
|
---|
| 22 | }
|
---|
| 23 |
|
---|
| 24 | template<class R, class B1, class A1>
|
---|
| 25 | _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1), typename _bi::list_av_1<A1>::type>
|
---|
| 26 | BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1), A1 a1)
|
---|
| 27 | {
|
---|
| 28 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1);
|
---|
| 29 | typedef typename _bi::list_av_1<A1>::type list_type;
|
---|
| 30 | return _bi::bind_t<R, F, list_type> (f, list_type(a1));
|
---|
| 31 | }
|
---|
| 32 |
|
---|
| 33 | template<class R, class B1, class B2, class A1, class A2>
|
---|
| 34 | _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2), typename _bi::list_av_2<A1, A2>::type>
|
---|
| 35 | BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2), A1 a1, A2 a2)
|
---|
| 36 | {
|
---|
| 37 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2);
|
---|
| 38 | typedef typename _bi::list_av_2<A1, A2>::type list_type;
|
---|
| 39 | return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
|
---|
| 40 | }
|
---|
| 41 |
|
---|
| 42 | template<class R,
|
---|
| 43 | class B1, class B2, class B3,
|
---|
| 44 | class A1, class A2, class A3>
|
---|
| 45 | _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3), typename _bi::list_av_3<A1, A2, A3>::type>
|
---|
| 46 | BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3), A1 a1, A2 a2, A3 a3)
|
---|
| 47 | {
|
---|
| 48 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3);
|
---|
| 49 | typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
|
---|
| 50 | return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
|
---|
| 51 | }
|
---|
| 52 |
|
---|
| 53 | template<class R,
|
---|
| 54 | class B1, class B2, class B3, class B4,
|
---|
| 55 | class A1, class A2, class A3, class A4>
|
---|
| 56 | _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>
|
---|
| 57 | BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4)
|
---|
| 58 | {
|
---|
| 59 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4);
|
---|
| 60 | typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
|
---|
| 61 | return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
|
---|
| 62 | }
|
---|
| 63 |
|
---|
| 64 | template<class R,
|
---|
| 65 | class B1, class B2, class B3, class B4, class B5,
|
---|
| 66 | class A1, class A2, class A3, class A4, class A5>
|
---|
| 67 | _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>
|
---|
| 68 | 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)
|
---|
| 69 | {
|
---|
| 70 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5);
|
---|
| 71 | typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
|
---|
| 72 | return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
|
---|
| 73 | }
|
---|
| 74 |
|
---|
| 75 | template<class R,
|
---|
| 76 | class B1, class B2, class B3, class B4, class B5, class B6,
|
---|
| 77 | class A1, class A2, class A3, class A4, class A5, class A6>
|
---|
| 78 | _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>
|
---|
| 79 | 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)
|
---|
| 80 | {
|
---|
| 81 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6);
|
---|
| 82 | typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
|
---|
| 83 | return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
|
---|
| 84 | }
|
---|
| 85 |
|
---|
| 86 | template<class R,
|
---|
| 87 | class B1, class B2, class B3, class B4, class B5, class B6, class B7,
|
---|
| 88 | class A1, class A2, class A3, class A4, class A5, class A6, class A7>
|
---|
| 89 | _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>
|
---|
| 90 | 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)
|
---|
| 91 | {
|
---|
| 92 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7);
|
---|
| 93 | typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
|
---|
| 94 | return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
|
---|
| 95 | }
|
---|
| 96 |
|
---|
| 97 | template<class R,
|
---|
| 98 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
|
---|
| 99 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
|
---|
| 100 | _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>
|
---|
| 101 | 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)
|
---|
| 102 | {
|
---|
| 103 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8);
|
---|
| 104 | typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
|
---|
| 105 | return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
|
---|
| 106 | }
|
---|
| 107 |
|
---|
| 108 | template<class R,
|
---|
| 109 | class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B9,
|
---|
| 110 | class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
|
---|
| 111 | _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>
|
---|
| 112 | 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)
|
---|
| 113 | {
|
---|
| 114 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8, B9);
|
---|
| 115 | typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
|
---|
| 116 | return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
|
---|
| 117 | }
|
---|