More boost dependencies.
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / bcc / 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/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       typename T
28     , typename Arg
29     >
30 struct replace_unnamed_arg
31 {
32     typedef Arg next;
33     typedef T type;
34 };
35
36 template<
37       typename Arg
38     >
39 struct replace_unnamed_arg< arg< -1 >, Arg >
40 {
41     typedef typename Arg::next next;
42     typedef Arg type;
43 };
44
45 template<
46       int N, typename U1, typename U2, typename U3, typename U4, typename U5
47     >
48 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
49 {
50     typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
51 };
52
53 } // namespace aux
54
55 template<
56       typename F
57     >
58 struct bind0
59 {
60     template<
61           typename U1, typename U2, typename U3, typename U4, typename U5
62         >
63     struct apply
64     {
65      private:
66         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
67         typedef typename r0::type a0;
68         typedef typename r0::next n1;
69         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
70         ///
71      public:
72         typedef typename apply_wrap0<
73               f_
74             >::type type;
75
76     };
77 };
78
79 namespace aux {
80
81 template<
82       typename F, typename U1, typename U2, typename U3, typename U4
83     , typename U5
84     >
85 struct resolve_bind_arg<
86       bind0<F>, U1, U2, U3, U4, U5
87     >
88 {
89     typedef bind0<F> f_;
90     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
91 };
92
93 } // namespace aux
94
95 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
96 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
97
98 template<
99       typename F, typename T1
100     >
101 struct bind1
102 {
103     template<
104           typename U1, typename U2, typename U3, typename U4, typename U5
105         >
106     struct apply
107     {
108      private:
109         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
110         typedef typename r0::type a0;
111         typedef typename r0::next n1;
112         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
113         ///
114         typedef aux::replace_unnamed_arg< T1,n1 > r1;
115         typedef typename r1::type a1;
116         typedef typename r1::next n2;
117         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
118         ///
119      public:
120         typedef typename apply_wrap1<
121               f_
122             , typename t1::type
123             >::type type;
124
125     };
126 };
127
128 namespace aux {
129
130 template<
131       typename F, typename T1, typename U1, typename U2, typename U3
132     , typename U4, typename U5
133     >
134 struct resolve_bind_arg<
135       bind1< F,T1 >, U1, U2, U3, U4, U5
136     >
137 {
138     typedef bind1< F,T1 > f_;
139     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
140 };
141
142 } // namespace aux
143
144 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
145 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
146
147 template<
148       typename F, typename T1, typename T2
149     >
150 struct bind2
151 {
152     template<
153           typename U1, typename U2, typename U3, typename U4, typename U5
154         >
155     struct apply
156     {
157      private:
158         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
159         typedef typename r0::type a0;
160         typedef typename r0::next n1;
161         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
162         ///
163         typedef aux::replace_unnamed_arg< T1,n1 > r1;
164         typedef typename r1::type a1;
165         typedef typename r1::next n2;
166         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
167         ///
168         typedef aux::replace_unnamed_arg< T2,n2 > r2;
169         typedef typename r2::type a2;
170         typedef typename r2::next n3;
171         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
172         ///
173      public:
174         typedef typename apply_wrap2<
175               f_
176             , typename t1::type, typename t2::type
177             >::type type;
178
179     };
180 };
181
182 namespace aux {
183
184 template<
185       typename F, typename T1, typename T2, typename U1, typename U2
186     , typename U3, typename U4, typename U5
187     >
188 struct resolve_bind_arg<
189       bind2< F,T1,T2 >, U1, U2, U3, U4, U5
190     >
191 {
192     typedef bind2< F,T1,T2 > f_;
193     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
194 };
195
196 } // namespace aux
197
198 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
199 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
200
201 template<
202       typename F, typename T1, typename T2, typename T3
203     >
204 struct bind3
205 {
206     template<
207           typename U1, typename U2, typename U3, typename U4, typename U5
208         >
209     struct apply
210     {
211      private:
212         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
213         typedef typename r0::type a0;
214         typedef typename r0::next n1;
215         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
216         ///
217         typedef aux::replace_unnamed_arg< T1,n1 > r1;
218         typedef typename r1::type a1;
219         typedef typename r1::next n2;
220         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
221         ///
222         typedef aux::replace_unnamed_arg< T2,n2 > r2;
223         typedef typename r2::type a2;
224         typedef typename r2::next n3;
225         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
226         ///
227         typedef aux::replace_unnamed_arg< T3,n3 > r3;
228         typedef typename r3::type a3;
229         typedef typename r3::next n4;
230         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
231         ///
232      public:
233         typedef typename apply_wrap3<
234               f_
235             , typename t1::type, typename t2::type, typename t3::type
236             >::type type;
237
238     };
239 };
240
241 namespace aux {
242
243 template<
244       typename F, typename T1, typename T2, typename T3, typename U1
245     , typename U2, typename U3, typename U4, typename U5
246     >
247 struct resolve_bind_arg<
248       bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
249     >
250 {
251     typedef bind3< F,T1,T2,T3 > f_;
252     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
253 };
254
255 } // namespace aux
256
257 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
258 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
259
260 template<
261       typename F, typename T1, typename T2, typename T3, typename T4
262     >
263 struct bind4
264 {
265     template<
266           typename U1, typename U2, typename U3, typename U4, typename U5
267         >
268     struct apply
269     {
270      private:
271         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
272         typedef typename r0::type a0;
273         typedef typename r0::next n1;
274         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
275         ///
276         typedef aux::replace_unnamed_arg< T1,n1 > r1;
277         typedef typename r1::type a1;
278         typedef typename r1::next n2;
279         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
280         ///
281         typedef aux::replace_unnamed_arg< T2,n2 > r2;
282         typedef typename r2::type a2;
283         typedef typename r2::next n3;
284         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
285         ///
286         typedef aux::replace_unnamed_arg< T3,n3 > r3;
287         typedef typename r3::type a3;
288         typedef typename r3::next n4;
289         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
290         ///
291         typedef aux::replace_unnamed_arg< T4,n4 > r4;
292         typedef typename r4::type a4;
293         typedef typename r4::next n5;
294         typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
295         ///
296      public:
297         typedef typename apply_wrap4<
298               f_
299             , typename t1::type, typename t2::type, typename t3::type
300             , typename t4::type
301             >::type type;
302
303     };
304 };
305
306 namespace aux {
307
308 template<
309       typename F, typename T1, typename T2, typename T3, typename T4
310     , typename U1, typename U2, typename U3, typename U4, typename U5
311     >
312 struct resolve_bind_arg<
313       bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
314     >
315 {
316     typedef bind4< F,T1,T2,T3,T4 > f_;
317     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
318 };
319
320 } // namespace aux
321
322 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
323 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
324
325 template<
326       typename F, typename T1, typename T2, typename T3, typename T4
327     , typename T5
328     >
329 struct bind5
330 {
331     template<
332           typename U1, typename U2, typename U3, typename U4, typename U5
333         >
334     struct apply
335     {
336      private:
337         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
338         typedef typename r0::type a0;
339         typedef typename r0::next n1;
340         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
341         ///
342         typedef aux::replace_unnamed_arg< T1,n1 > r1;
343         typedef typename r1::type a1;
344         typedef typename r1::next n2;
345         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
346         ///
347         typedef aux::replace_unnamed_arg< T2,n2 > r2;
348         typedef typename r2::type a2;
349         typedef typename r2::next n3;
350         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
351         ///
352         typedef aux::replace_unnamed_arg< T3,n3 > r3;
353         typedef typename r3::type a3;
354         typedef typename r3::next n4;
355         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
356         ///
357         typedef aux::replace_unnamed_arg< T4,n4 > r4;
358         typedef typename r4::type a4;
359         typedef typename r4::next n5;
360         typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
361         ///
362         typedef aux::replace_unnamed_arg< T5,n5 > r5;
363         typedef typename r5::type a5;
364         typedef typename r5::next n6;
365         typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
366         ///
367      public:
368         typedef typename apply_wrap5<
369               f_
370             , typename t1::type, typename t2::type, typename t3::type
371             , typename t4::type, typename t5::type
372             >::type type;
373
374     };
375 };
376
377 namespace aux {
378
379 template<
380       typename F, typename T1, typename T2, typename T3, typename T4
381     , typename T5, typename U1, typename U2, typename U3, typename U4
382     , typename U5
383     >
384 struct resolve_bind_arg<
385       bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
386     >
387 {
388     typedef bind5< F,T1,T2,T3,T4,T5 > f_;
389     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
390 };
391
392 } // namespace aux
393
394 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
395 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
396 }}
397