/src/boost/boost/bind/detail/bind_cc.hpp
Line | Count | Source (jump to first uncovered line) |
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, typename _bi::list_av<>::type> |
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 typename _bi::list_av<>::type 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<A1>::type> |
26 | | BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1) BOOST_BIND_NOEXCEPT, A1 a1) |
27 | 0 | { |
28 | 0 | typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1) BOOST_BIND_NOEXCEPT; |
29 | 0 | typedef typename _bi::list_av<A1>::type list_type; |
30 | 0 | return _bi::bind_t<R, F, list_type> (f, list_type(a1)); |
31 | 0 | } |
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<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<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<A1, A2, A3>::type> |
46 | | 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<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) BOOST_BIND_NOEXCEPT, typename _bi::list_av<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<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<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<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<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<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<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<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<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<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<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<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 | | } |