source: vendor/nemo/current/NEMOGCM/EXTERNAL/XIOS/extern/boost/include/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp @ 44

Last change on this file since 44 was 44, checked in by cholod, 12 years ago

Load NEMO_TMP into vendor/nemo/current.

File size: 7.0 KB
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 the main "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, typename U2, typename U3, typename U4, typename U5
43        >
44    struct apply
45    {
46     private:
47        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
48
49     public:
50        typedef typename apply_wrap0<
51              f_
52            >::type type;
53
54    };
55};
56
57namespace aux {
58
59template<
60      typename F, typename U1, typename U2, typename U3, typename U4
61    , typename U5
62    >
63struct resolve_bind_arg<
64      bind0<F>, U1, U2, U3, U4, U5
65    >
66{
67    typedef bind0<F> f_;
68    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
69};
70
71} // namespace aux
72
73BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
74BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
75
76template<
77      typename F, typename T1
78    >
79struct bind1
80{
81    template<
82          typename U1, typename U2, typename U3, typename U4, typename U5
83        >
84    struct apply
85    {
86     private:
87        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
88        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
89
90     public:
91        typedef typename apply_wrap1<
92              f_
93            , typename t1::type
94            >::type type;
95
96    };
97};
98
99namespace aux {
100
101template<
102      typename F, typename T1, typename U1, typename U2, typename U3
103    , typename U4, typename U5
104    >
105struct resolve_bind_arg<
106      bind1< F,T1 >, U1, U2, U3, U4, U5
107    >
108{
109    typedef bind1< F,T1 > f_;
110    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
111};
112
113} // namespace aux
114
115BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
116BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
117
118template<
119      typename F, typename T1, typename T2
120    >
121struct bind2
122{
123    template<
124          typename U1, typename U2, typename U3, typename U4, typename U5
125        >
126    struct apply
127    {
128     private:
129        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
130        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
131        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
132
133     public:
134        typedef typename apply_wrap2<
135              f_
136            , typename t1::type, typename t2::type
137            >::type type;
138
139    };
140};
141
142namespace aux {
143
144template<
145      typename F, typename T1, typename T2, typename U1, typename U2
146    , typename U3, typename U4, typename U5
147    >
148struct resolve_bind_arg<
149      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
150    >
151{
152    typedef bind2< F,T1,T2 > f_;
153    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
154};
155
156} // namespace aux
157
158BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
159BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
160
161template<
162      typename F, typename T1, typename T2, typename T3
163    >
164struct bind3
165{
166    template<
167          typename U1, typename U2, typename U3, typename U4, typename U5
168        >
169    struct apply
170    {
171     private:
172        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
173        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
174        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
175        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
176
177     public:
178        typedef typename apply_wrap3<
179              f_
180            , typename t1::type, typename t2::type, typename t3::type
181            >::type type;
182
183    };
184};
185
186namespace aux {
187
188template<
189      typename F, typename T1, typename T2, typename T3, typename U1
190    , typename U2, typename U3, typename U4, typename U5
191    >
192struct resolve_bind_arg<
193      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
194    >
195{
196    typedef bind3< F,T1,T2,T3 > f_;
197    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
198};
199
200} // namespace aux
201
202BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
203BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
204
205template<
206      typename F, typename T1, typename T2, typename T3, typename T4
207    >
208struct bind4
209{
210    template<
211          typename U1, typename U2, typename U3, typename U4, typename U5
212        >
213    struct apply
214    {
215     private:
216        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
217        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
218        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
219        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
220        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
221
222     public:
223        typedef typename apply_wrap4<
224              f_
225            , typename t1::type, typename t2::type, typename t3::type
226            , typename t4::type
227            >::type type;
228
229    };
230};
231
232namespace aux {
233
234template<
235      typename F, typename T1, typename T2, typename T3, typename T4
236    , typename U1, typename U2, typename U3, typename U4, typename U5
237    >
238struct resolve_bind_arg<
239      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
240    >
241{
242    typedef bind4< F,T1,T2,T3,T4 > f_;
243    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
244};
245
246} // namespace aux
247
248BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
249BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
250
251template<
252      typename F, typename T1, typename T2, typename T3, typename T4
253    , typename T5
254    >
255struct bind5
256{
257    template<
258          typename U1, typename U2, typename U3, typename U4, typename U5
259        >
260    struct apply
261    {
262     private:
263        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
264        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
265        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
266        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
267        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
268        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
269
270     public:
271        typedef typename apply_wrap5<
272              f_
273            , typename t1::type, typename t2::type, typename t3::type
274            , typename t4::type, typename t5::type
275            >::type type;
276
277    };
278};
279
280namespace aux {
281
282template<
283      typename F, typename T1, typename T2, typename T3, typename T4
284    , typename T5, typename U1, typename U2, typename U3, typename U4
285    , typename U5
286    >
287struct resolve_bind_arg<
288      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
289    >
290{
291    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
292    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
293};
294
295} // namespace aux
296
297BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
298BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
299}}
300
Note: See TracBrowser for help on using the repository browser.