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