]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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/vector/vector10.hpp" header | |
10 | // -- DO NOT modify by hand! | |
11 | ||
12 | namespace boost { namespace mpl { | |
13 | ||
14 | namespace aux { | |
15 | template<> struct v_at_impl<0> | |
16 | { | |
17 | template< typename V_ > struct result_ | |
18 | { | |
19 | typedef typename V_::item0 type; | |
20 | }; | |
21 | }; | |
22 | ||
23 | } | |
24 | ||
25 | template<> | |
26 | struct at_impl< aux::vector_tag<0> > | |
27 | { | |
28 | template< typename V_, typename N > struct apply | |
29 | { | |
30 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
31 | ::template result_<V_>::type type; | |
32 | }; | |
33 | }; | |
34 | ||
35 | template<> | |
36 | struct size_impl< aux::vector_tag<0> > | |
37 | { | |
38 | template< typename Vector > struct apply | |
39 | : long_<0> | |
40 | { | |
41 | }; | |
42 | }; | |
43 | ||
44 | template<> | |
45 | struct O1_size_impl< aux::vector_tag<0> > | |
46 | : size_impl< aux::vector_tag<0> > | |
47 | { | |
48 | }; | |
49 | ||
50 | template<> | |
51 | struct clear_impl< aux::vector_tag<0> > | |
52 | { | |
53 | template< typename Vector > struct apply | |
54 | { | |
55 | typedef vector0<> type; | |
56 | }; | |
57 | }; | |
58 | ||
59 | template< | |
60 | typename T0 | |
61 | > | |
62 | struct vector1 | |
63 | { | |
64 | typedef aux::vector_tag<1> tag; | |
65 | typedef vector1 type; | |
66 | typedef T0 item0; | |
67 | typedef void_ item1; | |
68 | typedef T0 back; | |
69 | typedef v_iter< type,0 > begin; | |
70 | typedef v_iter< type,1 > end; | |
71 | }; | |
72 | ||
73 | template<> | |
74 | struct push_front_impl< aux::vector_tag<0> > | |
75 | { | |
76 | template< typename Vector, typename T > struct apply | |
77 | { | |
78 | typedef vector1< | |
79 | T | |
80 | > type; | |
81 | }; | |
82 | }; | |
83 | ||
84 | template<> | |
85 | struct pop_front_impl< aux::vector_tag<1> > | |
86 | { | |
87 | template< typename Vector > struct apply | |
88 | { | |
89 | typedef vector0< | |
90 | ||
91 | > type; | |
92 | }; | |
93 | }; | |
94 | ||
95 | template<> | |
96 | struct push_back_impl< aux::vector_tag<0> > | |
97 | { | |
98 | template< typename Vector, typename T > struct apply | |
99 | { | |
100 | typedef vector1< | |
101 | ||
102 | T | |
103 | > type; | |
104 | }; | |
105 | }; | |
106 | ||
107 | template<> | |
108 | struct pop_back_impl< aux::vector_tag<1> > | |
109 | { | |
110 | template< typename Vector > struct apply | |
111 | { | |
112 | typedef vector0< | |
113 | ||
114 | > type; | |
115 | }; | |
116 | }; | |
117 | ||
118 | namespace aux { | |
119 | template<> struct v_at_impl<1> | |
120 | { | |
121 | template< typename V_ > struct result_ | |
122 | { | |
123 | typedef typename V_::item1 type; | |
124 | }; | |
125 | }; | |
126 | ||
127 | } | |
128 | ||
129 | template<> | |
130 | struct at_impl< aux::vector_tag<1> > | |
131 | { | |
132 | template< typename V_, typename N > struct apply | |
133 | { | |
134 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
135 | ::template result_<V_>::type type; | |
136 | }; | |
137 | }; | |
138 | ||
139 | template<> | |
140 | struct front_impl< aux::vector_tag<1> > | |
141 | { | |
142 | template< typename Vector > struct apply | |
143 | { | |
144 | typedef typename Vector::item0 type; | |
145 | }; | |
146 | }; | |
147 | ||
148 | template<> | |
149 | struct back_impl< aux::vector_tag<1> > | |
150 | { | |
151 | template< typename Vector > struct apply | |
152 | { | |
153 | typedef typename Vector::back type; | |
154 | }; | |
155 | }; | |
156 | ||
157 | template<> | |
158 | struct empty_impl< aux::vector_tag<1> > | |
159 | { | |
160 | template< typename Vector > struct apply | |
161 | : false_ | |
162 | { | |
163 | }; | |
164 | }; | |
165 | ||
166 | template<> | |
167 | struct size_impl< aux::vector_tag<1> > | |
168 | { | |
169 | template< typename Vector > struct apply | |
170 | : long_<1> | |
171 | { | |
172 | }; | |
173 | }; | |
174 | ||
175 | template<> | |
176 | struct O1_size_impl< aux::vector_tag<1> > | |
177 | : size_impl< aux::vector_tag<1> > | |
178 | { | |
179 | }; | |
180 | ||
181 | template<> | |
182 | struct clear_impl< aux::vector_tag<1> > | |
183 | { | |
184 | template< typename Vector > struct apply | |
185 | { | |
186 | typedef vector0<> type; | |
187 | }; | |
188 | }; | |
189 | ||
190 | template< | |
191 | typename T0, typename T1 | |
192 | > | |
193 | struct vector2 | |
194 | { | |
195 | typedef aux::vector_tag<2> tag; | |
196 | typedef vector2 type; | |
197 | typedef T0 item0; | |
198 | typedef T1 item1; | |
199 | ||
200 | ||
201 | typedef void_ item2; | |
202 | typedef T1 back; | |
203 | typedef v_iter< type,0 > begin; | |
204 | typedef v_iter< type,2 > end; | |
205 | }; | |
206 | ||
207 | template<> | |
208 | struct push_front_impl< aux::vector_tag<1> > | |
209 | { | |
210 | template< typename Vector, typename T > struct apply | |
211 | { | |
212 | typedef vector2< | |
213 | T | |
214 | , | |
215 | typename Vector::item0 | |
216 | > type; | |
217 | }; | |
218 | }; | |
219 | ||
220 | template<> | |
221 | struct pop_front_impl< aux::vector_tag<2> > | |
222 | { | |
223 | template< typename Vector > struct apply | |
224 | { | |
225 | typedef vector1< | |
226 | typename Vector::item1 | |
227 | > type; | |
228 | }; | |
229 | }; | |
230 | ||
231 | template<> | |
232 | struct push_back_impl< aux::vector_tag<1> > | |
233 | { | |
234 | template< typename Vector, typename T > struct apply | |
235 | { | |
236 | typedef vector2< | |
237 | typename Vector::item0 | |
238 | , | |
239 | T | |
240 | > type; | |
241 | }; | |
242 | }; | |
243 | ||
244 | template<> | |
245 | struct pop_back_impl< aux::vector_tag<2> > | |
246 | { | |
247 | template< typename Vector > struct apply | |
248 | { | |
249 | typedef vector1< | |
250 | typename Vector::item0 | |
251 | > type; | |
252 | }; | |
253 | }; | |
254 | ||
255 | namespace aux { | |
256 | template<> struct v_at_impl<2> | |
257 | { | |
258 | template< typename V_ > struct result_ | |
259 | { | |
260 | typedef typename V_::item2 type; | |
261 | }; | |
262 | }; | |
263 | ||
264 | } | |
265 | ||
266 | template<> | |
267 | struct at_impl< aux::vector_tag<2> > | |
268 | { | |
269 | template< typename V_, typename N > struct apply | |
270 | { | |
271 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
272 | ::template result_<V_>::type type; | |
273 | }; | |
274 | }; | |
275 | ||
276 | template<> | |
277 | struct front_impl< aux::vector_tag<2> > | |
278 | { | |
279 | template< typename Vector > struct apply | |
280 | { | |
281 | typedef typename Vector::item0 type; | |
282 | }; | |
283 | }; | |
284 | ||
285 | template<> | |
286 | struct back_impl< aux::vector_tag<2> > | |
287 | { | |
288 | template< typename Vector > struct apply | |
289 | { | |
290 | typedef typename Vector::back type; | |
291 | }; | |
292 | }; | |
293 | ||
294 | template<> | |
295 | struct empty_impl< aux::vector_tag<2> > | |
296 | { | |
297 | template< typename Vector > struct apply | |
298 | : false_ | |
299 | { | |
300 | }; | |
301 | }; | |
302 | ||
303 | template<> | |
304 | struct size_impl< aux::vector_tag<2> > | |
305 | { | |
306 | template< typename Vector > struct apply | |
307 | : long_<2> | |
308 | { | |
309 | }; | |
310 | }; | |
311 | ||
312 | template<> | |
313 | struct O1_size_impl< aux::vector_tag<2> > | |
314 | : size_impl< aux::vector_tag<2> > | |
315 | { | |
316 | }; | |
317 | ||
318 | template<> | |
319 | struct clear_impl< aux::vector_tag<2> > | |
320 | { | |
321 | template< typename Vector > struct apply | |
322 | { | |
323 | typedef vector0<> type; | |
324 | }; | |
325 | }; | |
326 | ||
327 | template< | |
328 | typename T0, typename T1, typename T2 | |
329 | > | |
330 | struct vector3 | |
331 | { | |
332 | typedef aux::vector_tag<3> tag; | |
333 | typedef vector3 type; | |
334 | typedef T0 item0; | |
335 | typedef T1 item1; | |
336 | typedef T2 item2; | |
337 | ||
338 | ||
339 | typedef void_ item3; | |
340 | typedef T2 back; | |
341 | typedef v_iter< type,0 > begin; | |
342 | typedef v_iter< type,3 > end; | |
343 | }; | |
344 | ||
345 | template<> | |
346 | struct push_front_impl< aux::vector_tag<2> > | |
347 | { | |
348 | template< typename Vector, typename T > struct apply | |
349 | { | |
350 | typedef vector3< | |
351 | T | |
352 | , | |
353 | typename Vector::item0, typename Vector::item1 | |
354 | > type; | |
355 | }; | |
356 | }; | |
357 | ||
358 | template<> | |
359 | struct pop_front_impl< aux::vector_tag<3> > | |
360 | { | |
361 | template< typename Vector > struct apply | |
362 | { | |
363 | typedef vector2< | |
364 | typename Vector::item1, typename Vector::item2 | |
365 | > type; | |
366 | }; | |
367 | }; | |
368 | ||
369 | template<> | |
370 | struct push_back_impl< aux::vector_tag<2> > | |
371 | { | |
372 | template< typename Vector, typename T > struct apply | |
373 | { | |
374 | typedef vector3< | |
375 | typename Vector::item0, typename Vector::item1 | |
376 | , | |
377 | T | |
378 | > type; | |
379 | }; | |
380 | }; | |
381 | ||
382 | template<> | |
383 | struct pop_back_impl< aux::vector_tag<3> > | |
384 | { | |
385 | template< typename Vector > struct apply | |
386 | { | |
387 | typedef vector2< | |
388 | typename Vector::item0, typename Vector::item1 | |
389 | > type; | |
390 | }; | |
391 | }; | |
392 | ||
393 | namespace aux { | |
394 | template<> struct v_at_impl<3> | |
395 | { | |
396 | template< typename V_ > struct result_ | |
397 | { | |
398 | typedef typename V_::item3 type; | |
399 | }; | |
400 | }; | |
401 | ||
402 | } | |
403 | ||
404 | template<> | |
405 | struct at_impl< aux::vector_tag<3> > | |
406 | { | |
407 | template< typename V_, typename N > struct apply | |
408 | { | |
409 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
410 | ::template result_<V_>::type type; | |
411 | }; | |
412 | }; | |
413 | ||
414 | template<> | |
415 | struct front_impl< aux::vector_tag<3> > | |
416 | { | |
417 | template< typename Vector > struct apply | |
418 | { | |
419 | typedef typename Vector::item0 type; | |
420 | }; | |
421 | }; | |
422 | ||
423 | template<> | |
424 | struct back_impl< aux::vector_tag<3> > | |
425 | { | |
426 | template< typename Vector > struct apply | |
427 | { | |
428 | typedef typename Vector::back type; | |
429 | }; | |
430 | }; | |
431 | ||
432 | template<> | |
433 | struct empty_impl< aux::vector_tag<3> > | |
434 | { | |
435 | template< typename Vector > struct apply | |
436 | : false_ | |
437 | { | |
438 | }; | |
439 | }; | |
440 | ||
441 | template<> | |
442 | struct size_impl< aux::vector_tag<3> > | |
443 | { | |
444 | template< typename Vector > struct apply | |
445 | : long_<3> | |
446 | { | |
447 | }; | |
448 | }; | |
449 | ||
450 | template<> | |
451 | struct O1_size_impl< aux::vector_tag<3> > | |
452 | : size_impl< aux::vector_tag<3> > | |
453 | { | |
454 | }; | |
455 | ||
456 | template<> | |
457 | struct clear_impl< aux::vector_tag<3> > | |
458 | { | |
459 | template< typename Vector > struct apply | |
460 | { | |
461 | typedef vector0<> type; | |
462 | }; | |
463 | }; | |
464 | ||
465 | template< | |
466 | typename T0, typename T1, typename T2, typename T3 | |
467 | > | |
468 | struct vector4 | |
469 | { | |
470 | typedef aux::vector_tag<4> tag; | |
471 | typedef vector4 type; | |
472 | typedef T0 item0; | |
473 | typedef T1 item1; | |
474 | typedef T2 item2; | |
475 | typedef T3 item3; | |
476 | ||
477 | ||
478 | typedef void_ item4; | |
479 | typedef T3 back; | |
480 | typedef v_iter< type,0 > begin; | |
481 | typedef v_iter< type,4 > end; | |
482 | }; | |
483 | ||
484 | template<> | |
485 | struct push_front_impl< aux::vector_tag<3> > | |
486 | { | |
487 | template< typename Vector, typename T > struct apply | |
488 | { | |
489 | typedef vector4< | |
490 | T | |
491 | , | |
492 | typename Vector::item0, typename Vector::item1 | |
493 | , typename Vector::item2 | |
494 | > type; | |
495 | }; | |
496 | }; | |
497 | ||
498 | template<> | |
499 | struct pop_front_impl< aux::vector_tag<4> > | |
500 | { | |
501 | template< typename Vector > struct apply | |
502 | { | |
503 | typedef vector3< | |
504 | typename Vector::item1, typename Vector::item2 | |
505 | , typename Vector::item3 | |
506 | > type; | |
507 | }; | |
508 | }; | |
509 | ||
510 | template<> | |
511 | struct push_back_impl< aux::vector_tag<3> > | |
512 | { | |
513 | template< typename Vector, typename T > struct apply | |
514 | { | |
515 | typedef vector4< | |
516 | typename Vector::item0, typename Vector::item1 | |
517 | , typename Vector::item2 | |
518 | , | |
519 | T | |
520 | > type; | |
521 | }; | |
522 | }; | |
523 | ||
524 | template<> | |
525 | struct pop_back_impl< aux::vector_tag<4> > | |
526 | { | |
527 | template< typename Vector > struct apply | |
528 | { | |
529 | typedef vector3< | |
530 | typename Vector::item0, typename Vector::item1 | |
531 | , typename Vector::item2 | |
532 | > type; | |
533 | }; | |
534 | }; | |
535 | ||
536 | namespace aux { | |
537 | template<> struct v_at_impl<4> | |
538 | { | |
539 | template< typename V_ > struct result_ | |
540 | { | |
541 | typedef typename V_::item4 type; | |
542 | }; | |
543 | }; | |
544 | ||
545 | } | |
546 | ||
547 | template<> | |
548 | struct at_impl< aux::vector_tag<4> > | |
549 | { | |
550 | template< typename V_, typename N > struct apply | |
551 | { | |
552 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
553 | ::template result_<V_>::type type; | |
554 | }; | |
555 | }; | |
556 | ||
557 | template<> | |
558 | struct front_impl< aux::vector_tag<4> > | |
559 | { | |
560 | template< typename Vector > struct apply | |
561 | { | |
562 | typedef typename Vector::item0 type; | |
563 | }; | |
564 | }; | |
565 | ||
566 | template<> | |
567 | struct back_impl< aux::vector_tag<4> > | |
568 | { | |
569 | template< typename Vector > struct apply | |
570 | { | |
571 | typedef typename Vector::back type; | |
572 | }; | |
573 | }; | |
574 | ||
575 | template<> | |
576 | struct empty_impl< aux::vector_tag<4> > | |
577 | { | |
578 | template< typename Vector > struct apply | |
579 | : false_ | |
580 | { | |
581 | }; | |
582 | }; | |
583 | ||
584 | template<> | |
585 | struct size_impl< aux::vector_tag<4> > | |
586 | { | |
587 | template< typename Vector > struct apply | |
588 | : long_<4> | |
589 | { | |
590 | }; | |
591 | }; | |
592 | ||
593 | template<> | |
594 | struct O1_size_impl< aux::vector_tag<4> > | |
595 | : size_impl< aux::vector_tag<4> > | |
596 | { | |
597 | }; | |
598 | ||
599 | template<> | |
600 | struct clear_impl< aux::vector_tag<4> > | |
601 | { | |
602 | template< typename Vector > struct apply | |
603 | { | |
604 | typedef vector0<> type; | |
605 | }; | |
606 | }; | |
607 | ||
608 | template< | |
609 | typename T0, typename T1, typename T2, typename T3, typename T4 | |
610 | > | |
611 | struct vector5 | |
612 | { | |
613 | typedef aux::vector_tag<5> tag; | |
614 | typedef vector5 type; | |
615 | typedef T0 item0; | |
616 | typedef T1 item1; | |
617 | typedef T2 item2; | |
618 | typedef T3 item3; | |
619 | typedef T4 item4; | |
620 | ||
621 | ||
622 | typedef void_ item5; | |
623 | typedef T4 back; | |
624 | typedef v_iter< type,0 > begin; | |
625 | typedef v_iter< type,5 > end; | |
626 | }; | |
627 | ||
628 | template<> | |
629 | struct push_front_impl< aux::vector_tag<4> > | |
630 | { | |
631 | template< typename Vector, typename T > struct apply | |
632 | { | |
633 | typedef vector5< | |
634 | T | |
635 | , | |
636 | typename Vector::item0, typename Vector::item1 | |
637 | , typename Vector::item2, typename Vector::item3 | |
638 | > type; | |
639 | }; | |
640 | }; | |
641 | ||
642 | template<> | |
643 | struct pop_front_impl< aux::vector_tag<5> > | |
644 | { | |
645 | template< typename Vector > struct apply | |
646 | { | |
647 | typedef vector4< | |
648 | typename Vector::item1, typename Vector::item2 | |
649 | , typename Vector::item3, typename Vector::item4 | |
650 | > type; | |
651 | }; | |
652 | }; | |
653 | ||
654 | template<> | |
655 | struct push_back_impl< aux::vector_tag<4> > | |
656 | { | |
657 | template< typename Vector, typename T > struct apply | |
658 | { | |
659 | typedef vector5< | |
660 | typename Vector::item0, typename Vector::item1 | |
661 | , typename Vector::item2, typename Vector::item3 | |
662 | , | |
663 | T | |
664 | > type; | |
665 | }; | |
666 | }; | |
667 | ||
668 | template<> | |
669 | struct pop_back_impl< aux::vector_tag<5> > | |
670 | { | |
671 | template< typename Vector > struct apply | |
672 | { | |
673 | typedef vector4< | |
674 | typename Vector::item0, typename Vector::item1 | |
675 | , typename Vector::item2, typename Vector::item3 | |
676 | > type; | |
677 | }; | |
678 | }; | |
679 | ||
680 | namespace aux { | |
681 | template<> struct v_at_impl<5> | |
682 | { | |
683 | template< typename V_ > struct result_ | |
684 | { | |
685 | typedef typename V_::item5 type; | |
686 | }; | |
687 | }; | |
688 | ||
689 | } | |
690 | ||
691 | template<> | |
692 | struct at_impl< aux::vector_tag<5> > | |
693 | { | |
694 | template< typename V_, typename N > struct apply | |
695 | { | |
696 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
697 | ::template result_<V_>::type type; | |
698 | }; | |
699 | }; | |
700 | ||
701 | template<> | |
702 | struct front_impl< aux::vector_tag<5> > | |
703 | { | |
704 | template< typename Vector > struct apply | |
705 | { | |
706 | typedef typename Vector::item0 type; | |
707 | }; | |
708 | }; | |
709 | ||
710 | template<> | |
711 | struct back_impl< aux::vector_tag<5> > | |
712 | { | |
713 | template< typename Vector > struct apply | |
714 | { | |
715 | typedef typename Vector::back type; | |
716 | }; | |
717 | }; | |
718 | ||
719 | template<> | |
720 | struct empty_impl< aux::vector_tag<5> > | |
721 | { | |
722 | template< typename Vector > struct apply | |
723 | : false_ | |
724 | { | |
725 | }; | |
726 | }; | |
727 | ||
728 | template<> | |
729 | struct size_impl< aux::vector_tag<5> > | |
730 | { | |
731 | template< typename Vector > struct apply | |
732 | : long_<5> | |
733 | { | |
734 | }; | |
735 | }; | |
736 | ||
737 | template<> | |
738 | struct O1_size_impl< aux::vector_tag<5> > | |
739 | : size_impl< aux::vector_tag<5> > | |
740 | { | |
741 | }; | |
742 | ||
743 | template<> | |
744 | struct clear_impl< aux::vector_tag<5> > | |
745 | { | |
746 | template< typename Vector > struct apply | |
747 | { | |
748 | typedef vector0<> type; | |
749 | }; | |
750 | }; | |
751 | ||
752 | template< | |
753 | typename T0, typename T1, typename T2, typename T3, typename T4 | |
754 | , typename T5 | |
755 | > | |
756 | struct vector6 | |
757 | { | |
758 | typedef aux::vector_tag<6> tag; | |
759 | typedef vector6 type; | |
760 | typedef T0 item0; | |
761 | typedef T1 item1; | |
762 | typedef T2 item2; | |
763 | typedef T3 item3; | |
764 | typedef T4 item4; | |
765 | typedef T5 item5; | |
766 | ||
767 | ||
768 | typedef void_ item6; | |
769 | typedef T5 back; | |
770 | typedef v_iter< type,0 > begin; | |
771 | typedef v_iter< type,6 > end; | |
772 | }; | |
773 | ||
774 | template<> | |
775 | struct push_front_impl< aux::vector_tag<5> > | |
776 | { | |
777 | template< typename Vector, typename T > struct apply | |
778 | { | |
779 | typedef vector6< | |
780 | T | |
781 | , | |
782 | typename Vector::item0, typename Vector::item1 | |
783 | , typename Vector::item2, typename Vector::item3 | |
784 | , typename Vector::item4 | |
785 | > type; | |
786 | }; | |
787 | }; | |
788 | ||
789 | template<> | |
790 | struct pop_front_impl< aux::vector_tag<6> > | |
791 | { | |
792 | template< typename Vector > struct apply | |
793 | { | |
794 | typedef vector5< | |
795 | typename Vector::item1, typename Vector::item2 | |
796 | , typename Vector::item3, typename Vector::item4 | |
797 | , typename Vector::item5 | |
798 | > type; | |
799 | }; | |
800 | }; | |
801 | ||
802 | template<> | |
803 | struct push_back_impl< aux::vector_tag<5> > | |
804 | { | |
805 | template< typename Vector, typename T > struct apply | |
806 | { | |
807 | typedef vector6< | |
808 | typename Vector::item0, typename Vector::item1 | |
809 | , typename Vector::item2, typename Vector::item3 | |
810 | , typename Vector::item4 | |
811 | , | |
812 | T | |
813 | > type; | |
814 | }; | |
815 | }; | |
816 | ||
817 | template<> | |
818 | struct pop_back_impl< aux::vector_tag<6> > | |
819 | { | |
820 | template< typename Vector > struct apply | |
821 | { | |
822 | typedef vector5< | |
823 | typename Vector::item0, typename Vector::item1 | |
824 | , typename Vector::item2, typename Vector::item3 | |
825 | , typename Vector::item4 | |
826 | > type; | |
827 | }; | |
828 | }; | |
829 | ||
830 | namespace aux { | |
831 | template<> struct v_at_impl<6> | |
832 | { | |
833 | template< typename V_ > struct result_ | |
834 | { | |
835 | typedef typename V_::item6 type; | |
836 | }; | |
837 | }; | |
838 | ||
839 | } | |
840 | ||
841 | template<> | |
842 | struct at_impl< aux::vector_tag<6> > | |
843 | { | |
844 | template< typename V_, typename N > struct apply | |
845 | { | |
846 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
847 | ::template result_<V_>::type type; | |
848 | }; | |
849 | }; | |
850 | ||
851 | template<> | |
852 | struct front_impl< aux::vector_tag<6> > | |
853 | { | |
854 | template< typename Vector > struct apply | |
855 | { | |
856 | typedef typename Vector::item0 type; | |
857 | }; | |
858 | }; | |
859 | ||
860 | template<> | |
861 | struct back_impl< aux::vector_tag<6> > | |
862 | { | |
863 | template< typename Vector > struct apply | |
864 | { | |
865 | typedef typename Vector::back type; | |
866 | }; | |
867 | }; | |
868 | ||
869 | template<> | |
870 | struct empty_impl< aux::vector_tag<6> > | |
871 | { | |
872 | template< typename Vector > struct apply | |
873 | : false_ | |
874 | { | |
875 | }; | |
876 | }; | |
877 | ||
878 | template<> | |
879 | struct size_impl< aux::vector_tag<6> > | |
880 | { | |
881 | template< typename Vector > struct apply | |
882 | : long_<6> | |
883 | { | |
884 | }; | |
885 | }; | |
886 | ||
887 | template<> | |
888 | struct O1_size_impl< aux::vector_tag<6> > | |
889 | : size_impl< aux::vector_tag<6> > | |
890 | { | |
891 | }; | |
892 | ||
893 | template<> | |
894 | struct clear_impl< aux::vector_tag<6> > | |
895 | { | |
896 | template< typename Vector > struct apply | |
897 | { | |
898 | typedef vector0<> type; | |
899 | }; | |
900 | }; | |
901 | ||
902 | template< | |
903 | typename T0, typename T1, typename T2, typename T3, typename T4 | |
904 | , typename T5, typename T6 | |
905 | > | |
906 | struct vector7 | |
907 | { | |
908 | typedef aux::vector_tag<7> tag; | |
909 | typedef vector7 type; | |
910 | typedef T0 item0; | |
911 | typedef T1 item1; | |
912 | typedef T2 item2; | |
913 | typedef T3 item3; | |
914 | typedef T4 item4; | |
915 | typedef T5 item5; | |
916 | typedef T6 item6; | |
917 | ||
918 | ||
919 | typedef void_ item7; | |
920 | typedef T6 back; | |
921 | typedef v_iter< type,0 > begin; | |
922 | typedef v_iter< type,7 > end; | |
923 | }; | |
924 | ||
925 | template<> | |
926 | struct push_front_impl< aux::vector_tag<6> > | |
927 | { | |
928 | template< typename Vector, typename T > struct apply | |
929 | { | |
930 | typedef vector7< | |
931 | T | |
932 | , | |
933 | typename Vector::item0, typename Vector::item1 | |
934 | , typename Vector::item2, typename Vector::item3 | |
935 | , typename Vector::item4, typename Vector::item5 | |
936 | > type; | |
937 | }; | |
938 | }; | |
939 | ||
940 | template<> | |
941 | struct pop_front_impl< aux::vector_tag<7> > | |
942 | { | |
943 | template< typename Vector > struct apply | |
944 | { | |
945 | typedef vector6< | |
946 | typename Vector::item1, typename Vector::item2 | |
947 | , typename Vector::item3, typename Vector::item4 | |
948 | , typename Vector::item5, typename Vector::item6 | |
949 | > type; | |
950 | }; | |
951 | }; | |
952 | ||
953 | template<> | |
954 | struct push_back_impl< aux::vector_tag<6> > | |
955 | { | |
956 | template< typename Vector, typename T > struct apply | |
957 | { | |
958 | typedef vector7< | |
959 | typename Vector::item0, typename Vector::item1 | |
960 | , typename Vector::item2, typename Vector::item3 | |
961 | , typename Vector::item4, typename Vector::item5 | |
962 | , | |
963 | T | |
964 | > type; | |
965 | }; | |
966 | }; | |
967 | ||
968 | template<> | |
969 | struct pop_back_impl< aux::vector_tag<7> > | |
970 | { | |
971 | template< typename Vector > struct apply | |
972 | { | |
973 | typedef vector6< | |
974 | typename Vector::item0, typename Vector::item1 | |
975 | , typename Vector::item2, typename Vector::item3 | |
976 | , typename Vector::item4, typename Vector::item5 | |
977 | > type; | |
978 | }; | |
979 | }; | |
980 | ||
981 | namespace aux { | |
982 | template<> struct v_at_impl<7> | |
983 | { | |
984 | template< typename V_ > struct result_ | |
985 | { | |
986 | typedef typename V_::item7 type; | |
987 | }; | |
988 | }; | |
989 | ||
990 | } | |
991 | ||
992 | template<> | |
993 | struct at_impl< aux::vector_tag<7> > | |
994 | { | |
995 | template< typename V_, typename N > struct apply | |
996 | { | |
997 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
998 | ::template result_<V_>::type type; | |
999 | }; | |
1000 | }; | |
1001 | ||
1002 | template<> | |
1003 | struct front_impl< aux::vector_tag<7> > | |
1004 | { | |
1005 | template< typename Vector > struct apply | |
1006 | { | |
1007 | typedef typename Vector::item0 type; | |
1008 | }; | |
1009 | }; | |
1010 | ||
1011 | template<> | |
1012 | struct back_impl< aux::vector_tag<7> > | |
1013 | { | |
1014 | template< typename Vector > struct apply | |
1015 | { | |
1016 | typedef typename Vector::back type; | |
1017 | }; | |
1018 | }; | |
1019 | ||
1020 | template<> | |
1021 | struct empty_impl< aux::vector_tag<7> > | |
1022 | { | |
1023 | template< typename Vector > struct apply | |
1024 | : false_ | |
1025 | { | |
1026 | }; | |
1027 | }; | |
1028 | ||
1029 | template<> | |
1030 | struct size_impl< aux::vector_tag<7> > | |
1031 | { | |
1032 | template< typename Vector > struct apply | |
1033 | : long_<7> | |
1034 | { | |
1035 | }; | |
1036 | }; | |
1037 | ||
1038 | template<> | |
1039 | struct O1_size_impl< aux::vector_tag<7> > | |
1040 | : size_impl< aux::vector_tag<7> > | |
1041 | { | |
1042 | }; | |
1043 | ||
1044 | template<> | |
1045 | struct clear_impl< aux::vector_tag<7> > | |
1046 | { | |
1047 | template< typename Vector > struct apply | |
1048 | { | |
1049 | typedef vector0<> type; | |
1050 | }; | |
1051 | }; | |
1052 | ||
1053 | template< | |
1054 | typename T0, typename T1, typename T2, typename T3, typename T4 | |
1055 | , typename T5, typename T6, typename T7 | |
1056 | > | |
1057 | struct vector8 | |
1058 | { | |
1059 | typedef aux::vector_tag<8> tag; | |
1060 | typedef vector8 type; | |
1061 | typedef T0 item0; | |
1062 | typedef T1 item1; | |
1063 | typedef T2 item2; | |
1064 | typedef T3 item3; | |
1065 | typedef T4 item4; | |
1066 | typedef T5 item5; | |
1067 | typedef T6 item6; | |
1068 | typedef T7 item7; | |
1069 | ||
1070 | ||
1071 | typedef void_ item8; | |
1072 | typedef T7 back; | |
1073 | typedef v_iter< type,0 > begin; | |
1074 | typedef v_iter< type,8 > end; | |
1075 | }; | |
1076 | ||
1077 | template<> | |
1078 | struct push_front_impl< aux::vector_tag<7> > | |
1079 | { | |
1080 | template< typename Vector, typename T > struct apply | |
1081 | { | |
1082 | typedef vector8< | |
1083 | T | |
1084 | , | |
1085 | typename Vector::item0, typename Vector::item1 | |
1086 | , typename Vector::item2, typename Vector::item3 | |
1087 | , typename Vector::item4, typename Vector::item5 | |
1088 | , typename Vector::item6 | |
1089 | > type; | |
1090 | }; | |
1091 | }; | |
1092 | ||
1093 | template<> | |
1094 | struct pop_front_impl< aux::vector_tag<8> > | |
1095 | { | |
1096 | template< typename Vector > struct apply | |
1097 | { | |
1098 | typedef vector7< | |
1099 | typename Vector::item1, typename Vector::item2 | |
1100 | , typename Vector::item3, typename Vector::item4 | |
1101 | , typename Vector::item5, typename Vector::item6 | |
1102 | , typename Vector::item7 | |
1103 | > type; | |
1104 | }; | |
1105 | }; | |
1106 | ||
1107 | template<> | |
1108 | struct push_back_impl< aux::vector_tag<7> > | |
1109 | { | |
1110 | template< typename Vector, typename T > struct apply | |
1111 | { | |
1112 | typedef vector8< | |
1113 | typename Vector::item0, typename Vector::item1 | |
1114 | , typename Vector::item2, typename Vector::item3 | |
1115 | , typename Vector::item4, typename Vector::item5 | |
1116 | , typename Vector::item6 | |
1117 | , | |
1118 | T | |
1119 | > type; | |
1120 | }; | |
1121 | }; | |
1122 | ||
1123 | template<> | |
1124 | struct pop_back_impl< aux::vector_tag<8> > | |
1125 | { | |
1126 | template< typename Vector > struct apply | |
1127 | { | |
1128 | typedef vector7< | |
1129 | typename Vector::item0, typename Vector::item1 | |
1130 | , typename Vector::item2, typename Vector::item3 | |
1131 | , typename Vector::item4, typename Vector::item5 | |
1132 | , typename Vector::item6 | |
1133 | > type; | |
1134 | }; | |
1135 | }; | |
1136 | ||
1137 | namespace aux { | |
1138 | template<> struct v_at_impl<8> | |
1139 | { | |
1140 | template< typename V_ > struct result_ | |
1141 | { | |
1142 | typedef typename V_::item8 type; | |
1143 | }; | |
1144 | }; | |
1145 | ||
1146 | } | |
1147 | ||
1148 | template<> | |
1149 | struct at_impl< aux::vector_tag<8> > | |
1150 | { | |
1151 | template< typename V_, typename N > struct apply | |
1152 | { | |
1153 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
1154 | ::template result_<V_>::type type; | |
1155 | }; | |
1156 | }; | |
1157 | ||
1158 | template<> | |
1159 | struct front_impl< aux::vector_tag<8> > | |
1160 | { | |
1161 | template< typename Vector > struct apply | |
1162 | { | |
1163 | typedef typename Vector::item0 type; | |
1164 | }; | |
1165 | }; | |
1166 | ||
1167 | template<> | |
1168 | struct back_impl< aux::vector_tag<8> > | |
1169 | { | |
1170 | template< typename Vector > struct apply | |
1171 | { | |
1172 | typedef typename Vector::back type; | |
1173 | }; | |
1174 | }; | |
1175 | ||
1176 | template<> | |
1177 | struct empty_impl< aux::vector_tag<8> > | |
1178 | { | |
1179 | template< typename Vector > struct apply | |
1180 | : false_ | |
1181 | { | |
1182 | }; | |
1183 | }; | |
1184 | ||
1185 | template<> | |
1186 | struct size_impl< aux::vector_tag<8> > | |
1187 | { | |
1188 | template< typename Vector > struct apply | |
1189 | : long_<8> | |
1190 | { | |
1191 | }; | |
1192 | }; | |
1193 | ||
1194 | template<> | |
1195 | struct O1_size_impl< aux::vector_tag<8> > | |
1196 | : size_impl< aux::vector_tag<8> > | |
1197 | { | |
1198 | }; | |
1199 | ||
1200 | template<> | |
1201 | struct clear_impl< aux::vector_tag<8> > | |
1202 | { | |
1203 | template< typename Vector > struct apply | |
1204 | { | |
1205 | typedef vector0<> type; | |
1206 | }; | |
1207 | }; | |
1208 | ||
1209 | template< | |
1210 | typename T0, typename T1, typename T2, typename T3, typename T4 | |
1211 | , typename T5, typename T6, typename T7, typename T8 | |
1212 | > | |
1213 | struct vector9 | |
1214 | { | |
1215 | typedef aux::vector_tag<9> tag; | |
1216 | typedef vector9 type; | |
1217 | typedef T0 item0; | |
1218 | typedef T1 item1; | |
1219 | typedef T2 item2; | |
1220 | typedef T3 item3; | |
1221 | typedef T4 item4; | |
1222 | typedef T5 item5; | |
1223 | typedef T6 item6; | |
1224 | typedef T7 item7; | |
1225 | typedef T8 item8; | |
1226 | ||
1227 | ||
1228 | typedef void_ item9; | |
1229 | typedef T8 back; | |
1230 | typedef v_iter< type,0 > begin; | |
1231 | typedef v_iter< type,9 > end; | |
1232 | }; | |
1233 | ||
1234 | template<> | |
1235 | struct push_front_impl< aux::vector_tag<8> > | |
1236 | { | |
1237 | template< typename Vector, typename T > struct apply | |
1238 | { | |
1239 | typedef vector9< | |
1240 | T | |
1241 | , | |
1242 | typename Vector::item0, typename Vector::item1 | |
1243 | , typename Vector::item2, typename Vector::item3 | |
1244 | , typename Vector::item4, typename Vector::item5 | |
1245 | , typename Vector::item6, typename Vector::item7 | |
1246 | > type; | |
1247 | }; | |
1248 | }; | |
1249 | ||
1250 | template<> | |
1251 | struct pop_front_impl< aux::vector_tag<9> > | |
1252 | { | |
1253 | template< typename Vector > struct apply | |
1254 | { | |
1255 | typedef vector8< | |
1256 | typename Vector::item1, typename Vector::item2 | |
1257 | , typename Vector::item3, typename Vector::item4 | |
1258 | , typename Vector::item5, typename Vector::item6 | |
1259 | , typename Vector::item7, typename Vector::item8 | |
1260 | > type; | |
1261 | }; | |
1262 | }; | |
1263 | ||
1264 | template<> | |
1265 | struct push_back_impl< aux::vector_tag<8> > | |
1266 | { | |
1267 | template< typename Vector, typename T > struct apply | |
1268 | { | |
1269 | typedef vector9< | |
1270 | typename Vector::item0, typename Vector::item1 | |
1271 | , typename Vector::item2, typename Vector::item3 | |
1272 | , typename Vector::item4, typename Vector::item5 | |
1273 | , typename Vector::item6, typename Vector::item7 | |
1274 | , | |
1275 | T | |
1276 | > type; | |
1277 | }; | |
1278 | }; | |
1279 | ||
1280 | template<> | |
1281 | struct pop_back_impl< aux::vector_tag<9> > | |
1282 | { | |
1283 | template< typename Vector > struct apply | |
1284 | { | |
1285 | typedef vector8< | |
1286 | typename Vector::item0, typename Vector::item1 | |
1287 | , typename Vector::item2, typename Vector::item3 | |
1288 | , typename Vector::item4, typename Vector::item5 | |
1289 | , typename Vector::item6, typename Vector::item7 | |
1290 | > type; | |
1291 | }; | |
1292 | }; | |
1293 | ||
1294 | namespace aux { | |
1295 | template<> struct v_at_impl<9> | |
1296 | { | |
1297 | template< typename V_ > struct result_ | |
1298 | { | |
1299 | typedef typename V_::item9 type; | |
1300 | }; | |
1301 | }; | |
1302 | ||
1303 | } | |
1304 | ||
1305 | template<> | |
1306 | struct at_impl< aux::vector_tag<9> > | |
1307 | { | |
1308 | template< typename V_, typename N > struct apply | |
1309 | { | |
1310 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
1311 | ::template result_<V_>::type type; | |
1312 | }; | |
1313 | }; | |
1314 | ||
1315 | template<> | |
1316 | struct front_impl< aux::vector_tag<9> > | |
1317 | { | |
1318 | template< typename Vector > struct apply | |
1319 | { | |
1320 | typedef typename Vector::item0 type; | |
1321 | }; | |
1322 | }; | |
1323 | ||
1324 | template<> | |
1325 | struct back_impl< aux::vector_tag<9> > | |
1326 | { | |
1327 | template< typename Vector > struct apply | |
1328 | { | |
1329 | typedef typename Vector::back type; | |
1330 | }; | |
1331 | }; | |
1332 | ||
1333 | template<> | |
1334 | struct empty_impl< aux::vector_tag<9> > | |
1335 | { | |
1336 | template< typename Vector > struct apply | |
1337 | : false_ | |
1338 | { | |
1339 | }; | |
1340 | }; | |
1341 | ||
1342 | template<> | |
1343 | struct size_impl< aux::vector_tag<9> > | |
1344 | { | |
1345 | template< typename Vector > struct apply | |
1346 | : long_<9> | |
1347 | { | |
1348 | }; | |
1349 | }; | |
1350 | ||
1351 | template<> | |
1352 | struct O1_size_impl< aux::vector_tag<9> > | |
1353 | : size_impl< aux::vector_tag<9> > | |
1354 | { | |
1355 | }; | |
1356 | ||
1357 | template<> | |
1358 | struct clear_impl< aux::vector_tag<9> > | |
1359 | { | |
1360 | template< typename Vector > struct apply | |
1361 | { | |
1362 | typedef vector0<> type; | |
1363 | }; | |
1364 | }; | |
1365 | ||
1366 | template< | |
1367 | typename T0, typename T1, typename T2, typename T3, typename T4 | |
1368 | , typename T5, typename T6, typename T7, typename T8, typename T9 | |
1369 | > | |
1370 | struct vector10 | |
1371 | { | |
1372 | typedef aux::vector_tag<10> tag; | |
1373 | typedef vector10 type; | |
1374 | typedef T0 item0; | |
1375 | typedef T1 item1; | |
1376 | typedef T2 item2; | |
1377 | typedef T3 item3; | |
1378 | typedef T4 item4; | |
1379 | typedef T5 item5; | |
1380 | typedef T6 item6; | |
1381 | typedef T7 item7; | |
1382 | typedef T8 item8; | |
1383 | typedef T9 item9; | |
1384 | ||
1385 | ||
1386 | typedef void_ item10; | |
1387 | typedef T9 back; | |
1388 | typedef v_iter< type,0 > begin; | |
1389 | typedef v_iter< type,10 > end; | |
1390 | }; | |
1391 | ||
1392 | template<> | |
1393 | struct push_front_impl< aux::vector_tag<9> > | |
1394 | { | |
1395 | template< typename Vector, typename T > struct apply | |
1396 | { | |
1397 | typedef vector10< | |
1398 | T | |
1399 | , | |
1400 | typename Vector::item0, typename Vector::item1 | |
1401 | , typename Vector::item2, typename Vector::item3 | |
1402 | , typename Vector::item4, typename Vector::item5 | |
1403 | , typename Vector::item6, typename Vector::item7 | |
1404 | , typename Vector::item8 | |
1405 | > type; | |
1406 | }; | |
1407 | }; | |
1408 | ||
1409 | template<> | |
1410 | struct pop_front_impl< aux::vector_tag<10> > | |
1411 | { | |
1412 | template< typename Vector > struct apply | |
1413 | { | |
1414 | typedef vector9< | |
1415 | typename Vector::item1, typename Vector::item2 | |
1416 | , typename Vector::item3, typename Vector::item4 | |
1417 | , typename Vector::item5, typename Vector::item6 | |
1418 | , typename Vector::item7, typename Vector::item8 | |
1419 | , typename Vector::item9 | |
1420 | > type; | |
1421 | }; | |
1422 | }; | |
1423 | ||
1424 | template<> | |
1425 | struct push_back_impl< aux::vector_tag<9> > | |
1426 | { | |
1427 | template< typename Vector, typename T > struct apply | |
1428 | { | |
1429 | typedef vector10< | |
1430 | typename Vector::item0, typename Vector::item1 | |
1431 | , typename Vector::item2, typename Vector::item3 | |
1432 | , typename Vector::item4, typename Vector::item5 | |
1433 | , typename Vector::item6, typename Vector::item7 | |
1434 | , typename Vector::item8 | |
1435 | , | |
1436 | T | |
1437 | > type; | |
1438 | }; | |
1439 | }; | |
1440 | ||
1441 | template<> | |
1442 | struct pop_back_impl< aux::vector_tag<10> > | |
1443 | { | |
1444 | template< typename Vector > struct apply | |
1445 | { | |
1446 | typedef vector9< | |
1447 | typename Vector::item0, typename Vector::item1 | |
1448 | , typename Vector::item2, typename Vector::item3 | |
1449 | , typename Vector::item4, typename Vector::item5 | |
1450 | , typename Vector::item6, typename Vector::item7 | |
1451 | , typename Vector::item8 | |
1452 | > type; | |
1453 | }; | |
1454 | }; | |
1455 | ||
1456 | namespace aux { | |
1457 | template<> struct v_at_impl<10> | |
1458 | { | |
1459 | template< typename V_ > struct result_ | |
1460 | { | |
1461 | typedef typename V_::item10 type; | |
1462 | }; | |
1463 | }; | |
1464 | ||
1465 | } | |
1466 | ||
1467 | template<> | |
1468 | struct at_impl< aux::vector_tag<10> > | |
1469 | { | |
1470 | template< typename V_, typename N > struct apply | |
1471 | { | |
1472 | typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value> | |
1473 | ::template result_<V_>::type type; | |
1474 | }; | |
1475 | }; | |
1476 | ||
1477 | template<> | |
1478 | struct front_impl< aux::vector_tag<10> > | |
1479 | { | |
1480 | template< typename Vector > struct apply | |
1481 | { | |
1482 | typedef typename Vector::item0 type; | |
1483 | }; | |
1484 | }; | |
1485 | ||
1486 | template<> | |
1487 | struct back_impl< aux::vector_tag<10> > | |
1488 | { | |
1489 | template< typename Vector > struct apply | |
1490 | { | |
1491 | typedef typename Vector::back type; | |
1492 | }; | |
1493 | }; | |
1494 | ||
1495 | template<> | |
1496 | struct empty_impl< aux::vector_tag<10> > | |
1497 | { | |
1498 | template< typename Vector > struct apply | |
1499 | : false_ | |
1500 | { | |
1501 | }; | |
1502 | }; | |
1503 | ||
1504 | template<> | |
1505 | struct size_impl< aux::vector_tag<10> > | |
1506 | { | |
1507 | template< typename Vector > struct apply | |
1508 | : long_<10> | |
1509 | { | |
1510 | }; | |
1511 | }; | |
1512 | ||
1513 | template<> | |
1514 | struct O1_size_impl< aux::vector_tag<10> > | |
1515 | : size_impl< aux::vector_tag<10> > | |
1516 | { | |
1517 | }; | |
1518 | ||
1519 | template<> | |
1520 | struct clear_impl< aux::vector_tag<10> > | |
1521 | { | |
1522 | template< typename Vector > struct apply | |
1523 | { | |
1524 | typedef vector0<> type; | |
1525 | }; | |
1526 | }; | |
1527 | ||
1528 | }} |