Ugly, not-to-be-pushed sucking in of all of Boost to get windows to work.
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / msvc60 / list.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/list.hpp" header
10 // -- DO NOT modify by hand!
11
12 namespace boost { namespace mpl {
13
14 namespace aux {
15 template< int N >
16 struct list_chooser;
17
18 }
19
20 namespace aux {
21
22 template<>
23 struct list_chooser<0>
24 {
25     template<
26           typename T0, typename T1, typename T2, typename T3, typename T4
27         , typename T5, typename T6, typename T7, typename T8, typename T9
28         , typename T10, typename T11, typename T12, typename T13, typename T14
29         , typename T15, typename T16, typename T17, typename T18, typename T19
30         >
31     struct result_
32     {
33         typedef list0<
34              
35             >::type type;
36
37     };
38 };
39
40 } // namespace aux
41
42 namespace aux {
43
44 template<>
45 struct list_chooser<1>
46 {
47     template<
48           typename T0, typename T1, typename T2, typename T3, typename T4
49         , typename T5, typename T6, typename T7, typename T8, typename T9
50         , typename T10, typename T11, typename T12, typename T13, typename T14
51         , typename T15, typename T16, typename T17, typename T18, typename T19
52         >
53     struct result_
54     {
55         typedef typename list1<
56               T0
57             >::type type;
58
59     };
60 };
61
62 } // namespace aux
63
64 namespace aux {
65
66 template<>
67 struct list_chooser<2>
68 {
69     template<
70           typename T0, typename T1, typename T2, typename T3, typename T4
71         , typename T5, typename T6, typename T7, typename T8, typename T9
72         , typename T10, typename T11, typename T12, typename T13, typename T14
73         , typename T15, typename T16, typename T17, typename T18, typename T19
74         >
75     struct result_
76     {
77         typedef typename list2<
78               T0, T1
79             >::type type;
80
81     };
82 };
83
84 } // namespace aux
85
86 namespace aux {
87
88 template<>
89 struct list_chooser<3>
90 {
91     template<
92           typename T0, typename T1, typename T2, typename T3, typename T4
93         , typename T5, typename T6, typename T7, typename T8, typename T9
94         , typename T10, typename T11, typename T12, typename T13, typename T14
95         , typename T15, typename T16, typename T17, typename T18, typename T19
96         >
97     struct result_
98     {
99         typedef typename list3<
100               T0, T1, T2
101             >::type type;
102
103     };
104 };
105
106 } // namespace aux
107
108 namespace aux {
109
110 template<>
111 struct list_chooser<4>
112 {
113     template<
114           typename T0, typename T1, typename T2, typename T3, typename T4
115         , typename T5, typename T6, typename T7, typename T8, typename T9
116         , typename T10, typename T11, typename T12, typename T13, typename T14
117         , typename T15, typename T16, typename T17, typename T18, typename T19
118         >
119     struct result_
120     {
121         typedef typename list4<
122               T0, T1, T2, T3
123             >::type type;
124
125     };
126 };
127
128 } // namespace aux
129
130 namespace aux {
131
132 template<>
133 struct list_chooser<5>
134 {
135     template<
136           typename T0, typename T1, typename T2, typename T3, typename T4
137         , typename T5, typename T6, typename T7, typename T8, typename T9
138         , typename T10, typename T11, typename T12, typename T13, typename T14
139         , typename T15, typename T16, typename T17, typename T18, typename T19
140         >
141     struct result_
142     {
143         typedef typename list5<
144               T0, T1, T2, T3, T4
145             >::type type;
146
147     };
148 };
149
150 } // namespace aux
151
152 namespace aux {
153
154 template<>
155 struct list_chooser<6>
156 {
157     template<
158           typename T0, typename T1, typename T2, typename T3, typename T4
159         , typename T5, typename T6, typename T7, typename T8, typename T9
160         , typename T10, typename T11, typename T12, typename T13, typename T14
161         , typename T15, typename T16, typename T17, typename T18, typename T19
162         >
163     struct result_
164     {
165         typedef typename list6<
166               T0, T1, T2, T3, T4, T5
167             >::type type;
168
169     };
170 };
171
172 } // namespace aux
173
174 namespace aux {
175
176 template<>
177 struct list_chooser<7>
178 {
179     template<
180           typename T0, typename T1, typename T2, typename T3, typename T4
181         , typename T5, typename T6, typename T7, typename T8, typename T9
182         , typename T10, typename T11, typename T12, typename T13, typename T14
183         , typename T15, typename T16, typename T17, typename T18, typename T19
184         >
185     struct result_
186     {
187         typedef typename list7<
188               T0, T1, T2, T3, T4, T5, T6
189             >::type type;
190
191     };
192 };
193
194 } // namespace aux
195
196 namespace aux {
197
198 template<>
199 struct list_chooser<8>
200 {
201     template<
202           typename T0, typename T1, typename T2, typename T3, typename T4
203         , typename T5, typename T6, typename T7, typename T8, typename T9
204         , typename T10, typename T11, typename T12, typename T13, typename T14
205         , typename T15, typename T16, typename T17, typename T18, typename T19
206         >
207     struct result_
208     {
209         typedef typename list8<
210               T0, T1, T2, T3, T4, T5, T6, T7
211             >::type type;
212
213     };
214 };
215
216 } // namespace aux
217
218 namespace aux {
219
220 template<>
221 struct list_chooser<9>
222 {
223     template<
224           typename T0, typename T1, typename T2, typename T3, typename T4
225         , typename T5, typename T6, typename T7, typename T8, typename T9
226         , typename T10, typename T11, typename T12, typename T13, typename T14
227         , typename T15, typename T16, typename T17, typename T18, typename T19
228         >
229     struct result_
230     {
231         typedef typename list9<
232               T0, T1, T2, T3, T4, T5, T6, T7, T8
233             >::type type;
234
235     };
236 };
237
238 } // namespace aux
239
240 namespace aux {
241
242 template<>
243 struct list_chooser<10>
244 {
245     template<
246           typename T0, typename T1, typename T2, typename T3, typename T4
247         , typename T5, typename T6, typename T7, typename T8, typename T9
248         , typename T10, typename T11, typename T12, typename T13, typename T14
249         , typename T15, typename T16, typename T17, typename T18, typename T19
250         >
251     struct result_
252     {
253         typedef typename list10<
254               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
255             >::type type;
256
257     };
258 };
259
260 } // namespace aux
261
262 namespace aux {
263
264 template<>
265 struct list_chooser<11>
266 {
267     template<
268           typename T0, typename T1, typename T2, typename T3, typename T4
269         , typename T5, typename T6, typename T7, typename T8, typename T9
270         , typename T10, typename T11, typename T12, typename T13, typename T14
271         , typename T15, typename T16, typename T17, typename T18, typename T19
272         >
273     struct result_
274     {
275         typedef typename list11<
276               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
277             >::type type;
278
279     };
280 };
281
282 } // namespace aux
283
284 namespace aux {
285
286 template<>
287 struct list_chooser<12>
288 {
289     template<
290           typename T0, typename T1, typename T2, typename T3, typename T4
291         , typename T5, typename T6, typename T7, typename T8, typename T9
292         , typename T10, typename T11, typename T12, typename T13, typename T14
293         , typename T15, typename T16, typename T17, typename T18, typename T19
294         >
295     struct result_
296     {
297         typedef typename list12<
298               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
299             >::type type;
300
301     };
302 };
303
304 } // namespace aux
305
306 namespace aux {
307
308 template<>
309 struct list_chooser<13>
310 {
311     template<
312           typename T0, typename T1, typename T2, typename T3, typename T4
313         , typename T5, typename T6, typename T7, typename T8, typename T9
314         , typename T10, typename T11, typename T12, typename T13, typename T14
315         , typename T15, typename T16, typename T17, typename T18, typename T19
316         >
317     struct result_
318     {
319         typedef typename list13<
320               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
321             >::type type;
322
323     };
324 };
325
326 } // namespace aux
327
328 namespace aux {
329
330 template<>
331 struct list_chooser<14>
332 {
333     template<
334           typename T0, typename T1, typename T2, typename T3, typename T4
335         , typename T5, typename T6, typename T7, typename T8, typename T9
336         , typename T10, typename T11, typename T12, typename T13, typename T14
337         , typename T15, typename T16, typename T17, typename T18, typename T19
338         >
339     struct result_
340     {
341         typedef typename list14<
342               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
343             >::type type;
344
345     };
346 };
347
348 } // namespace aux
349
350 namespace aux {
351
352 template<>
353 struct list_chooser<15>
354 {
355     template<
356           typename T0, typename T1, typename T2, typename T3, typename T4
357         , typename T5, typename T6, typename T7, typename T8, typename T9
358         , typename T10, typename T11, typename T12, typename T13, typename T14
359         , typename T15, typename T16, typename T17, typename T18, typename T19
360         >
361     struct result_
362     {
363         typedef typename list15<
364               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
365             >::type type;
366
367     };
368 };
369
370 } // namespace aux
371
372 namespace aux {
373
374 template<>
375 struct list_chooser<16>
376 {
377     template<
378           typename T0, typename T1, typename T2, typename T3, typename T4
379         , typename T5, typename T6, typename T7, typename T8, typename T9
380         , typename T10, typename T11, typename T12, typename T13, typename T14
381         , typename T15, typename T16, typename T17, typename T18, typename T19
382         >
383     struct result_
384     {
385         typedef typename list16<
386               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
387             >::type type;
388
389     };
390 };
391
392 } // namespace aux
393
394 namespace aux {
395
396 template<>
397 struct list_chooser<17>
398 {
399     template<
400           typename T0, typename T1, typename T2, typename T3, typename T4
401         , typename T5, typename T6, typename T7, typename T8, typename T9
402         , typename T10, typename T11, typename T12, typename T13, typename T14
403         , typename T15, typename T16, typename T17, typename T18, typename T19
404         >
405     struct result_
406     {
407         typedef typename list17<
408               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
409             >::type type;
410
411     };
412 };
413
414 } // namespace aux
415
416 namespace aux {
417
418 template<>
419 struct list_chooser<18>
420 {
421     template<
422           typename T0, typename T1, typename T2, typename T3, typename T4
423         , typename T5, typename T6, typename T7, typename T8, typename T9
424         , typename T10, typename T11, typename T12, typename T13, typename T14
425         , typename T15, typename T16, typename T17, typename T18, typename T19
426         >
427     struct result_
428     {
429         typedef typename list18<
430               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
431             >::type type;
432
433     };
434 };
435
436 } // namespace aux
437
438 namespace aux {
439
440 template<>
441 struct list_chooser<19>
442 {
443     template<
444           typename T0, typename T1, typename T2, typename T3, typename T4
445         , typename T5, typename T6, typename T7, typename T8, typename T9
446         , typename T10, typename T11, typename T12, typename T13, typename T14
447         , typename T15, typename T16, typename T17, typename T18, typename T19
448         >
449     struct result_
450     {
451         typedef typename list19<
452               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
453             >::type type;
454
455     };
456 };
457
458 } // namespace aux
459
460 namespace aux {
461
462 template<>
463 struct list_chooser<20>
464 {
465     template<
466           typename T0, typename T1, typename T2, typename T3, typename T4
467         , typename T5, typename T6, typename T7, typename T8, typename T9
468         , typename T10, typename T11, typename T12, typename T13, typename T14
469         , typename T15, typename T16, typename T17, typename T18, typename T19
470         >
471     struct result_
472     {
473         typedef typename list20<
474               T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
475             >::type type;
476
477     };
478 };
479
480 } // namespace aux
481
482 namespace aux {
483
484 template< typename T >
485 struct is_list_arg
486 {
487     BOOST_STATIC_CONSTANT(bool, value  = true);
488 };
489
490 template<>
491 struct is_list_arg<na>
492 {
493     BOOST_STATIC_CONSTANT(bool, value  = false);
494 };
495
496 template<
497       typename T1, typename T2, typename T3, typename T4, typename T5
498     , typename T6, typename T7, typename T8, typename T9, typename T10
499     , typename T11, typename T12, typename T13, typename T14, typename T15
500     , typename T16, typename T17, typename T18, typename T19, typename T20
501     >
502 struct list_count_args
503 {
504     BOOST_STATIC_CONSTANT(int, value =
505           is_list_arg<T1>::value + is_list_arg<T2>::value 
506         + is_list_arg<T3>::value + is_list_arg<T4>::value 
507         + is_list_arg<T5>::value + is_list_arg<T6>::value 
508         + is_list_arg<T7>::value + is_list_arg<T8>::value 
509         + is_list_arg<T9>::value + is_list_arg<T10>::value 
510         + is_list_arg<T11>::value + is_list_arg<T12>::value 
511         + is_list_arg<T13>::value + is_list_arg<T14>::value 
512         + is_list_arg<T15>::value + is_list_arg<T16>::value 
513         + is_list_arg<T17>::value + is_list_arg<T18>::value 
514         + is_list_arg<T19>::value + is_list_arg<T20>::value
515         );
516
517 };
518
519 template<
520       typename T0, typename T1, typename T2, typename T3, typename T4
521     , typename T5, typename T6, typename T7, typename T8, typename T9
522     , typename T10, typename T11, typename T12, typename T13, typename T14
523     , typename T15, typename T16, typename T17, typename T18, typename T19
524     >
525 struct list_impl
526 {
527     typedef aux::list_count_args<
528           T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
529         > arg_num_;
530
531     typedef typename aux::list_chooser< arg_num_::value >
532         ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
533 };
534
535 } // namespace aux
536
537 template<
538       typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
539     , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
540     , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
541     , typename T12 = na, typename T13 = na, typename T14 = na
542     , typename T15 = na, typename T16 = na, typename T17 = na
543     , typename T18 = na, typename T19 = na
544     >
545 struct list
546     : aux::list_impl<
547           T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
548         >::type
549 {
550     typedef typename aux::list_impl<
551           T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
552         >::type type;
553 };
554
555 }}
556