blob: ed6a8532e7e7189185b9f0b33a76fda2562667dc [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001
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 "ndnboost/mpl/bind.hpp" header
11// -- DO NOT modify by hand!
12
13namespace ndnboost { 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