File indexing completed on 2025-01-18 09:41:49
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 namespace boost { namespace mpl {
0013
0014 template< typename V >
0015 struct v_at< V,0 >
0016 {
0017 typedef typename V::item0 type;
0018 };
0019
0020 template<
0021 typename T0
0022 >
0023 struct vector1
0024 {
0025 typedef aux::vector_tag<1> tag;
0026 typedef vector1 type;
0027 typedef T0 item0;
0028 typedef void_ item1;
0029 typedef T0 back;
0030 typedef v_iter< type,0 > begin;
0031 typedef v_iter< type,1 > end;
0032 };
0033
0034 template<>
0035 struct push_front_impl< aux::vector_tag<0> >
0036 {
0037 template< typename Vector, typename T > struct apply
0038 {
0039 typedef vector1<
0040 T
0041 > type;
0042 };
0043 };
0044
0045 template<>
0046 struct pop_front_impl< aux::vector_tag<1> >
0047 {
0048 template< typename Vector > struct apply
0049 {
0050 typedef vector0<
0051
0052 > type;
0053 };
0054 };
0055
0056 template<>
0057 struct push_back_impl< aux::vector_tag<0> >
0058 {
0059 template< typename Vector, typename T > struct apply
0060 {
0061 typedef vector1<
0062
0063 T
0064 > type;
0065 };
0066 };
0067
0068 template<>
0069 struct pop_back_impl< aux::vector_tag<1> >
0070 {
0071 template< typename Vector > struct apply
0072 {
0073 typedef vector0<
0074
0075 > type;
0076 };
0077 };
0078
0079 template< typename V >
0080 struct v_at< V,1 >
0081 {
0082 typedef typename V::item1 type;
0083 };
0084
0085 template<
0086 typename T0, typename T1
0087 >
0088 struct vector2
0089 {
0090 typedef aux::vector_tag<2> tag;
0091 typedef vector2 type;
0092 typedef T0 item0;
0093 typedef T1 item1;
0094
0095
0096 typedef void_ item2;
0097 typedef T1 back;
0098 typedef v_iter< type,0 > begin;
0099 typedef v_iter< type,2 > end;
0100 };
0101
0102 template<>
0103 struct push_front_impl< aux::vector_tag<1> >
0104 {
0105 template< typename Vector, typename T > struct apply
0106 {
0107 typedef vector2<
0108 T
0109 ,
0110 typename Vector::item0
0111 > type;
0112 };
0113 };
0114
0115 template<>
0116 struct pop_front_impl< aux::vector_tag<2> >
0117 {
0118 template< typename Vector > struct apply
0119 {
0120 typedef vector1<
0121 typename Vector::item1
0122 > type;
0123 };
0124 };
0125
0126 template<>
0127 struct push_back_impl< aux::vector_tag<1> >
0128 {
0129 template< typename Vector, typename T > struct apply
0130 {
0131 typedef vector2<
0132 typename Vector::item0
0133 ,
0134 T
0135 > type;
0136 };
0137 };
0138
0139 template<>
0140 struct pop_back_impl< aux::vector_tag<2> >
0141 {
0142 template< typename Vector > struct apply
0143 {
0144 typedef vector1<
0145 typename Vector::item0
0146 > type;
0147 };
0148 };
0149
0150 template< typename V >
0151 struct v_at< V,2 >
0152 {
0153 typedef typename V::item2 type;
0154 };
0155
0156 template<
0157 typename T0, typename T1, typename T2
0158 >
0159 struct vector3
0160 {
0161 typedef aux::vector_tag<3> tag;
0162 typedef vector3 type;
0163 typedef T0 item0;
0164 typedef T1 item1;
0165 typedef T2 item2;
0166
0167
0168 typedef void_ item3;
0169 typedef T2 back;
0170 typedef v_iter< type,0 > begin;
0171 typedef v_iter< type,3 > end;
0172 };
0173
0174 template<>
0175 struct push_front_impl< aux::vector_tag<2> >
0176 {
0177 template< typename Vector, typename T > struct apply
0178 {
0179 typedef vector3<
0180 T
0181 ,
0182 typename Vector::item0, typename Vector::item1
0183 > type;
0184 };
0185 };
0186
0187 template<>
0188 struct pop_front_impl< aux::vector_tag<3> >
0189 {
0190 template< typename Vector > struct apply
0191 {
0192 typedef vector2<
0193 typename Vector::item1, typename Vector::item2
0194 > type;
0195 };
0196 };
0197
0198 template<>
0199 struct push_back_impl< aux::vector_tag<2> >
0200 {
0201 template< typename Vector, typename T > struct apply
0202 {
0203 typedef vector3<
0204 typename Vector::item0, typename Vector::item1
0205 ,
0206 T
0207 > type;
0208 };
0209 };
0210
0211 template<>
0212 struct pop_back_impl< aux::vector_tag<3> >
0213 {
0214 template< typename Vector > struct apply
0215 {
0216 typedef vector2<
0217 typename Vector::item0, typename Vector::item1
0218 > type;
0219 };
0220 };
0221
0222 template< typename V >
0223 struct v_at< V,3 >
0224 {
0225 typedef typename V::item3 type;
0226 };
0227
0228 template<
0229 typename T0, typename T1, typename T2, typename T3
0230 >
0231 struct vector4
0232 {
0233 typedef aux::vector_tag<4> tag;
0234 typedef vector4 type;
0235 typedef T0 item0;
0236 typedef T1 item1;
0237 typedef T2 item2;
0238 typedef T3 item3;
0239
0240
0241 typedef void_ item4;
0242 typedef T3 back;
0243 typedef v_iter< type,0 > begin;
0244 typedef v_iter< type,4 > end;
0245 };
0246
0247 template<>
0248 struct push_front_impl< aux::vector_tag<3> >
0249 {
0250 template< typename Vector, typename T > struct apply
0251 {
0252 typedef vector4<
0253 T
0254 ,
0255 typename Vector::item0, typename Vector::item1
0256 , typename Vector::item2
0257 > type;
0258 };
0259 };
0260
0261 template<>
0262 struct pop_front_impl< aux::vector_tag<4> >
0263 {
0264 template< typename Vector > struct apply
0265 {
0266 typedef vector3<
0267 typename Vector::item1, typename Vector::item2
0268 , typename Vector::item3
0269 > type;
0270 };
0271 };
0272
0273 template<>
0274 struct push_back_impl< aux::vector_tag<3> >
0275 {
0276 template< typename Vector, typename T > struct apply
0277 {
0278 typedef vector4<
0279 typename Vector::item0, typename Vector::item1
0280 , typename Vector::item2
0281 ,
0282 T
0283 > type;
0284 };
0285 };
0286
0287 template<>
0288 struct pop_back_impl< aux::vector_tag<4> >
0289 {
0290 template< typename Vector > struct apply
0291 {
0292 typedef vector3<
0293 typename Vector::item0, typename Vector::item1
0294 , typename Vector::item2
0295 > type;
0296 };
0297 };
0298
0299 template< typename V >
0300 struct v_at< V,4 >
0301 {
0302 typedef typename V::item4 type;
0303 };
0304
0305 template<
0306 typename T0, typename T1, typename T2, typename T3, typename T4
0307 >
0308 struct vector5
0309 {
0310 typedef aux::vector_tag<5> tag;
0311 typedef vector5 type;
0312 typedef T0 item0;
0313 typedef T1 item1;
0314 typedef T2 item2;
0315 typedef T3 item3;
0316 typedef T4 item4;
0317
0318
0319 typedef void_ item5;
0320 typedef T4 back;
0321 typedef v_iter< type,0 > begin;
0322 typedef v_iter< type,5 > end;
0323 };
0324
0325 template<>
0326 struct push_front_impl< aux::vector_tag<4> >
0327 {
0328 template< typename Vector, typename T > struct apply
0329 {
0330 typedef vector5<
0331 T
0332 ,
0333 typename Vector::item0, typename Vector::item1
0334 , typename Vector::item2, typename Vector::item3
0335 > type;
0336 };
0337 };
0338
0339 template<>
0340 struct pop_front_impl< aux::vector_tag<5> >
0341 {
0342 template< typename Vector > struct apply
0343 {
0344 typedef vector4<
0345 typename Vector::item1, typename Vector::item2
0346 , typename Vector::item3, typename Vector::item4
0347 > type;
0348 };
0349 };
0350
0351 template<>
0352 struct push_back_impl< aux::vector_tag<4> >
0353 {
0354 template< typename Vector, typename T > struct apply
0355 {
0356 typedef vector5<
0357 typename Vector::item0, typename Vector::item1
0358 , typename Vector::item2, typename Vector::item3
0359 ,
0360 T
0361 > type;
0362 };
0363 };
0364
0365 template<>
0366 struct pop_back_impl< aux::vector_tag<5> >
0367 {
0368 template< typename Vector > struct apply
0369 {
0370 typedef vector4<
0371 typename Vector::item0, typename Vector::item1
0372 , typename Vector::item2, typename Vector::item3
0373 > type;
0374 };
0375 };
0376
0377 template< typename V >
0378 struct v_at< V,5 >
0379 {
0380 typedef typename V::item5 type;
0381 };
0382
0383 template<
0384 typename T0, typename T1, typename T2, typename T3, typename T4
0385 , typename T5
0386 >
0387 struct vector6
0388 {
0389 typedef aux::vector_tag<6> tag;
0390 typedef vector6 type;
0391 typedef T0 item0;
0392 typedef T1 item1;
0393 typedef T2 item2;
0394 typedef T3 item3;
0395 typedef T4 item4;
0396 typedef T5 item5;
0397
0398
0399 typedef void_ item6;
0400 typedef T5 back;
0401 typedef v_iter< type,0 > begin;
0402 typedef v_iter< type,6 > end;
0403 };
0404
0405 template<>
0406 struct push_front_impl< aux::vector_tag<5> >
0407 {
0408 template< typename Vector, typename T > struct apply
0409 {
0410 typedef vector6<
0411 T
0412 ,
0413 typename Vector::item0, typename Vector::item1
0414 , typename Vector::item2, typename Vector::item3
0415 , typename Vector::item4
0416 > type;
0417 };
0418 };
0419
0420 template<>
0421 struct pop_front_impl< aux::vector_tag<6> >
0422 {
0423 template< typename Vector > struct apply
0424 {
0425 typedef vector5<
0426 typename Vector::item1, typename Vector::item2
0427 , typename Vector::item3, typename Vector::item4
0428 , typename Vector::item5
0429 > type;
0430 };
0431 };
0432
0433 template<>
0434 struct push_back_impl< aux::vector_tag<5> >
0435 {
0436 template< typename Vector, typename T > struct apply
0437 {
0438 typedef vector6<
0439 typename Vector::item0, typename Vector::item1
0440 , typename Vector::item2, typename Vector::item3
0441 , typename Vector::item4
0442 ,
0443 T
0444 > type;
0445 };
0446 };
0447
0448 template<>
0449 struct pop_back_impl< aux::vector_tag<6> >
0450 {
0451 template< typename Vector > struct apply
0452 {
0453 typedef vector5<
0454 typename Vector::item0, typename Vector::item1
0455 , typename Vector::item2, typename Vector::item3
0456 , typename Vector::item4
0457 > type;
0458 };
0459 };
0460
0461 template< typename V >
0462 struct v_at< V,6 >
0463 {
0464 typedef typename V::item6 type;
0465 };
0466
0467 template<
0468 typename T0, typename T1, typename T2, typename T3, typename T4
0469 , typename T5, typename T6
0470 >
0471 struct vector7
0472 {
0473 typedef aux::vector_tag<7> tag;
0474 typedef vector7 type;
0475 typedef T0 item0;
0476 typedef T1 item1;
0477 typedef T2 item2;
0478 typedef T3 item3;
0479 typedef T4 item4;
0480 typedef T5 item5;
0481 typedef T6 item6;
0482
0483
0484 typedef void_ item7;
0485 typedef T6 back;
0486 typedef v_iter< type,0 > begin;
0487 typedef v_iter< type,7 > end;
0488 };
0489
0490 template<>
0491 struct push_front_impl< aux::vector_tag<6> >
0492 {
0493 template< typename Vector, typename T > struct apply
0494 {
0495 typedef vector7<
0496 T
0497 ,
0498 typename Vector::item0, typename Vector::item1
0499 , typename Vector::item2, typename Vector::item3
0500 , typename Vector::item4, typename Vector::item5
0501 > type;
0502 };
0503 };
0504
0505 template<>
0506 struct pop_front_impl< aux::vector_tag<7> >
0507 {
0508 template< typename Vector > struct apply
0509 {
0510 typedef vector6<
0511 typename Vector::item1, typename Vector::item2
0512 , typename Vector::item3, typename Vector::item4
0513 , typename Vector::item5, typename Vector::item6
0514 > type;
0515 };
0516 };
0517
0518 template<>
0519 struct push_back_impl< aux::vector_tag<6> >
0520 {
0521 template< typename Vector, typename T > struct apply
0522 {
0523 typedef vector7<
0524 typename Vector::item0, typename Vector::item1
0525 , typename Vector::item2, typename Vector::item3
0526 , typename Vector::item4, typename Vector::item5
0527 ,
0528 T
0529 > type;
0530 };
0531 };
0532
0533 template<>
0534 struct pop_back_impl< aux::vector_tag<7> >
0535 {
0536 template< typename Vector > struct apply
0537 {
0538 typedef vector6<
0539 typename Vector::item0, typename Vector::item1
0540 , typename Vector::item2, typename Vector::item3
0541 , typename Vector::item4, typename Vector::item5
0542 > type;
0543 };
0544 };
0545
0546 template< typename V >
0547 struct v_at< V,7 >
0548 {
0549 typedef typename V::item7 type;
0550 };
0551
0552 template<
0553 typename T0, typename T1, typename T2, typename T3, typename T4
0554 , typename T5, typename T6, typename T7
0555 >
0556 struct vector8
0557 {
0558 typedef aux::vector_tag<8> tag;
0559 typedef vector8 type;
0560 typedef T0 item0;
0561 typedef T1 item1;
0562 typedef T2 item2;
0563 typedef T3 item3;
0564 typedef T4 item4;
0565 typedef T5 item5;
0566 typedef T6 item6;
0567 typedef T7 item7;
0568
0569
0570 typedef void_ item8;
0571 typedef T7 back;
0572 typedef v_iter< type,0 > begin;
0573 typedef v_iter< type,8 > end;
0574 };
0575
0576 template<>
0577 struct push_front_impl< aux::vector_tag<7> >
0578 {
0579 template< typename Vector, typename T > struct apply
0580 {
0581 typedef vector8<
0582 T
0583 ,
0584 typename Vector::item0, typename Vector::item1
0585 , typename Vector::item2, typename Vector::item3
0586 , typename Vector::item4, typename Vector::item5
0587 , typename Vector::item6
0588 > type;
0589 };
0590 };
0591
0592 template<>
0593 struct pop_front_impl< aux::vector_tag<8> >
0594 {
0595 template< typename Vector > struct apply
0596 {
0597 typedef vector7<
0598 typename Vector::item1, typename Vector::item2
0599 , typename Vector::item3, typename Vector::item4
0600 , typename Vector::item5, typename Vector::item6
0601 , typename Vector::item7
0602 > type;
0603 };
0604 };
0605
0606 template<>
0607 struct push_back_impl< aux::vector_tag<7> >
0608 {
0609 template< typename Vector, typename T > struct apply
0610 {
0611 typedef vector8<
0612 typename Vector::item0, typename Vector::item1
0613 , typename Vector::item2, typename Vector::item3
0614 , typename Vector::item4, typename Vector::item5
0615 , typename Vector::item6
0616 ,
0617 T
0618 > type;
0619 };
0620 };
0621
0622 template<>
0623 struct pop_back_impl< aux::vector_tag<8> >
0624 {
0625 template< typename Vector > struct apply
0626 {
0627 typedef vector7<
0628 typename Vector::item0, typename Vector::item1
0629 , typename Vector::item2, typename Vector::item3
0630 , typename Vector::item4, typename Vector::item5
0631 , typename Vector::item6
0632 > type;
0633 };
0634 };
0635
0636 template< typename V >
0637 struct v_at< V,8 >
0638 {
0639 typedef typename V::item8 type;
0640 };
0641
0642 template<
0643 typename T0, typename T1, typename T2, typename T3, typename T4
0644 , typename T5, typename T6, typename T7, typename T8
0645 >
0646 struct vector9
0647 {
0648 typedef aux::vector_tag<9> tag;
0649 typedef vector9 type;
0650 typedef T0 item0;
0651 typedef T1 item1;
0652 typedef T2 item2;
0653 typedef T3 item3;
0654 typedef T4 item4;
0655 typedef T5 item5;
0656 typedef T6 item6;
0657 typedef T7 item7;
0658 typedef T8 item8;
0659
0660
0661 typedef void_ item9;
0662 typedef T8 back;
0663 typedef v_iter< type,0 > begin;
0664 typedef v_iter< type,9 > end;
0665 };
0666
0667 template<>
0668 struct push_front_impl< aux::vector_tag<8> >
0669 {
0670 template< typename Vector, typename T > struct apply
0671 {
0672 typedef vector9<
0673 T
0674 ,
0675 typename Vector::item0, typename Vector::item1
0676 , typename Vector::item2, typename Vector::item3
0677 , typename Vector::item4, typename Vector::item5
0678 , typename Vector::item6, typename Vector::item7
0679 > type;
0680 };
0681 };
0682
0683 template<>
0684 struct pop_front_impl< aux::vector_tag<9> >
0685 {
0686 template< typename Vector > struct apply
0687 {
0688 typedef vector8<
0689 typename Vector::item1, typename Vector::item2
0690 , typename Vector::item3, typename Vector::item4
0691 , typename Vector::item5, typename Vector::item6
0692 , typename Vector::item7, typename Vector::item8
0693 > type;
0694 };
0695 };
0696
0697 template<>
0698 struct push_back_impl< aux::vector_tag<8> >
0699 {
0700 template< typename Vector, typename T > struct apply
0701 {
0702 typedef vector9<
0703 typename Vector::item0, typename Vector::item1
0704 , typename Vector::item2, typename Vector::item3
0705 , typename Vector::item4, typename Vector::item5
0706 , typename Vector::item6, typename Vector::item7
0707 ,
0708 T
0709 > type;
0710 };
0711 };
0712
0713 template<>
0714 struct pop_back_impl< aux::vector_tag<9> >
0715 {
0716 template< typename Vector > struct apply
0717 {
0718 typedef vector8<
0719 typename Vector::item0, typename Vector::item1
0720 , typename Vector::item2, typename Vector::item3
0721 , typename Vector::item4, typename Vector::item5
0722 , typename Vector::item6, typename Vector::item7
0723 > type;
0724 };
0725 };
0726
0727 template< typename V >
0728 struct v_at< V,9 >
0729 {
0730 typedef typename V::item9 type;
0731 };
0732
0733 template<
0734 typename T0, typename T1, typename T2, typename T3, typename T4
0735 , typename T5, typename T6, typename T7, typename T8, typename T9
0736 >
0737 struct vector10
0738 {
0739 typedef aux::vector_tag<10> tag;
0740 typedef vector10 type;
0741 typedef T0 item0;
0742 typedef T1 item1;
0743 typedef T2 item2;
0744 typedef T3 item3;
0745 typedef T4 item4;
0746 typedef T5 item5;
0747 typedef T6 item6;
0748 typedef T7 item7;
0749 typedef T8 item8;
0750 typedef T9 item9;
0751
0752
0753 typedef void_ item10;
0754 typedef T9 back;
0755 typedef v_iter< type,0 > begin;
0756 typedef v_iter< type,10 > end;
0757 };
0758
0759 template<>
0760 struct push_front_impl< aux::vector_tag<9> >
0761 {
0762 template< typename Vector, typename T > struct apply
0763 {
0764 typedef vector10<
0765 T
0766 ,
0767 typename Vector::item0, typename Vector::item1
0768 , typename Vector::item2, typename Vector::item3
0769 , typename Vector::item4, typename Vector::item5
0770 , typename Vector::item6, typename Vector::item7
0771 , typename Vector::item8
0772 > type;
0773 };
0774 };
0775
0776 template<>
0777 struct pop_front_impl< aux::vector_tag<10> >
0778 {
0779 template< typename Vector > struct apply
0780 {
0781 typedef vector9<
0782 typename Vector::item1, typename Vector::item2
0783 , typename Vector::item3, typename Vector::item4
0784 , typename Vector::item5, typename Vector::item6
0785 , typename Vector::item7, typename Vector::item8
0786 , typename Vector::item9
0787 > type;
0788 };
0789 };
0790
0791 template<>
0792 struct push_back_impl< aux::vector_tag<9> >
0793 {
0794 template< typename Vector, typename T > struct apply
0795 {
0796 typedef vector10<
0797 typename Vector::item0, typename Vector::item1
0798 , typename Vector::item2, typename Vector::item3
0799 , typename Vector::item4, typename Vector::item5
0800 , typename Vector::item6, typename Vector::item7
0801 , typename Vector::item8
0802 ,
0803 T
0804 > type;
0805 };
0806 };
0807
0808 template<>
0809 struct pop_back_impl< aux::vector_tag<10> >
0810 {
0811 template< typename Vector > struct apply
0812 {
0813 typedef vector9<
0814 typename Vector::item0, typename Vector::item1
0815 , typename Vector::item2, typename Vector::item3
0816 , typename Vector::item4, typename Vector::item5
0817 , typename Vector::item6, typename Vector::item7
0818 , typename Vector::item8
0819 > type;
0820 };
0821 };
0822
0823 template< typename V >
0824 struct v_at< V,10 >
0825 {
0826 typedef typename V::item10 type;
0827 };
0828
0829 }}