Ugly, not-to-be-pushed sucking in of all of Boost to get windows to work.
[dyninst.git] / external / boost / bind / bind_mf_cc.hpp
1 //
2 //  bind/bind_mf_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 // 0
16
17 template<class R, class T,
18     class A1>
19     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
20     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
21 {
22     typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
23     typedef typename _bi::list_av_1<A1>::type list_type;
24     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
25 }
26
27 template<class R, class T,
28     class A1>
29     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
30     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
31 {
32     typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
33     typedef typename _bi::list_av_1<A1>::type list_type;
34     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
35 }
36
37 // 1
38
39 template<class R, class T,
40     class B1,
41     class A1, class A2>
42     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
43     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
44 {
45     typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
46     typedef typename _bi::list_av_2<A1, A2>::type list_type;
47     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
48 }
49
50 template<class R, class T,
51     class B1,
52     class A1, class A2>
53     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
54     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
55 {
56     typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
57     typedef typename _bi::list_av_2<A1, A2>::type list_type;
58     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
59 }
60
61 // 2
62
63 template<class R, class T,
64     class B1, class B2,
65     class A1, class A2, class A3>
66     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
67     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
68 {
69     typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
70     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
71     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
72 }
73
74 template<class R, class T,
75     class B1, class B2,
76     class A1, class A2, class A3>
77     _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
78     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
79 {
80     typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
81     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
82     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
83 }
84
85 // 3
86
87 template<class R, class T,
88     class B1, class B2, class B3,
89     class A1, class A2, class A3, class A4>
90     _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>
91     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
92 {
93     typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
94     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
95     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
96 }
97
98 template<class R, class T,
99     class B1, class B2, class B3,
100     class A1, class A2, class A3, class A4>
101     _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>
102     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
103 {
104     typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
105     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
106     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
107 }
108
109 // 4
110
111 template<class R, class T,
112     class B1, class B2, class B3, class B4,
113     class A1, class A2, class A3, class A4, class A5>
114     _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>
115     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
116 {
117     typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
118     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
119     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
120 }
121
122 template<class R, class T,
123     class B1, class B2, class B3, class B4,
124     class A1, class A2, class A3, class A4, class A5>
125     _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>
126     BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
127 {
128     typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
129     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
130     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
131 }
132
133 // 5
134
135 template<class R, class T,
136     class B1, class B2, class B3, class B4, class B5,
137     class A1, class A2, class A3, class A4, class A5, class A6>
138     _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>
139     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)
140 {
141     typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
142     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
143     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
144 }
145
146 template<class R, class T,
147     class B1, class B2, class B3, class B4, class B5,
148     class A1, class A2, class A3, class A4, class A5, class A6>
149     _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>
150     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)
151 {
152     typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
153     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
154     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
155 }
156
157 // 6
158
159 template<class R, class T,
160     class B1, class B2, class B3, class B4, class B5, class B6,
161     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
162     _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>
163     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)
164 {
165     typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
166     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
167     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
168 }
169
170 template<class R, class T,
171     class B1, class B2, class B3, class B4, class B5, class B6,
172     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
173     _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>
174     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)
175 {
176     typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
177     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
178     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
179 }
180
181 // 7
182
183 template<class R, class T,
184     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
185     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
186     _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>
187     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)
188 {
189     typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
190     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
191     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
192 }
193
194 template<class R, class T,
195     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
196     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
197     _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>
198     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)
199 {
200     typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
201     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
202     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
203 }
204
205 // 8
206
207 template<class R, class T,
208     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
209     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
210     _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>
211     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)
212 {
213     typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
214     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
215     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
216 }
217
218 template<class R, class T,
219     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
220     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
221     _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>
222     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)
223 {
224     typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
225     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
226     return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
227 }