actor_result_of_20.hpp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  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 Expr
  8. , typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void
  9. , typename Dummy = void>
  10. struct actor;
  11. template <typename Expr>
  12. struct nullary_actor_result
  13. {
  14. typedef
  15. typename boost::phoenix::evaluator::impl<
  16. Expr const&
  17. , vector2<
  18. vector1<const ::boost::phoenix::actor<Expr> *> &
  19. , default_actions
  20. > const &
  21. , proto::empty_env
  22. >::result_type
  23. type;
  24. };
  25. template <typename Expr, typename A0>
  26. struct actor<Expr, A0>
  27. {
  28. typedef
  29. typename phoenix::evaluator::
  30. impl<
  31. Expr const&
  32. , vector2<
  33. vector2<const ::boost::phoenix::actor<Expr> *, A0> &
  34. , default_actions
  35. > const &
  36. , proto::empty_env
  37. >::result_type
  38. type;
  39. };
  40. template <typename Expr, typename A0 , typename A1>
  41. struct actor<Expr, A0 , A1>
  42. {
  43. typedef
  44. typename phoenix::evaluator::
  45. impl<
  46. Expr const&
  47. , vector2<
  48. vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1> &
  49. , default_actions
  50. > const &
  51. , proto::empty_env
  52. >::result_type
  53. type;
  54. };
  55. template <typename Expr, typename A0 , typename A1 , typename A2>
  56. struct actor<Expr, A0 , A1 , A2>
  57. {
  58. typedef
  59. typename phoenix::evaluator::
  60. impl<
  61. Expr const&
  62. , vector2<
  63. vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2> &
  64. , default_actions
  65. > const &
  66. , proto::empty_env
  67. >::result_type
  68. type;
  69. };
  70. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3>
  71. struct actor<Expr, A0 , A1 , A2 , A3>
  72. {
  73. typedef
  74. typename phoenix::evaluator::
  75. impl<
  76. Expr const&
  77. , vector2<
  78. vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3> &
  79. , default_actions
  80. > const &
  81. , proto::empty_env
  82. >::result_type
  83. type;
  84. };
  85. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
  86. struct actor<Expr, A0 , A1 , A2 , A3 , A4>
  87. {
  88. typedef
  89. typename phoenix::evaluator::
  90. impl<
  91. Expr const&
  92. , vector2<
  93. vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4> &
  94. , default_actions
  95. > const &
  96. , proto::empty_env
  97. >::result_type
  98. type;
  99. };
  100. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
  101. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5>
  102. {
  103. typedef
  104. typename phoenix::evaluator::
  105. impl<
  106. Expr const&
  107. , vector2<
  108. vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5> &
  109. , default_actions
  110. > const &
  111. , proto::empty_env
  112. >::result_type
  113. type;
  114. };
  115. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
  116. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6>
  117. {
  118. typedef
  119. typename phoenix::evaluator::
  120. impl<
  121. Expr const&
  122. , vector2<
  123. vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6> &
  124. , default_actions
  125. > const &
  126. , proto::empty_env
  127. >::result_type
  128. type;
  129. };
  130. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
  131. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
  132. {
  133. typedef
  134. typename phoenix::evaluator::
  135. impl<
  136. Expr const&
  137. , vector2<
  138. vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> &
  139. , default_actions
  140. > const &
  141. , proto::empty_env
  142. >::result_type
  143. type;
  144. };
  145. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
  146. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
  147. {
  148. typedef
  149. typename phoenix::evaluator::
  150. impl<
  151. Expr const&
  152. , vector2<
  153. vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> &
  154. , default_actions
  155. > const &
  156. , proto::empty_env
  157. >::result_type
  158. type;
  159. };
  160. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
  161. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
  162. {
  163. typedef
  164. typename phoenix::evaluator::
  165. impl<
  166. Expr const&
  167. , vector2<
  168. vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> &
  169. , default_actions
  170. > const &
  171. , proto::empty_env
  172. >::result_type
  173. type;
  174. };
  175. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
  176. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
  177. {
  178. typedef
  179. typename phoenix::evaluator::
  180. impl<
  181. Expr const&
  182. , vector2<
  183. vector12<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> &
  184. , default_actions
  185. > const &
  186. , proto::empty_env
  187. >::result_type
  188. type;
  189. };
  190. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
  191. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
  192. {
  193. typedef
  194. typename phoenix::evaluator::
  195. impl<
  196. Expr const&
  197. , vector2<
  198. vector13<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11> &
  199. , default_actions
  200. > const &
  201. , proto::empty_env
  202. >::result_type
  203. type;
  204. };
  205. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
  206. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
  207. {
  208. typedef
  209. typename phoenix::evaluator::
  210. impl<
  211. Expr const&
  212. , vector2<
  213. vector14<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12> &
  214. , default_actions
  215. > const &
  216. , proto::empty_env
  217. >::result_type
  218. type;
  219. };
  220. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
  221. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
  222. {
  223. typedef
  224. typename phoenix::evaluator::
  225. impl<
  226. Expr const&
  227. , vector2<
  228. vector15<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13> &
  229. , default_actions
  230. > const &
  231. , proto::empty_env
  232. >::result_type
  233. type;
  234. };
  235. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
  236. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
  237. {
  238. typedef
  239. typename phoenix::evaluator::
  240. impl<
  241. Expr const&
  242. , vector2<
  243. vector16<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14> &
  244. , default_actions
  245. > const &
  246. , proto::empty_env
  247. >::result_type
  248. type;
  249. };
  250. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
  251. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
  252. {
  253. typedef
  254. typename phoenix::evaluator::
  255. impl<
  256. Expr const&
  257. , vector2<
  258. vector17<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15> &
  259. , default_actions
  260. > const &
  261. , proto::empty_env
  262. >::result_type
  263. type;
  264. };
  265. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
  266. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
  267. {
  268. typedef
  269. typename phoenix::evaluator::
  270. impl<
  271. Expr const&
  272. , vector2<
  273. vector18<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16> &
  274. , default_actions
  275. > const &
  276. , proto::empty_env
  277. >::result_type
  278. type;
  279. };
  280. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
  281. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
  282. {
  283. typedef
  284. typename phoenix::evaluator::
  285. impl<
  286. Expr const&
  287. , vector2<
  288. vector19<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17> &
  289. , default_actions
  290. > const &
  291. , proto::empty_env
  292. >::result_type
  293. type;
  294. };
  295. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
  296. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
  297. {
  298. typedef
  299. typename phoenix::evaluator::
  300. impl<
  301. Expr const&
  302. , vector2<
  303. vector20<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18> &
  304. , default_actions
  305. > const &
  306. , proto::empty_env
  307. >::result_type
  308. type;
  309. };
  310. template <typename Expr, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
  311. struct actor<Expr, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
  312. {
  313. typedef
  314. typename phoenix::evaluator::
  315. impl<
  316. Expr const&
  317. , vector2<
  318. vector21<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19> &
  319. , default_actions
  320. > const &
  321. , proto::empty_env
  322. >::result_type
  323. type;
  324. };