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

Revision 857, 7.5 KB checked in by igarcia, 19 years ago (diff)
Line 
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
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      int N, typename U1, typename U2, typename U3, typename U4, typename U5
28    >
29struct 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
36template<
37      typename F
38    >
39struct 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
58namespace aux {
59
60template<
61      typename F, typename U1, typename U2, typename U3, typename U4
62    , typename U5
63    >
64struct 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
74BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
75BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
76
77template<
78      typename F, typename T1
79    >
80struct 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
101namespace aux {
102
103template<
104      typename F, typename T1, typename U1, typename U2, typename U3
105    , typename U4, typename U5
106    >
107struct 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
117BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
118BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
119
120template<
121      typename F, typename T1, typename T2
122    >
123struct 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
145namespace aux {
146
147template<
148      typename F, typename T1, typename T2, typename U1, typename U2
149    , typename U3, typename U4, typename U5
150    >
151struct 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
161BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
162BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
163
164template<
165      typename F, typename T1, typename T2, typename T3
166    >
167struct 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
190namespace aux {
191
192template<
193      typename F, typename T1, typename T2, typename T3, typename U1
194    , typename U2, typename U3, typename U4, typename U5
195    >
196struct 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
206BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
207BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
208
209template<
210      typename F, typename T1, typename T2, typename T3, typename T4
211    >
212struct 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
237namespace aux {
238
239template<
240      typename F, typename T1, typename T2, typename T3, typename T4
241    , typename U1, typename U2, typename U3, typename U4, typename U5
242    >
243struct 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
253BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
254BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
255
256template<
257      typename F, typename T1, typename T2, typename T3, typename T4
258    , typename T5
259    >
260struct 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
286namespace aux {
287
288template<
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    >
293struct 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
303BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
304BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
305}}
306
Note: See TracBrowser for help on using the repository browser.