dynamic_10.hpp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  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. template <typename A0>
  8. struct dynamic<A0> : noncopyable
  9. {
  10. typedef
  11. vector1<A0>
  12. tuple_type;
  13. typedef
  14. dynamic<A0>
  15. self_type;
  16. typedef
  17. dynamic_frame<self_type>
  18. dynamic_frame_type;
  19. dynamic()
  20. : frame(0) {}
  21. template <int N>
  22. static
  23. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  24. init(self_type * scope)
  25. {
  26. return
  27. expression::
  28. dynamic_member<mpl::int_<N>, self_type *>::
  29. make(mpl::int_<N>(), scope);
  30. }
  31. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1;
  32. mutable dynamic_frame_type* frame;
  33. };
  34. template <typename A0 , typename A1>
  35. struct dynamic<A0 , A1> : noncopyable
  36. {
  37. typedef
  38. vector2<A0 , A1>
  39. tuple_type;
  40. typedef
  41. dynamic<A0 , A1>
  42. self_type;
  43. typedef
  44. dynamic_frame<self_type>
  45. dynamic_frame_type;
  46. dynamic()
  47. : frame(0) {}
  48. template <int N>
  49. static
  50. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  51. init(self_type * scope)
  52. {
  53. return
  54. expression::
  55. dynamic_member<mpl::int_<N>, self_type *>::
  56. make(mpl::int_<N>(), scope);
  57. }
  58. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2;
  59. mutable dynamic_frame_type* frame;
  60. };
  61. template <typename A0 , typename A1 , typename A2>
  62. struct dynamic<A0 , A1 , A2> : noncopyable
  63. {
  64. typedef
  65. vector3<A0 , A1 , A2>
  66. tuple_type;
  67. typedef
  68. dynamic<A0 , A1 , A2>
  69. self_type;
  70. typedef
  71. dynamic_frame<self_type>
  72. dynamic_frame_type;
  73. dynamic()
  74. : frame(0) {}
  75. template <int N>
  76. static
  77. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  78. init(self_type * scope)
  79. {
  80. return
  81. expression::
  82. dynamic_member<mpl::int_<N>, self_type *>::
  83. make(mpl::int_<N>(), scope);
  84. }
  85. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3;
  86. mutable dynamic_frame_type* frame;
  87. };
  88. template <typename A0 , typename A1 , typename A2 , typename A3>
  89. struct dynamic<A0 , A1 , A2 , A3> : noncopyable
  90. {
  91. typedef
  92. vector4<A0 , A1 , A2 , A3>
  93. tuple_type;
  94. typedef
  95. dynamic<A0 , A1 , A2 , A3>
  96. self_type;
  97. typedef
  98. dynamic_frame<self_type>
  99. dynamic_frame_type;
  100. dynamic()
  101. : frame(0) {}
  102. template <int N>
  103. static
  104. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  105. init(self_type * scope)
  106. {
  107. return
  108. expression::
  109. dynamic_member<mpl::int_<N>, self_type *>::
  110. make(mpl::int_<N>(), scope);
  111. }
  112. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4;
  113. mutable dynamic_frame_type* frame;
  114. };
  115. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  116. struct dynamic<A0 , A1 , A2 , A3 , A4> : noncopyable
  117. {
  118. typedef
  119. vector5<A0 , A1 , A2 , A3 , A4>
  120. tuple_type;
  121. typedef
  122. dynamic<A0 , A1 , A2 , A3 , A4>
  123. self_type;
  124. typedef
  125. dynamic_frame<self_type>
  126. dynamic_frame_type;
  127. dynamic()
  128. : frame(0) {}
  129. template <int N>
  130. static
  131. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  132. init(self_type * scope)
  133. {
  134. return
  135. expression::
  136. dynamic_member<mpl::int_<N>, self_type *>::
  137. make(mpl::int_<N>(), scope);
  138. }
  139. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5;
  140. mutable dynamic_frame_type* frame;
  141. };
  142. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  143. struct dynamic<A0 , A1 , A2 , A3 , A4 , A5> : noncopyable
  144. {
  145. typedef
  146. vector6<A0 , A1 , A2 , A3 , A4 , A5>
  147. tuple_type;
  148. typedef
  149. dynamic<A0 , A1 , A2 , A3 , A4 , A5>
  150. self_type;
  151. typedef
  152. dynamic_frame<self_type>
  153. dynamic_frame_type;
  154. dynamic()
  155. : frame(0) {}
  156. template <int N>
  157. static
  158. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  159. init(self_type * scope)
  160. {
  161. return
  162. expression::
  163. dynamic_member<mpl::int_<N>, self_type *>::
  164. make(mpl::int_<N>(), scope);
  165. }
  166. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6;
  167. mutable dynamic_frame_type* frame;
  168. };
  169. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  170. struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6> : noncopyable
  171. {
  172. typedef
  173. vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
  174. tuple_type;
  175. typedef
  176. dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6>
  177. self_type;
  178. typedef
  179. dynamic_frame<self_type>
  180. dynamic_frame_type;
  181. dynamic()
  182. : frame(0) {}
  183. template <int N>
  184. static
  185. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  186. init(self_type * scope)
  187. {
  188. return
  189. expression::
  190. dynamic_member<mpl::int_<N>, self_type *>::
  191. make(mpl::int_<N>(), scope);
  192. }
  193. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6; typedef typename expression::dynamic_member< mpl::int_< 6> , self_type * >::type const member7;
  194. mutable dynamic_frame_type* frame;
  195. };
  196. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  197. struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> : noncopyable
  198. {
  199. typedef
  200. vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
  201. tuple_type;
  202. typedef
  203. dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
  204. self_type;
  205. typedef
  206. dynamic_frame<self_type>
  207. dynamic_frame_type;
  208. dynamic()
  209. : frame(0) {}
  210. template <int N>
  211. static
  212. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  213. init(self_type * scope)
  214. {
  215. return
  216. expression::
  217. dynamic_member<mpl::int_<N>, self_type *>::
  218. make(mpl::int_<N>(), scope);
  219. }
  220. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6; typedef typename expression::dynamic_member< mpl::int_< 6> , self_type * >::type const member7; typedef typename expression::dynamic_member< mpl::int_< 7> , self_type * >::type const member8;
  221. mutable dynamic_frame_type* frame;
  222. };
  223. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  224. struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> : noncopyable
  225. {
  226. typedef
  227. vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
  228. tuple_type;
  229. typedef
  230. dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
  231. self_type;
  232. typedef
  233. dynamic_frame<self_type>
  234. dynamic_frame_type;
  235. dynamic()
  236. : frame(0) {}
  237. template <int N>
  238. static
  239. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  240. init(self_type * scope)
  241. {
  242. return
  243. expression::
  244. dynamic_member<mpl::int_<N>, self_type *>::
  245. make(mpl::int_<N>(), scope);
  246. }
  247. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6; typedef typename expression::dynamic_member< mpl::int_< 6> , self_type * >::type const member7; typedef typename expression::dynamic_member< mpl::int_< 7> , self_type * >::type const member8; typedef typename expression::dynamic_member< mpl::int_< 8> , self_type * >::type const member9;
  248. mutable dynamic_frame_type* frame;
  249. };
  250. template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  251. struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> : noncopyable
  252. {
  253. typedef
  254. vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
  255. tuple_type;
  256. typedef
  257. dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
  258. self_type;
  259. typedef
  260. dynamic_frame<self_type>
  261. dynamic_frame_type;
  262. dynamic()
  263. : frame(0) {}
  264. template <int N>
  265. static
  266. typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
  267. init(self_type * scope)
  268. {
  269. return
  270. expression::
  271. dynamic_member<mpl::int_<N>, self_type *>::
  272. make(mpl::int_<N>(), scope);
  273. }
  274. typedef typename expression::dynamic_member< mpl::int_< 0> , self_type * >::type const member1; typedef typename expression::dynamic_member< mpl::int_< 1> , self_type * >::type const member2; typedef typename expression::dynamic_member< mpl::int_< 2> , self_type * >::type const member3; typedef typename expression::dynamic_member< mpl::int_< 3> , self_type * >::type const member4; typedef typename expression::dynamic_member< mpl::int_< 4> , self_type * >::type const member5; typedef typename expression::dynamic_member< mpl::int_< 5> , self_type * >::type const member6; typedef typename expression::dynamic_member< mpl::int_< 6> , self_type * >::type const member7; typedef typename expression::dynamic_member< mpl::int_< 7> , self_type * >::type const member8; typedef typename expression::dynamic_member< mpl::int_< 8> , self_type * >::type const member9; typedef typename expression::dynamic_member< mpl::int_< 9> , self_type * >::type const member10;
  275. mutable dynamic_frame_type* frame;
  276. };