source: NonGTP/Boost/boost/mpl/aux_/preprocessed/bcc551/bind.hpp @ 857

Revision 857, 10.8 KB checked in by igarcia, 19 years ago (diff)
RevLine 
[857]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
13namespace boost { namespace mpl {
14
15namespace aux {
16
17template<
18      typename T, typename U1, typename U2, typename U3, typename U4
19    , typename U5
20    >
21struct resolve_bind_arg
22{
23    typedef T type;
24};
25
26template<
27      typename T
28    , typename Arg
29    >
30struct replace_unnamed_arg
31{
32    typedef Arg next;
33    typedef T type;
34};
35
36template<
37      typename Arg
38    >
39struct replace_unnamed_arg< arg< -1 >, Arg >
40{
41    typedef typename Arg::next next;
42    typedef Arg type;
43};
44
45template<
46      int N, typename U1, typename U2, typename U3, typename U4, typename U5
47    >
48struct 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
55template<
56      typename F
57    >
58struct 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
80namespace aux {
81
82template<
83      typename F, typename U1, typename U2, typename U3, typename U4
84    , typename U5
85    >
86struct 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
96BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
97BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
98
99template<
100      typename F, typename T1
101    >
102struct 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
130namespace aux {
131
132template<
133      typename F, typename T1, typename U1, typename U2, typename U3
134    , typename U4, typename U5
135    >
136struct 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
146BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
147BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
148
149template<
150      typename F, typename T1, typename T2
151    >
152struct 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
185namespace aux {
186
187template<
188      typename F, typename T1, typename T2, typename U1, typename U2
189    , typename U3, typename U4, typename U5
190    >
191struct 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
201BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
202BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
203
204template<
205      typename F, typename T1, typename T2, typename T3
206    >
207struct 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
245namespace aux {
246
247template<
248      typename F, typename T1, typename T2, typename T3, typename U1
249    , typename U2, typename U3, typename U4, typename U5
250    >
251struct 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
261BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
262BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
263
264template<
265      typename F, typename T1, typename T2, typename T3, typename T4
266    >
267struct 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
311namespace aux {
312
313template<
314      typename F, typename T1, typename T2, typename T3, typename T4
315    , typename U1, typename U2, typename U3, typename U4, typename U5
316    >
317struct 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
327BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
328BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
329
330template<
331      typename F, typename T1, typename T2, typename T3, typename T4
332    , typename T5
333    >
334struct 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
383namespace aux {
384
385template<
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    >
390struct 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
400BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
401BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
402}}
403
Note: See TracBrowser for help on using the repository browser.