vector10.hpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829
  1. // Copyright Aleksey Gurtovoy 2000-2004
  2. //
  3. // Distributed under the Boost Software License, Version 1.0.
  4. // (See accompanying file LICENSE_1_0.txt or copy at
  5. // http://www.boost.org/LICENSE_1_0.txt)
  6. //
  7. // Preprocessed version of "boost/mpl/vector/vector10.hpp" header
  8. // -- DO NOT modify by hand!
  9. namespace boost { namespace mpl {
  10. template< typename V >
  11. struct v_at< V,0 >
  12. {
  13. typedef typename V::item0 type;
  14. };
  15. template<
  16. typename T0
  17. >
  18. struct vector1
  19. {
  20. typedef aux::vector_tag<1> tag;
  21. typedef vector1 type;
  22. typedef T0 item0;
  23. typedef void_ item1;
  24. typedef T0 back;
  25. typedef v_iter< type,0 > begin;
  26. typedef v_iter< type,1 > end;
  27. };
  28. template<>
  29. struct push_front_impl< aux::vector_tag<0> >
  30. {
  31. template< typename Vector, typename T > struct apply
  32. {
  33. typedef vector1<
  34. T
  35. > type;
  36. };
  37. };
  38. template<>
  39. struct pop_front_impl< aux::vector_tag<1> >
  40. {
  41. template< typename Vector > struct apply
  42. {
  43. typedef vector0<
  44. > type;
  45. };
  46. };
  47. template<>
  48. struct push_back_impl< aux::vector_tag<0> >
  49. {
  50. template< typename Vector, typename T > struct apply
  51. {
  52. typedef vector1<
  53. T
  54. > type;
  55. };
  56. };
  57. template<>
  58. struct pop_back_impl< aux::vector_tag<1> >
  59. {
  60. template< typename Vector > struct apply
  61. {
  62. typedef vector0<
  63. > type;
  64. };
  65. };
  66. template< typename V >
  67. struct v_at< V,1 >
  68. {
  69. typedef typename V::item1 type;
  70. };
  71. template<
  72. typename T0, typename T1
  73. >
  74. struct vector2
  75. {
  76. typedef aux::vector_tag<2> tag;
  77. typedef vector2 type;
  78. typedef T0 item0;
  79. typedef T1 item1;
  80. typedef void_ item2;
  81. typedef T1 back;
  82. typedef v_iter< type,0 > begin;
  83. typedef v_iter< type,2 > end;
  84. };
  85. template<>
  86. struct push_front_impl< aux::vector_tag<1> >
  87. {
  88. template< typename Vector, typename T > struct apply
  89. {
  90. typedef vector2<
  91. T
  92. ,
  93. typename Vector::item0
  94. > type;
  95. };
  96. };
  97. template<>
  98. struct pop_front_impl< aux::vector_tag<2> >
  99. {
  100. template< typename Vector > struct apply
  101. {
  102. typedef vector1<
  103. typename Vector::item1
  104. > type;
  105. };
  106. };
  107. template<>
  108. struct push_back_impl< aux::vector_tag<1> >
  109. {
  110. template< typename Vector, typename T > struct apply
  111. {
  112. typedef vector2<
  113. typename Vector::item0
  114. ,
  115. T
  116. > type;
  117. };
  118. };
  119. template<>
  120. struct pop_back_impl< aux::vector_tag<2> >
  121. {
  122. template< typename Vector > struct apply
  123. {
  124. typedef vector1<
  125. typename Vector::item0
  126. > type;
  127. };
  128. };
  129. template< typename V >
  130. struct v_at< V,2 >
  131. {
  132. typedef typename V::item2 type;
  133. };
  134. template<
  135. typename T0, typename T1, typename T2
  136. >
  137. struct vector3
  138. {
  139. typedef aux::vector_tag<3> tag;
  140. typedef vector3 type;
  141. typedef T0 item0;
  142. typedef T1 item1;
  143. typedef T2 item2;
  144. typedef void_ item3;
  145. typedef T2 back;
  146. typedef v_iter< type,0 > begin;
  147. typedef v_iter< type,3 > end;
  148. };
  149. template<>
  150. struct push_front_impl< aux::vector_tag<2> >
  151. {
  152. template< typename Vector, typename T > struct apply
  153. {
  154. typedef vector3<
  155. T
  156. ,
  157. typename Vector::item0, typename Vector::item1
  158. > type;
  159. };
  160. };
  161. template<>
  162. struct pop_front_impl< aux::vector_tag<3> >
  163. {
  164. template< typename Vector > struct apply
  165. {
  166. typedef vector2<
  167. typename Vector::item1, typename Vector::item2
  168. > type;
  169. };
  170. };
  171. template<>
  172. struct push_back_impl< aux::vector_tag<2> >
  173. {
  174. template< typename Vector, typename T > struct apply
  175. {
  176. typedef vector3<
  177. typename Vector::item0, typename Vector::item1
  178. ,
  179. T
  180. > type;
  181. };
  182. };
  183. template<>
  184. struct pop_back_impl< aux::vector_tag<3> >
  185. {
  186. template< typename Vector > struct apply
  187. {
  188. typedef vector2<
  189. typename Vector::item0, typename Vector::item1
  190. > type;
  191. };
  192. };
  193. template< typename V >
  194. struct v_at< V,3 >
  195. {
  196. typedef typename V::item3 type;
  197. };
  198. template<
  199. typename T0, typename T1, typename T2, typename T3
  200. >
  201. struct vector4
  202. {
  203. typedef aux::vector_tag<4> tag;
  204. typedef vector4 type;
  205. typedef T0 item0;
  206. typedef T1 item1;
  207. typedef T2 item2;
  208. typedef T3 item3;
  209. typedef void_ item4;
  210. typedef T3 back;
  211. typedef v_iter< type,0 > begin;
  212. typedef v_iter< type,4 > end;
  213. };
  214. template<>
  215. struct push_front_impl< aux::vector_tag<3> >
  216. {
  217. template< typename Vector, typename T > struct apply
  218. {
  219. typedef vector4<
  220. T
  221. ,
  222. typename Vector::item0, typename Vector::item1
  223. , typename Vector::item2
  224. > type;
  225. };
  226. };
  227. template<>
  228. struct pop_front_impl< aux::vector_tag<4> >
  229. {
  230. template< typename Vector > struct apply
  231. {
  232. typedef vector3<
  233. typename Vector::item1, typename Vector::item2
  234. , typename Vector::item3
  235. > type;
  236. };
  237. };
  238. template<>
  239. struct push_back_impl< aux::vector_tag<3> >
  240. {
  241. template< typename Vector, typename T > struct apply
  242. {
  243. typedef vector4<
  244. typename Vector::item0, typename Vector::item1
  245. , typename Vector::item2
  246. ,
  247. T
  248. > type;
  249. };
  250. };
  251. template<>
  252. struct pop_back_impl< aux::vector_tag<4> >
  253. {
  254. template< typename Vector > struct apply
  255. {
  256. typedef vector3<
  257. typename Vector::item0, typename Vector::item1
  258. , typename Vector::item2
  259. > type;
  260. };
  261. };
  262. template< typename V >
  263. struct v_at< V,4 >
  264. {
  265. typedef typename V::item4 type;
  266. };
  267. template<
  268. typename T0, typename T1, typename T2, typename T3, typename T4
  269. >
  270. struct vector5
  271. {
  272. typedef aux::vector_tag<5> tag;
  273. typedef vector5 type;
  274. typedef T0 item0;
  275. typedef T1 item1;
  276. typedef T2 item2;
  277. typedef T3 item3;
  278. typedef T4 item4;
  279. typedef void_ item5;
  280. typedef T4 back;
  281. typedef v_iter< type,0 > begin;
  282. typedef v_iter< type,5 > end;
  283. };
  284. template<>
  285. struct push_front_impl< aux::vector_tag<4> >
  286. {
  287. template< typename Vector, typename T > struct apply
  288. {
  289. typedef vector5<
  290. T
  291. ,
  292. typename Vector::item0, typename Vector::item1
  293. , typename Vector::item2, typename Vector::item3
  294. > type;
  295. };
  296. };
  297. template<>
  298. struct pop_front_impl< aux::vector_tag<5> >
  299. {
  300. template< typename Vector > struct apply
  301. {
  302. typedef vector4<
  303. typename Vector::item1, typename Vector::item2
  304. , typename Vector::item3, typename Vector::item4
  305. > type;
  306. };
  307. };
  308. template<>
  309. struct push_back_impl< aux::vector_tag<4> >
  310. {
  311. template< typename Vector, typename T > struct apply
  312. {
  313. typedef vector5<
  314. typename Vector::item0, typename Vector::item1
  315. , typename Vector::item2, typename Vector::item3
  316. ,
  317. T
  318. > type;
  319. };
  320. };
  321. template<>
  322. struct pop_back_impl< aux::vector_tag<5> >
  323. {
  324. template< typename Vector > struct apply
  325. {
  326. typedef vector4<
  327. typename Vector::item0, typename Vector::item1
  328. , typename Vector::item2, typename Vector::item3
  329. > type;
  330. };
  331. };
  332. template< typename V >
  333. struct v_at< V,5 >
  334. {
  335. typedef typename V::item5 type;
  336. };
  337. template<
  338. typename T0, typename T1, typename T2, typename T3, typename T4
  339. , typename T5
  340. >
  341. struct vector6
  342. {
  343. typedef aux::vector_tag<6> tag;
  344. typedef vector6 type;
  345. typedef T0 item0;
  346. typedef T1 item1;
  347. typedef T2 item2;
  348. typedef T3 item3;
  349. typedef T4 item4;
  350. typedef T5 item5;
  351. typedef void_ item6;
  352. typedef T5 back;
  353. typedef v_iter< type,0 > begin;
  354. typedef v_iter< type,6 > end;
  355. };
  356. template<>
  357. struct push_front_impl< aux::vector_tag<5> >
  358. {
  359. template< typename Vector, typename T > struct apply
  360. {
  361. typedef vector6<
  362. T
  363. ,
  364. typename Vector::item0, typename Vector::item1
  365. , typename Vector::item2, typename Vector::item3
  366. , typename Vector::item4
  367. > type;
  368. };
  369. };
  370. template<>
  371. struct pop_front_impl< aux::vector_tag<6> >
  372. {
  373. template< typename Vector > struct apply
  374. {
  375. typedef vector5<
  376. typename Vector::item1, typename Vector::item2
  377. , typename Vector::item3, typename Vector::item4
  378. , typename Vector::item5
  379. > type;
  380. };
  381. };
  382. template<>
  383. struct push_back_impl< aux::vector_tag<5> >
  384. {
  385. template< typename Vector, typename T > struct apply
  386. {
  387. typedef vector6<
  388. typename Vector::item0, typename Vector::item1
  389. , typename Vector::item2, typename Vector::item3
  390. , typename Vector::item4
  391. ,
  392. T
  393. > type;
  394. };
  395. };
  396. template<>
  397. struct pop_back_impl< aux::vector_tag<6> >
  398. {
  399. template< typename Vector > struct apply
  400. {
  401. typedef vector5<
  402. typename Vector::item0, typename Vector::item1
  403. , typename Vector::item2, typename Vector::item3
  404. , typename Vector::item4
  405. > type;
  406. };
  407. };
  408. template< typename V >
  409. struct v_at< V,6 >
  410. {
  411. typedef typename V::item6 type;
  412. };
  413. template<
  414. typename T0, typename T1, typename T2, typename T3, typename T4
  415. , typename T5, typename T6
  416. >
  417. struct vector7
  418. {
  419. typedef aux::vector_tag<7> tag;
  420. typedef vector7 type;
  421. typedef T0 item0;
  422. typedef T1 item1;
  423. typedef T2 item2;
  424. typedef T3 item3;
  425. typedef T4 item4;
  426. typedef T5 item5;
  427. typedef T6 item6;
  428. typedef void_ item7;
  429. typedef T6 back;
  430. typedef v_iter< type,0 > begin;
  431. typedef v_iter< type,7 > end;
  432. };
  433. template<>
  434. struct push_front_impl< aux::vector_tag<6> >
  435. {
  436. template< typename Vector, typename T > struct apply
  437. {
  438. typedef vector7<
  439. T
  440. ,
  441. typename Vector::item0, typename Vector::item1
  442. , typename Vector::item2, typename Vector::item3
  443. , typename Vector::item4, typename Vector::item5
  444. > type;
  445. };
  446. };
  447. template<>
  448. struct pop_front_impl< aux::vector_tag<7> >
  449. {
  450. template< typename Vector > struct apply
  451. {
  452. typedef vector6<
  453. typename Vector::item1, typename Vector::item2
  454. , typename Vector::item3, typename Vector::item4
  455. , typename Vector::item5, typename Vector::item6
  456. > type;
  457. };
  458. };
  459. template<>
  460. struct push_back_impl< aux::vector_tag<6> >
  461. {
  462. template< typename Vector, typename T > struct apply
  463. {
  464. typedef vector7<
  465. typename Vector::item0, typename Vector::item1
  466. , typename Vector::item2, typename Vector::item3
  467. , typename Vector::item4, typename Vector::item5
  468. ,
  469. T
  470. > type;
  471. };
  472. };
  473. template<>
  474. struct pop_back_impl< aux::vector_tag<7> >
  475. {
  476. template< typename Vector > struct apply
  477. {
  478. typedef vector6<
  479. typename Vector::item0, typename Vector::item1
  480. , typename Vector::item2, typename Vector::item3
  481. , typename Vector::item4, typename Vector::item5
  482. > type;
  483. };
  484. };
  485. template< typename V >
  486. struct v_at< V,7 >
  487. {
  488. typedef typename V::item7 type;
  489. };
  490. template<
  491. typename T0, typename T1, typename T2, typename T3, typename T4
  492. , typename T5, typename T6, typename T7
  493. >
  494. struct vector8
  495. {
  496. typedef aux::vector_tag<8> tag;
  497. typedef vector8 type;
  498. typedef T0 item0;
  499. typedef T1 item1;
  500. typedef T2 item2;
  501. typedef T3 item3;
  502. typedef T4 item4;
  503. typedef T5 item5;
  504. typedef T6 item6;
  505. typedef T7 item7;
  506. typedef void_ item8;
  507. typedef T7 back;
  508. typedef v_iter< type,0 > begin;
  509. typedef v_iter< type,8 > end;
  510. };
  511. template<>
  512. struct push_front_impl< aux::vector_tag<7> >
  513. {
  514. template< typename Vector, typename T > struct apply
  515. {
  516. typedef vector8<
  517. T
  518. ,
  519. typename Vector::item0, typename Vector::item1
  520. , typename Vector::item2, typename Vector::item3
  521. , typename Vector::item4, typename Vector::item5
  522. , typename Vector::item6
  523. > type;
  524. };
  525. };
  526. template<>
  527. struct pop_front_impl< aux::vector_tag<8> >
  528. {
  529. template< typename Vector > struct apply
  530. {
  531. typedef vector7<
  532. typename Vector::item1, typename Vector::item2
  533. , typename Vector::item3, typename Vector::item4
  534. , typename Vector::item5, typename Vector::item6
  535. , typename Vector::item7
  536. > type;
  537. };
  538. };
  539. template<>
  540. struct push_back_impl< aux::vector_tag<7> >
  541. {
  542. template< typename Vector, typename T > struct apply
  543. {
  544. typedef vector8<
  545. typename Vector::item0, typename Vector::item1
  546. , typename Vector::item2, typename Vector::item3
  547. , typename Vector::item4, typename Vector::item5
  548. , typename Vector::item6
  549. ,
  550. T
  551. > type;
  552. };
  553. };
  554. template<>
  555. struct pop_back_impl< aux::vector_tag<8> >
  556. {
  557. template< typename Vector > struct apply
  558. {
  559. typedef vector7<
  560. typename Vector::item0, typename Vector::item1
  561. , typename Vector::item2, typename Vector::item3
  562. , typename Vector::item4, typename Vector::item5
  563. , typename Vector::item6
  564. > type;
  565. };
  566. };
  567. template< typename V >
  568. struct v_at< V,8 >
  569. {
  570. typedef typename V::item8 type;
  571. };
  572. template<
  573. typename T0, typename T1, typename T2, typename T3, typename T4
  574. , typename T5, typename T6, typename T7, typename T8
  575. >
  576. struct vector9
  577. {
  578. typedef aux::vector_tag<9> tag;
  579. typedef vector9 type;
  580. typedef T0 item0;
  581. typedef T1 item1;
  582. typedef T2 item2;
  583. typedef T3 item3;
  584. typedef T4 item4;
  585. typedef T5 item5;
  586. typedef T6 item6;
  587. typedef T7 item7;
  588. typedef T8 item8;
  589. typedef void_ item9;
  590. typedef T8 back;
  591. typedef v_iter< type,0 > begin;
  592. typedef v_iter< type,9 > end;
  593. };
  594. template<>
  595. struct push_front_impl< aux::vector_tag<8> >
  596. {
  597. template< typename Vector, typename T > struct apply
  598. {
  599. typedef vector9<
  600. T
  601. ,
  602. typename Vector::item0, typename Vector::item1
  603. , typename Vector::item2, typename Vector::item3
  604. , typename Vector::item4, typename Vector::item5
  605. , typename Vector::item6, typename Vector::item7
  606. > type;
  607. };
  608. };
  609. template<>
  610. struct pop_front_impl< aux::vector_tag<9> >
  611. {
  612. template< typename Vector > struct apply
  613. {
  614. typedef vector8<
  615. typename Vector::item1, typename Vector::item2
  616. , typename Vector::item3, typename Vector::item4
  617. , typename Vector::item5, typename Vector::item6
  618. , typename Vector::item7, typename Vector::item8
  619. > type;
  620. };
  621. };
  622. template<>
  623. struct push_back_impl< aux::vector_tag<8> >
  624. {
  625. template< typename Vector, typename T > struct apply
  626. {
  627. typedef vector9<
  628. typename Vector::item0, typename Vector::item1
  629. , typename Vector::item2, typename Vector::item3
  630. , typename Vector::item4, typename Vector::item5
  631. , typename Vector::item6, typename Vector::item7
  632. ,
  633. T
  634. > type;
  635. };
  636. };
  637. template<>
  638. struct pop_back_impl< aux::vector_tag<9> >
  639. {
  640. template< typename Vector > struct apply
  641. {
  642. typedef vector8<
  643. typename Vector::item0, typename Vector::item1
  644. , typename Vector::item2, typename Vector::item3
  645. , typename Vector::item4, typename Vector::item5
  646. , typename Vector::item6, typename Vector::item7
  647. > type;
  648. };
  649. };
  650. template< typename V >
  651. struct v_at< V,9 >
  652. {
  653. typedef typename V::item9 type;
  654. };
  655. template<
  656. typename T0, typename T1, typename T2, typename T3, typename T4
  657. , typename T5, typename T6, typename T7, typename T8, typename T9
  658. >
  659. struct vector10
  660. {
  661. typedef aux::vector_tag<10> tag;
  662. typedef vector10 type;
  663. typedef T0 item0;
  664. typedef T1 item1;
  665. typedef T2 item2;
  666. typedef T3 item3;
  667. typedef T4 item4;
  668. typedef T5 item5;
  669. typedef T6 item6;
  670. typedef T7 item7;
  671. typedef T8 item8;
  672. typedef T9 item9;
  673. typedef void_ item10;
  674. typedef T9 back;
  675. typedef v_iter< type,0 > begin;
  676. typedef v_iter< type,10 > end;
  677. };
  678. template<>
  679. struct push_front_impl< aux::vector_tag<9> >
  680. {
  681. template< typename Vector, typename T > struct apply
  682. {
  683. typedef vector10<
  684. T
  685. ,
  686. typename Vector::item0, typename Vector::item1
  687. , typename Vector::item2, typename Vector::item3
  688. , typename Vector::item4, typename Vector::item5
  689. , typename Vector::item6, typename Vector::item7
  690. , typename Vector::item8
  691. > type;
  692. };
  693. };
  694. template<>
  695. struct pop_front_impl< aux::vector_tag<10> >
  696. {
  697. template< typename Vector > struct apply
  698. {
  699. typedef vector9<
  700. typename Vector::item1, typename Vector::item2
  701. , typename Vector::item3, typename Vector::item4
  702. , typename Vector::item5, typename Vector::item6
  703. , typename Vector::item7, typename Vector::item8
  704. , typename Vector::item9
  705. > type;
  706. };
  707. };
  708. template<>
  709. struct push_back_impl< aux::vector_tag<9> >
  710. {
  711. template< typename Vector, typename T > struct apply
  712. {
  713. typedef vector10<
  714. typename Vector::item0, typename Vector::item1
  715. , typename Vector::item2, typename Vector::item3
  716. , typename Vector::item4, typename Vector::item5
  717. , typename Vector::item6, typename Vector::item7
  718. , typename Vector::item8
  719. ,
  720. T
  721. > type;
  722. };
  723. };
  724. template<>
  725. struct pop_back_impl< aux::vector_tag<10> >
  726. {
  727. template< typename Vector > struct apply
  728. {
  729. typedef vector9<
  730. typename Vector::item0, typename Vector::item1
  731. , typename Vector::item2, typename Vector::item3
  732. , typename Vector::item4, typename Vector::item5
  733. , typename Vector::item6, typename Vector::item7
  734. , typename Vector::item8
  735. > type;
  736. };
  737. };
  738. template< typename V >
  739. struct v_at< V,10 >
  740. {
  741. typedef typename V::item10 type;
  742. };
  743. }}