vector_10.hpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. /*==============================================================================
  2. Copyright (c) 2005-2010 Joel de Guzman
  3. Copyright (c) 2010 Thomas Heller
  4. Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. ==============================================================================*/
  7. namespace boost { namespace phoenix
  8. {
  9. template <typename Dummy = void>
  10. struct vector0
  11. {
  12. typedef mpl::int_<0> size_type;
  13. static const int size_value = 0;
  14. };
  15. template <int> struct vector_chooser;
  16. template <>
  17. struct vector_chooser<0>
  18. {
  19. template <typename Dummy = void>
  20. struct apply
  21. {
  22. typedef vector0<> type;
  23. };
  24. };
  25. }}
  26. namespace boost { namespace phoenix
  27. {
  28. template <typename A0>
  29. struct vector1
  30. {
  31. typedef A0 member_type0; A0 a0;
  32. typedef mpl::int_<1> size_type;
  33. static const int size_value = 1;
  34. typedef
  35. vector0<>
  36. args_type;
  37. args_type args() const
  38. {
  39. args_type r = {};
  40. return r;
  41. }
  42. };
  43. template <>
  44. struct vector_chooser<1>
  45. {
  46. template <typename A0>
  47. struct apply
  48. {
  49. typedef vector1<A0> type;
  50. };
  51. };
  52. }}
  53. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  54. (A0)
  55. , ( boost::phoenix::vector1 ) (A0)
  56. , (A0, a0)
  57. )
  58. namespace boost { namespace phoenix
  59. {
  60. template <typename A0 , typename A1>
  61. struct vector2
  62. {
  63. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1;
  64. typedef mpl::int_<2> size_type;
  65. static const int size_value = 2;
  66. typedef
  67. vector1<A1>
  68. args_type;
  69. args_type args() const
  70. {
  71. args_type r = {a1};
  72. return r;
  73. }
  74. };
  75. template <>
  76. struct vector_chooser<2>
  77. {
  78. template <typename A0 , typename A1>
  79. struct apply
  80. {
  81. typedef vector2<A0 , A1> type;
  82. };
  83. };
  84. }}
  85. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  86. (A0) (A1)
  87. , ( boost::phoenix::vector2 ) (A0) (A1)
  88. , (A0, a0) (A1, a1)
  89. )
  90. namespace boost { namespace phoenix
  91. {
  92. template <typename A0 , typename A1 , typename A2>
  93. struct vector3
  94. {
  95. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2;
  96. typedef mpl::int_<3> size_type;
  97. static const int size_value = 3;
  98. typedef
  99. vector2<A1 , A2>
  100. args_type;
  101. args_type args() const
  102. {
  103. args_type r = {a1 , a2};
  104. return r;
  105. }
  106. };
  107. template <>
  108. struct vector_chooser<3>
  109. {
  110. template <typename A0 , typename A1 , typename A2>
  111. struct apply
  112. {
  113. typedef vector3<A0 , A1 , A2> type;
  114. };
  115. };
  116. }}
  117. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  118. (A0) (A1) (A2)
  119. , ( boost::phoenix::vector3 ) (A0) (A1) (A2)
  120. , (A0, a0) (A1, a1) (A2, a2)
  121. )
  122. namespace boost { namespace phoenix
  123. {
  124. template <typename A0 , typename A1 , typename A2 , typename A3>
  125. struct vector4
  126. {
  127. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3;
  128. typedef mpl::int_<4> size_type;
  129. static const int size_value = 4;
  130. typedef
  131. vector3<A1 , A2 , A3>
  132. args_type;
  133. args_type args() const
  134. {
  135. args_type r = {a1 , a2 , a3};
  136. return r;
  137. }
  138. };
  139. template <>
  140. struct vector_chooser<4>
  141. {
  142. template <typename A0 , typename A1 , typename A2 , typename A3>
  143. struct apply
  144. {
  145. typedef vector4<A0 , A1 , A2 , A3> type;
  146. };
  147. };
  148. }}
  149. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  150. (A0) (A1) (A2) (A3)
  151. , ( boost::phoenix::vector4 ) (A0) (A1) (A2) (A3)
  152. , (A0, a0) (A1, a1) (A2, a2) (A3, a3)
  153. )
  154. namespace boost { namespace phoenix
  155. {
  156. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  157. struct vector5
  158. {
  159. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4;
  160. typedef mpl::int_<5> size_type;
  161. static const int size_value = 5;
  162. typedef
  163. vector4<A1 , A2 , A3 , A4>
  164. args_type;
  165. args_type args() const
  166. {
  167. args_type r = {a1 , a2 , a3 , a4};
  168. return r;
  169. }
  170. };
  171. template <>
  172. struct vector_chooser<5>
  173. {
  174. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  175. struct apply
  176. {
  177. typedef vector5<A0 , A1 , A2 , A3 , A4> type;
  178. };
  179. };
  180. }}
  181. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  182. (A0) (A1) (A2) (A3) (A4)
  183. , ( boost::phoenix::vector5 ) (A0) (A1) (A2) (A3) (A4)
  184. , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4)
  185. )
  186. namespace boost { namespace phoenix
  187. {
  188. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  189. struct vector6
  190. {
  191. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5;
  192. typedef mpl::int_<6> size_type;
  193. static const int size_value = 6;
  194. typedef
  195. vector5<A1 , A2 , A3 , A4 , A5>
  196. args_type;
  197. args_type args() const
  198. {
  199. args_type r = {a1 , a2 , a3 , a4 , a5};
  200. return r;
  201. }
  202. };
  203. template <>
  204. struct vector_chooser<6>
  205. {
  206. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  207. struct apply
  208. {
  209. typedef vector6<A0 , A1 , A2 , A3 , A4 , A5> type;
  210. };
  211. };
  212. }}
  213. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  214. (A0) (A1) (A2) (A3) (A4) (A5)
  215. , ( boost::phoenix::vector6 ) (A0) (A1) (A2) (A3) (A4) (A5)
  216. , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5)
  217. )
  218. namespace boost { namespace phoenix
  219. {
  220. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  221. struct vector7
  222. {
  223. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6;
  224. typedef mpl::int_<7> size_type;
  225. static const int size_value = 7;
  226. typedef
  227. vector6<A1 , A2 , A3 , A4 , A5 , A6>
  228. args_type;
  229. args_type args() const
  230. {
  231. args_type r = {a1 , a2 , a3 , a4 , a5 , a6};
  232. return r;
  233. }
  234. };
  235. template <>
  236. struct vector_chooser<7>
  237. {
  238. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  239. struct apply
  240. {
  241. typedef vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6> type;
  242. };
  243. };
  244. }}
  245. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  246. (A0) (A1) (A2) (A3) (A4) (A5) (A6)
  247. , ( boost::phoenix::vector7 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6)
  248. , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6)
  249. )
  250. namespace boost { namespace phoenix
  251. {
  252. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  253. struct vector8
  254. {
  255. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7;
  256. typedef mpl::int_<8> size_type;
  257. static const int size_value = 8;
  258. typedef
  259. vector7<A1 , A2 , A3 , A4 , A5 , A6 , A7>
  260. args_type;
  261. args_type args() const
  262. {
  263. args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7};
  264. return r;
  265. }
  266. };
  267. template <>
  268. struct vector_chooser<8>
  269. {
  270. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  271. struct apply
  272. {
  273. typedef vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> type;
  274. };
  275. };
  276. }}
  277. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  278. (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7)
  279. , ( boost::phoenix::vector8 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7)
  280. , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7)
  281. )
  282. namespace boost { namespace phoenix
  283. {
  284. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  285. struct vector9
  286. {
  287. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7; typedef A8 member_type8; A8 a8;
  288. typedef mpl::int_<9> size_type;
  289. static const int size_value = 9;
  290. typedef
  291. vector8<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
  292. args_type;
  293. args_type args() const
  294. {
  295. args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
  296. return r;
  297. }
  298. };
  299. template <>
  300. struct vector_chooser<9>
  301. {
  302. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  303. struct apply
  304. {
  305. typedef vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> type;
  306. };
  307. };
  308. }}
  309. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  310. (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8)
  311. , ( boost::phoenix::vector9 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8)
  312. , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8)
  313. )
  314. namespace boost { namespace phoenix
  315. {
  316. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  317. struct vector10
  318. {
  319. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7; typedef A8 member_type8; A8 a8; typedef A9 member_type9; A9 a9;
  320. typedef mpl::int_<10> size_type;
  321. static const int size_value = 10;
  322. typedef
  323. vector9<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
  324. args_type;
  325. args_type args() const
  326. {
  327. args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
  328. return r;
  329. }
  330. };
  331. template <>
  332. struct vector_chooser<10>
  333. {
  334. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  335. struct apply
  336. {
  337. typedef vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> type;
  338. };
  339. };
  340. }}
  341. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  342. (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9)
  343. , ( boost::phoenix::vector10 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9)
  344. , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8) (A9, a9)
  345. )
  346. namespace boost { namespace phoenix
  347. {
  348. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
  349. struct vector11
  350. {
  351. typedef A0 member_type0; A0 a0; typedef A1 member_type1; A1 a1; typedef A2 member_type2; A2 a2; typedef A3 member_type3; A3 a3; typedef A4 member_type4; A4 a4; typedef A5 member_type5; A5 a5; typedef A6 member_type6; A6 a6; typedef A7 member_type7; A7 a7; typedef A8 member_type8; A8 a8; typedef A9 member_type9; A9 a9; typedef A10 member_type10; A10 a10;
  352. typedef mpl::int_<11> size_type;
  353. static const int size_value = 11;
  354. typedef
  355. vector10<A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
  356. args_type;
  357. args_type args() const
  358. {
  359. args_type r = {a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
  360. return r;
  361. }
  362. };
  363. template <>
  364. struct vector_chooser<11>
  365. {
  366. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
  367. struct apply
  368. {
  369. typedef vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> type;
  370. };
  371. };
  372. }}
  373. BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
  374. (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) (A10)
  375. , ( boost::phoenix::vector11 ) (A0) (A1) (A2) (A3) (A4) (A5) (A6) (A7) (A8) (A9) (A10)
  376. , (A0, a0) (A1, a1) (A2, a2) (A3, a3) (A4, a4) (A5, a5) (A6, a6) (A7, a7) (A8, a8) (A9, a9) (A10, a10)
  377. )