More boost dependencies.
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / bcc / apply_wrap.hpp
1
2 // Copyright Aleksey Gurtovoy 2000-2004
3 //
4 // Distributed under the Boost Software License, Version 1.0. 
5 // (See accompanying file LICENSE_1_0.txt or copy at 
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //
8
9 // Preprocessed version of "boost/mpl/apply_wrap.hpp" header
10 // -- DO NOT modify by hand!
11
12 namespace boost { namespace mpl {
13
14 template<
15       int N, typename F
16     >
17 struct apply_wrap_impl0;
18
19 template<
20       typename F
21     >
22 struct apply_wrap_impl0<
23           0
24         , F
25        
26         >
27 {
28     typedef typename F::template apply<
29          
30 /// since the defaults are "lost", we have to pass *something* even for nullary
31 /// metafunction classes
32         na
33         > type;
34 };
35
36 template<
37       typename F
38     >
39 struct apply_wrap_impl0<
40           1
41         , F
42        
43         >
44 {
45     typedef typename F::template apply<
46          
47         na
48         > type;
49 };
50
51 template<
52       typename F
53     >
54 struct apply_wrap_impl0<
55           2
56         , F
57        
58         >
59 {
60     typedef typename F::template apply<
61          
62         na, na
63
64         > type;
65 };
66
67 template<
68       typename F
69     >
70 struct apply_wrap_impl0<
71           3
72         , F
73        
74         >
75 {
76     typedef typename F::template apply<
77          
78         na, na, na
79
80         > type;
81 };
82
83 template<
84       typename F
85     >
86 struct apply_wrap_impl0<
87           4
88         , F
89        
90         >
91 {
92     typedef typename F::template apply<
93          
94         na, na, na, na
95
96         > type;
97 };
98
99 template<
100       typename F
101     >
102 struct apply_wrap_impl0<
103           5
104         , F
105        
106         >
107 {
108     typedef typename F::template apply<
109          
110         na, na, na, na, na
111
112         > type;
113 };
114
115 template<
116       typename F
117     >
118 struct apply_wrap0
119     : apply_wrap_impl0<
120           ::boost::mpl::aux::arity< F,0 >::value
121         , F
122        
123         >::type
124 {
125 };
126
127 template<
128       int N, typename F, typename T1
129     >
130 struct apply_wrap_impl1;
131
132 template<
133       typename F, typename T1
134     >
135 struct apply_wrap_impl1<
136           1
137         , F
138         , T1
139         >
140 {
141     typedef typename F::template apply<
142           T1
143         > type;
144 };
145
146 template<
147       typename F, typename T1
148     >
149 struct apply_wrap_impl1<
150           2
151         , F
152         , T1
153         >
154 {
155     typedef typename F::template apply<
156           T1
157         , na
158
159         > type;
160 };
161
162 template<
163       typename F, typename T1
164     >
165 struct apply_wrap_impl1<
166           3
167         , F
168         , T1
169         >
170 {
171     typedef typename F::template apply<
172           T1
173         , na, na
174
175         > type;
176 };
177
178 template<
179       typename F, typename T1
180     >
181 struct apply_wrap_impl1<
182           4
183         , F
184         , T1
185         >
186 {
187     typedef typename F::template apply<
188           T1
189         , na, na, na
190
191         > type;
192 };
193
194 template<
195       typename F, typename T1
196     >
197 struct apply_wrap_impl1<
198           5
199         , F
200         , T1
201         >
202 {
203     typedef typename F::template apply<
204           T1
205         , na, na, na, na
206
207         > type;
208 };
209
210 template<
211       typename F, typename T1
212     >
213 struct apply_wrap1
214     : apply_wrap_impl1<
215           ::boost::mpl::aux::arity< F,1 >::value
216         , F
217         , T1
218         >::type
219 {
220 };
221
222 template<
223       int N, typename F, typename T1, typename T2
224     >
225 struct apply_wrap_impl2;
226
227 template<
228       typename F, typename T1, typename T2
229     >
230 struct apply_wrap_impl2<
231           2
232         , F
233         , T1, T2
234         >
235 {
236     typedef typename F::template apply<
237           T1, T2
238
239         > type;
240 };
241
242 template<
243       typename F, typename T1, typename T2
244     >
245 struct apply_wrap_impl2<
246           3
247         , F
248         , T1, T2
249         >
250 {
251     typedef typename F::template apply<
252           T1, T2
253
254         , na
255
256         > type;
257 };
258
259 template<
260       typename F, typename T1, typename T2
261     >
262 struct apply_wrap_impl2<
263           4
264         , F
265         , T1, T2
266         >
267 {
268     typedef typename F::template apply<
269           T1, T2
270
271         , na, na
272
273         > type;
274 };
275
276 template<
277       typename F, typename T1, typename T2
278     >
279 struct apply_wrap_impl2<
280           5
281         , F
282         , T1, T2
283         >
284 {
285     typedef typename F::template apply<
286           T1, T2
287
288         , na, na, na
289
290         > type;
291 };
292
293 template<
294       typename F, typename T1, typename T2
295     >
296 struct apply_wrap2
297     : apply_wrap_impl2<
298           ::boost::mpl::aux::arity< F,2 >::value
299         , F
300         , T1, T2
301         >::type
302 {
303 };
304
305 template<
306       int N, typename F, typename T1, typename T2, typename T3
307     >
308 struct apply_wrap_impl3;
309
310 template<
311       typename F, typename T1, typename T2, typename T3
312     >
313 struct apply_wrap_impl3<
314           3
315         , F
316         , T1, T2, T3
317         >
318 {
319     typedef typename F::template apply<
320           T1, T2, T3
321
322         > type;
323 };
324
325 template<
326       typename F, typename T1, typename T2, typename T3
327     >
328 struct apply_wrap_impl3<
329           4
330         , F
331         , T1, T2, T3
332         >
333 {
334     typedef typename F::template apply<
335           T1, T2, T3
336
337         , na
338
339         > type;
340 };
341
342 template<
343       typename F, typename T1, typename T2, typename T3
344     >
345 struct apply_wrap_impl3<
346           5
347         , F
348         , T1, T2, T3
349         >
350 {
351     typedef typename F::template apply<
352           T1, T2, T3
353
354         , na, na
355
356         > type;
357 };
358
359 template<
360       typename F, typename T1, typename T2, typename T3
361     >
362 struct apply_wrap3
363     : apply_wrap_impl3<
364           ::boost::mpl::aux::arity< F,3 >::value
365         , F
366         , T1, T2, T3
367         >::type
368 {
369 };
370
371 template<
372       int N, typename F, typename T1, typename T2, typename T3, typename T4
373     >
374 struct apply_wrap_impl4;
375
376 template<
377       typename F, typename T1, typename T2, typename T3, typename T4
378     >
379 struct apply_wrap_impl4<
380           4
381         , F
382         , T1, T2, T3, T4
383         >
384 {
385     typedef typename F::template apply<
386           T1, T2, T3, T4
387
388         > type;
389 };
390
391 template<
392       typename F, typename T1, typename T2, typename T3, typename T4
393     >
394 struct apply_wrap_impl4<
395           5
396         , F
397         , T1, T2, T3, T4
398         >
399 {
400     typedef typename F::template apply<
401           T1, T2, T3, T4
402
403         , na
404
405         > type;
406 };
407
408 template<
409       typename F, typename T1, typename T2, typename T3, typename T4
410     >
411 struct apply_wrap4
412     : apply_wrap_impl4<
413           ::boost::mpl::aux::arity< F,4 >::value
414         , F
415         , T1, T2, T3, T4
416         >::type
417 {
418 };
419
420 template<
421       int N, typename F, typename T1, typename T2, typename T3, typename T4
422     , typename T5
423     >
424 struct apply_wrap_impl5;
425
426 template<
427       typename F, typename T1, typename T2, typename T3, typename T4
428     , typename T5
429     >
430 struct apply_wrap_impl5<
431           5
432         , F
433         , T1, T2, T3, T4, T5
434         >
435 {
436     typedef typename F::template apply<
437           T1, T2, T3, T4, T5
438
439         > type;
440 };
441
442 template<
443       typename F, typename T1, typename T2, typename T3, typename T4
444     , typename T5
445     >
446 struct apply_wrap5
447     : apply_wrap_impl5<
448           ::boost::mpl::aux::arity< F,5 >::value
449         , F
450         , T1, T2, T3, T4, T5
451         >::type
452 {
453 };
454
455 }}
456