Ugly, not-to-be-pushed sucking in of all of Boost to get windows to work.
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / bcc551 / basic_bind.hpp
1
2 // Copyright Peter Dimov 2001
3 // Copyright Aleksey Gurtovoy 2001-2004
4 //
5 // Distributed under the Boost Software License, Version 1.0. 
6 // (See accompanying file LICENSE_1_0.txt or copy at 
7 // http://www.boost.org/LICENSE_1_0.txt)
8 //
9
10 // Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
11 // -- DO NOT modify by hand!
12
13 namespace boost { namespace mpl {
14
15 namespace aux {
16
17 template<
18       typename T, typename U1, typename U2, typename U3, typename U4
19     , typename U5
20     >
21 struct resolve_bind_arg
22 {
23     typedef T type;
24 };
25
26 template<
27       int N, typename U1, typename U2, typename U3, typename U4, typename U5
28     >
29 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
30 {
31     typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
32 };
33
34 } // namespace aux
35
36 template<
37       typename F
38     >
39 struct bind0
40 {
41     template<
42           typename U1 = na, typename U2 = na, typename U3 = na
43         , typename U4 = na, typename U5 = na
44         >
45     struct apply
46     {
47      private:
48         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
49
50      public:
51         typedef typename apply_wrap0<
52               f_
53             >::type type;
54
55     };
56 };
57
58 namespace aux {
59
60 template<
61       typename F, typename U1, typename U2, typename U3, typename U4
62     , typename U5
63     >
64 struct resolve_bind_arg<
65       bind0<F>, U1, U2, U3, U4, U5
66     >
67 {
68     typedef bind0<F> f_;
69     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
70 };
71
72 } // namespace aux
73
74 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
75 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
76
77 template<
78       typename F, typename T1
79     >
80 struct bind1
81 {
82     template<
83           typename U1 = na, typename U2 = na, typename U3 = na
84         , typename U4 = na, typename U5 = na
85         >
86     struct apply
87     {
88      private:
89         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
90         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
91
92      public:
93         typedef typename apply_wrap1<
94               f_
95             , typename t1::type
96             >::type type;
97
98     };
99 };
100
101 namespace aux {
102
103 template<
104       typename F, typename T1, typename U1, typename U2, typename U3
105     , typename U4, typename U5
106     >
107 struct resolve_bind_arg<
108       bind1< F,T1 >, U1, U2, U3, U4, U5
109     >
110 {
111     typedef bind1< F,T1 > f_;
112     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
113 };
114
115 } // namespace aux
116
117 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
118 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
119
120 template<
121       typename F, typename T1, typename T2
122     >
123 struct bind2
124 {
125     template<
126           typename U1 = na, typename U2 = na, typename U3 = na
127         , typename U4 = na, typename U5 = na
128         >
129     struct apply
130     {
131      private:
132         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
133         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
134         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
135
136      public:
137         typedef typename apply_wrap2<
138               f_
139             , typename t1::type, typename t2::type
140             >::type type;
141
142     };
143 };
144
145 namespace aux {
146
147 template<
148       typename F, typename T1, typename T2, typename U1, typename U2
149     , typename U3, typename U4, typename U5
150     >
151 struct resolve_bind_arg<
152       bind2< F,T1,T2 >, U1, U2, U3, U4, U5
153     >
154 {
155     typedef bind2< F,T1,T2 > f_;
156     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
157 };
158
159 } // namespace aux
160
161 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
162 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
163
164 template<
165       typename F, typename T1, typename T2, typename T3
166     >
167 struct bind3
168 {
169     template<
170           typename U1 = na, typename U2 = na, typename U3 = na
171         , typename U4 = na, typename U5 = na
172         >
173     struct apply
174     {
175      private:
176         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
177         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
178         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
179         typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
180
181      public:
182         typedef typename apply_wrap3<
183               f_
184             , typename t1::type, typename t2::type, typename t3::type
185             >::type type;
186
187     };
188 };
189
190 namespace aux {
191
192 template<
193       typename F, typename T1, typename T2, typename T3, typename U1
194     , typename U2, typename U3, typename U4, typename U5
195     >
196 struct resolve_bind_arg<
197       bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
198     >
199 {
200     typedef bind3< F,T1,T2,T3 > f_;
201     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
202 };
203
204 } // namespace aux
205
206 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
207 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
208
209 template<
210       typename F, typename T1, typename T2, typename T3, typename T4
211     >
212 struct bind4
213 {
214     template<
215           typename U1 = na, typename U2 = na, typename U3 = na
216         , typename U4 = na, typename U5 = na
217         >
218     struct apply
219     {
220      private:
221         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
222         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
223         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
224         typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
225         typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
226
227      public:
228         typedef typename apply_wrap4<
229               f_
230             , typename t1::type, typename t2::type, typename t3::type
231             , typename t4::type
232             >::type type;
233
234     };
235 };
236
237 namespace aux {
238
239 template<
240       typename F, typename T1, typename T2, typename T3, typename T4
241     , typename U1, typename U2, typename U3, typename U4, typename U5
242     >
243 struct resolve_bind_arg<
244       bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
245     >
246 {
247     typedef bind4< F,T1,T2,T3,T4 > f_;
248     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
249 };
250
251 } // namespace aux
252
253 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
254 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
255
256 template<
257       typename F, typename T1, typename T2, typename T3, typename T4
258     , typename T5
259     >
260 struct bind5
261 {
262     template<
263           typename U1 = na, typename U2 = na, typename U3 = na
264         , typename U4 = na, typename U5 = na
265         >
266     struct apply
267     {
268      private:
269         typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
270         typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
271         typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
272         typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
273         typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
274         typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
275
276      public:
277         typedef typename apply_wrap5<
278               f_
279             , typename t1::type, typename t2::type, typename t3::type
280             , typename t4::type, typename t5::type
281             >::type type;
282
283     };
284 };
285
286 namespace aux {
287
288 template<
289       typename F, typename T1, typename T2, typename T3, typename T4
290     , typename T5, typename U1, typename U2, typename U3, typename U4
291     , typename U5
292     >
293 struct resolve_bind_arg<
294       bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
295     >
296 {
297     typedef bind5< F,T1,T2,T3,T4,T5 > f_;
298     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
299 };
300
301 } // namespace aux
302
303 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
304 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
305 }}
306