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