Line data Source code
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 *) () BOOST_BIND_NOEXCEPT, _bi::list0>
17 : BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) () BOOST_BIND_NOEXCEPT)
18 : {
19 : typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) () BOOST_BIND_NOEXCEPT;
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) BOOST_BIND_NOEXCEPT, typename _bi::list_av_1<A1>::type>
26 : BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1) BOOST_BIND_NOEXCEPT, A1 a1)
27 : {
28 : typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1) BOOST_BIND_NOEXCEPT;
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) BOOST_BIND_NOEXCEPT, typename _bi::list_av_2<A1, A2>::type>
35 : BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2)
36 : {
37 : typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2) BOOST_BIND_NOEXCEPT;
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) BOOST_BIND_NOEXCEPT, typename _bi::list_av_3<A1, A2, A3>::type>
46 2394510 : BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3)
47 : {
48 : typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3) BOOST_BIND_NOEXCEPT;
49 : typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
50 9578040 : 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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
58 : {
59 : typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4) BOOST_BIND_NOEXCEPT;
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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT;
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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT;
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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT;
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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT;
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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT, 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) BOOST_BIND_NOEXCEPT;
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 : }
|