catch_push_back_10.hpp 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917
  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 TryCatch, typename Exception, typename Capture, typename Expr>
  8. struct catch_push_back<TryCatch, Exception, Capture, Expr, 2>
  9. {
  10. typedef
  11. typename proto::result_of::make_expr<
  12. phoenix::tag::catch_
  13. , proto::basic_default_domain
  14. , catch_exception<Exception>
  15. , Capture
  16. , Expr
  17. >::type
  18. catch_expr;
  19. typedef phoenix::expression::try_catch<
  20. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
  21. , catch_expr> gen_type;
  22. typedef typename gen_type::type type;
  23. static type
  24. make(
  25. TryCatch const& try_catch
  26. , Capture const& capture
  27. , Expr const& catch_
  28. )
  29. {
  30. return
  31. gen_type::make(
  32. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
  33. , proto::make_expr<
  34. phoenix::tag::catch_
  35. , proto::basic_default_domain
  36. >(catch_exception<Exception>(), capture, catch_)
  37. );
  38. }
  39. };
  40. template <typename TryCatch, typename Exception, typename Expr>
  41. struct catch_push_back<TryCatch, Exception, void, Expr, 2>
  42. {
  43. typedef
  44. typename proto::result_of::make_expr<
  45. phoenix::tag::catch_
  46. , proto::basic_default_domain
  47. , catch_exception<Exception>
  48. , Expr
  49. >::type
  50. catch_expr;
  51. typedef phoenix::expression::try_catch<
  52. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
  53. , catch_expr> gen_type;
  54. typedef typename gen_type::type type;
  55. static type
  56. make(
  57. TryCatch const& try_catch
  58. , Expr const& catch_
  59. )
  60. {
  61. return
  62. gen_type::make(
  63. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
  64. , proto::make_expr<
  65. phoenix::tag::catch_
  66. , proto::basic_default_domain
  67. >(catch_exception<Exception>(), catch_)
  68. );
  69. }
  70. };
  71. template <typename TryCatch, typename Expr>
  72. struct catch_all_push_back<TryCatch, Expr, 2>
  73. {
  74. typedef
  75. typename proto::result_of::make_expr<
  76. phoenix::tag::catch_all
  77. , proto::basic_default_domain
  78. , Expr
  79. >::type
  80. catch_expr;
  81. typedef phoenix::expression::try_catch<
  82. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
  83. , catch_expr> gen_type;
  84. typedef typename gen_type::type type;
  85. static type
  86. make(
  87. TryCatch const& try_catch
  88. , Expr const& catch_
  89. )
  90. {
  91. return
  92. gen_type::make(
  93. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
  94. , proto::make_expr<
  95. phoenix::tag::catch_all
  96. , proto::basic_default_domain
  97. >(catch_)
  98. );
  99. }
  100. };
  101. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  102. struct catch_push_back<TryCatch, Exception, Capture, Expr, 3>
  103. {
  104. typedef
  105. typename proto::result_of::make_expr<
  106. phoenix::tag::catch_
  107. , proto::basic_default_domain
  108. , catch_exception<Exception>
  109. , Capture
  110. , Expr
  111. >::type
  112. catch_expr;
  113. typedef phoenix::expression::try_catch<
  114. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type
  115. , catch_expr> gen_type;
  116. typedef typename gen_type::type type;
  117. static type
  118. make(
  119. TryCatch const& try_catch
  120. , Capture const& capture
  121. , Expr const& catch_
  122. )
  123. {
  124. return
  125. gen_type::make(
  126. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
  127. , proto::make_expr<
  128. phoenix::tag::catch_
  129. , proto::basic_default_domain
  130. >(catch_exception<Exception>(), capture, catch_)
  131. );
  132. }
  133. };
  134. template <typename TryCatch, typename Exception, typename Expr>
  135. struct catch_push_back<TryCatch, Exception, void, Expr, 3>
  136. {
  137. typedef
  138. typename proto::result_of::make_expr<
  139. phoenix::tag::catch_
  140. , proto::basic_default_domain
  141. , catch_exception<Exception>
  142. , Expr
  143. >::type
  144. catch_expr;
  145. typedef phoenix::expression::try_catch<
  146. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type
  147. , catch_expr> gen_type;
  148. typedef typename gen_type::type type;
  149. static type
  150. make(
  151. TryCatch const& try_catch
  152. , Expr const& catch_
  153. )
  154. {
  155. return
  156. gen_type::make(
  157. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
  158. , proto::make_expr<
  159. phoenix::tag::catch_
  160. , proto::basic_default_domain
  161. >(catch_exception<Exception>(), catch_)
  162. );
  163. }
  164. };
  165. template <typename TryCatch, typename Expr>
  166. struct catch_all_push_back<TryCatch, Expr, 3>
  167. {
  168. typedef
  169. typename proto::result_of::make_expr<
  170. phoenix::tag::catch_all
  171. , proto::basic_default_domain
  172. , Expr
  173. >::type
  174. catch_expr;
  175. typedef phoenix::expression::try_catch<
  176. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type
  177. , catch_expr> gen_type;
  178. typedef typename gen_type::type type;
  179. static type
  180. make(
  181. TryCatch const& try_catch
  182. , Expr const& catch_
  183. )
  184. {
  185. return
  186. gen_type::make(
  187. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
  188. , proto::make_expr<
  189. phoenix::tag::catch_all
  190. , proto::basic_default_domain
  191. >(catch_)
  192. );
  193. }
  194. };
  195. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  196. struct catch_push_back<TryCatch, Exception, Capture, Expr, 4>
  197. {
  198. typedef
  199. typename proto::result_of::make_expr<
  200. phoenix::tag::catch_
  201. , proto::basic_default_domain
  202. , catch_exception<Exception>
  203. , Capture
  204. , Expr
  205. >::type
  206. catch_expr;
  207. typedef phoenix::expression::try_catch<
  208. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type
  209. , catch_expr> gen_type;
  210. typedef typename gen_type::type type;
  211. static type
  212. make(
  213. TryCatch const& try_catch
  214. , Capture const& capture
  215. , Expr const& catch_
  216. )
  217. {
  218. return
  219. gen_type::make(
  220. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
  221. , proto::make_expr<
  222. phoenix::tag::catch_
  223. , proto::basic_default_domain
  224. >(catch_exception<Exception>(), capture, catch_)
  225. );
  226. }
  227. };
  228. template <typename TryCatch, typename Exception, typename Expr>
  229. struct catch_push_back<TryCatch, Exception, void, Expr, 4>
  230. {
  231. typedef
  232. typename proto::result_of::make_expr<
  233. phoenix::tag::catch_
  234. , proto::basic_default_domain
  235. , catch_exception<Exception>
  236. , Expr
  237. >::type
  238. catch_expr;
  239. typedef phoenix::expression::try_catch<
  240. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type
  241. , catch_expr> gen_type;
  242. typedef typename gen_type::type type;
  243. static type
  244. make(
  245. TryCatch const& try_catch
  246. , Expr const& catch_
  247. )
  248. {
  249. return
  250. gen_type::make(
  251. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
  252. , proto::make_expr<
  253. phoenix::tag::catch_
  254. , proto::basic_default_domain
  255. >(catch_exception<Exception>(), catch_)
  256. );
  257. }
  258. };
  259. template <typename TryCatch, typename Expr>
  260. struct catch_all_push_back<TryCatch, Expr, 4>
  261. {
  262. typedef
  263. typename proto::result_of::make_expr<
  264. phoenix::tag::catch_all
  265. , proto::basic_default_domain
  266. , Expr
  267. >::type
  268. catch_expr;
  269. typedef phoenix::expression::try_catch<
  270. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type
  271. , catch_expr> gen_type;
  272. typedef typename gen_type::type type;
  273. static type
  274. make(
  275. TryCatch const& try_catch
  276. , Expr const& catch_
  277. )
  278. {
  279. return
  280. gen_type::make(
  281. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
  282. , proto::make_expr<
  283. phoenix::tag::catch_all
  284. , proto::basic_default_domain
  285. >(catch_)
  286. );
  287. }
  288. };
  289. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  290. struct catch_push_back<TryCatch, Exception, Capture, Expr, 5>
  291. {
  292. typedef
  293. typename proto::result_of::make_expr<
  294. phoenix::tag::catch_
  295. , proto::basic_default_domain
  296. , catch_exception<Exception>
  297. , Capture
  298. , Expr
  299. >::type
  300. catch_expr;
  301. typedef phoenix::expression::try_catch<
  302. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type
  303. , catch_expr> gen_type;
  304. typedef typename gen_type::type type;
  305. static type
  306. make(
  307. TryCatch const& try_catch
  308. , Capture const& capture
  309. , Expr const& catch_
  310. )
  311. {
  312. return
  313. gen_type::make(
  314. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch)
  315. , proto::make_expr<
  316. phoenix::tag::catch_
  317. , proto::basic_default_domain
  318. >(catch_exception<Exception>(), capture, catch_)
  319. );
  320. }
  321. };
  322. template <typename TryCatch, typename Exception, typename Expr>
  323. struct catch_push_back<TryCatch, Exception, void, Expr, 5>
  324. {
  325. typedef
  326. typename proto::result_of::make_expr<
  327. phoenix::tag::catch_
  328. , proto::basic_default_domain
  329. , catch_exception<Exception>
  330. , Expr
  331. >::type
  332. catch_expr;
  333. typedef phoenix::expression::try_catch<
  334. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type
  335. , catch_expr> gen_type;
  336. typedef typename gen_type::type type;
  337. static type
  338. make(
  339. TryCatch const& try_catch
  340. , Expr const& catch_
  341. )
  342. {
  343. return
  344. gen_type::make(
  345. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch)
  346. , proto::make_expr<
  347. phoenix::tag::catch_
  348. , proto::basic_default_domain
  349. >(catch_exception<Exception>(), catch_)
  350. );
  351. }
  352. };
  353. template <typename TryCatch, typename Expr>
  354. struct catch_all_push_back<TryCatch, Expr, 5>
  355. {
  356. typedef
  357. typename proto::result_of::make_expr<
  358. phoenix::tag::catch_all
  359. , proto::basic_default_domain
  360. , Expr
  361. >::type
  362. catch_expr;
  363. typedef phoenix::expression::try_catch<
  364. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type
  365. , catch_expr> gen_type;
  366. typedef typename gen_type::type type;
  367. static type
  368. make(
  369. TryCatch const& try_catch
  370. , Expr const& catch_
  371. )
  372. {
  373. return
  374. gen_type::make(
  375. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch)
  376. , proto::make_expr<
  377. phoenix::tag::catch_all
  378. , proto::basic_default_domain
  379. >(catch_)
  380. );
  381. }
  382. };
  383. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  384. struct catch_push_back<TryCatch, Exception, Capture, Expr, 6>
  385. {
  386. typedef
  387. typename proto::result_of::make_expr<
  388. phoenix::tag::catch_
  389. , proto::basic_default_domain
  390. , catch_exception<Exception>
  391. , Capture
  392. , Expr
  393. >::type
  394. catch_expr;
  395. typedef phoenix::expression::try_catch<
  396. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type
  397. , catch_expr> gen_type;
  398. typedef typename gen_type::type type;
  399. static type
  400. make(
  401. TryCatch const& try_catch
  402. , Capture const& capture
  403. , Expr const& catch_
  404. )
  405. {
  406. return
  407. gen_type::make(
  408. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch)
  409. , proto::make_expr<
  410. phoenix::tag::catch_
  411. , proto::basic_default_domain
  412. >(catch_exception<Exception>(), capture, catch_)
  413. );
  414. }
  415. };
  416. template <typename TryCatch, typename Exception, typename Expr>
  417. struct catch_push_back<TryCatch, Exception, void, Expr, 6>
  418. {
  419. typedef
  420. typename proto::result_of::make_expr<
  421. phoenix::tag::catch_
  422. , proto::basic_default_domain
  423. , catch_exception<Exception>
  424. , Expr
  425. >::type
  426. catch_expr;
  427. typedef phoenix::expression::try_catch<
  428. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type
  429. , catch_expr> gen_type;
  430. typedef typename gen_type::type type;
  431. static type
  432. make(
  433. TryCatch const& try_catch
  434. , Expr const& catch_
  435. )
  436. {
  437. return
  438. gen_type::make(
  439. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch)
  440. , proto::make_expr<
  441. phoenix::tag::catch_
  442. , proto::basic_default_domain
  443. >(catch_exception<Exception>(), catch_)
  444. );
  445. }
  446. };
  447. template <typename TryCatch, typename Expr>
  448. struct catch_all_push_back<TryCatch, Expr, 6>
  449. {
  450. typedef
  451. typename proto::result_of::make_expr<
  452. phoenix::tag::catch_all
  453. , proto::basic_default_domain
  454. , Expr
  455. >::type
  456. catch_expr;
  457. typedef phoenix::expression::try_catch<
  458. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type
  459. , catch_expr> gen_type;
  460. typedef typename gen_type::type type;
  461. static type
  462. make(
  463. TryCatch const& try_catch
  464. , Expr const& catch_
  465. )
  466. {
  467. return
  468. gen_type::make(
  469. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch)
  470. , proto::make_expr<
  471. phoenix::tag::catch_all
  472. , proto::basic_default_domain
  473. >(catch_)
  474. );
  475. }
  476. };
  477. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  478. struct catch_push_back<TryCatch, Exception, Capture, Expr, 7>
  479. {
  480. typedef
  481. typename proto::result_of::make_expr<
  482. phoenix::tag::catch_
  483. , proto::basic_default_domain
  484. , catch_exception<Exception>
  485. , Capture
  486. , Expr
  487. >::type
  488. catch_expr;
  489. typedef phoenix::expression::try_catch<
  490. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type
  491. , catch_expr> gen_type;
  492. typedef typename gen_type::type type;
  493. static type
  494. make(
  495. TryCatch const& try_catch
  496. , Capture const& capture
  497. , Expr const& catch_
  498. )
  499. {
  500. return
  501. gen_type::make(
  502. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch)
  503. , proto::make_expr<
  504. phoenix::tag::catch_
  505. , proto::basic_default_domain
  506. >(catch_exception<Exception>(), capture, catch_)
  507. );
  508. }
  509. };
  510. template <typename TryCatch, typename Exception, typename Expr>
  511. struct catch_push_back<TryCatch, Exception, void, Expr, 7>
  512. {
  513. typedef
  514. typename proto::result_of::make_expr<
  515. phoenix::tag::catch_
  516. , proto::basic_default_domain
  517. , catch_exception<Exception>
  518. , Expr
  519. >::type
  520. catch_expr;
  521. typedef phoenix::expression::try_catch<
  522. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type
  523. , catch_expr> gen_type;
  524. typedef typename gen_type::type type;
  525. static type
  526. make(
  527. TryCatch const& try_catch
  528. , Expr const& catch_
  529. )
  530. {
  531. return
  532. gen_type::make(
  533. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch)
  534. , proto::make_expr<
  535. phoenix::tag::catch_
  536. , proto::basic_default_domain
  537. >(catch_exception<Exception>(), catch_)
  538. );
  539. }
  540. };
  541. template <typename TryCatch, typename Expr>
  542. struct catch_all_push_back<TryCatch, Expr, 7>
  543. {
  544. typedef
  545. typename proto::result_of::make_expr<
  546. phoenix::tag::catch_all
  547. , proto::basic_default_domain
  548. , Expr
  549. >::type
  550. catch_expr;
  551. typedef phoenix::expression::try_catch<
  552. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type
  553. , catch_expr> gen_type;
  554. typedef typename gen_type::type type;
  555. static type
  556. make(
  557. TryCatch const& try_catch
  558. , Expr const& catch_
  559. )
  560. {
  561. return
  562. gen_type::make(
  563. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch)
  564. , proto::make_expr<
  565. phoenix::tag::catch_all
  566. , proto::basic_default_domain
  567. >(catch_)
  568. );
  569. }
  570. };
  571. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  572. struct catch_push_back<TryCatch, Exception, Capture, Expr, 8>
  573. {
  574. typedef
  575. typename proto::result_of::make_expr<
  576. phoenix::tag::catch_
  577. , proto::basic_default_domain
  578. , catch_exception<Exception>
  579. , Capture
  580. , Expr
  581. >::type
  582. catch_expr;
  583. typedef phoenix::expression::try_catch<
  584. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type
  585. , catch_expr> gen_type;
  586. typedef typename gen_type::type type;
  587. static type
  588. make(
  589. TryCatch const& try_catch
  590. , Capture const& capture
  591. , Expr const& catch_
  592. )
  593. {
  594. return
  595. gen_type::make(
  596. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch)
  597. , proto::make_expr<
  598. phoenix::tag::catch_
  599. , proto::basic_default_domain
  600. >(catch_exception<Exception>(), capture, catch_)
  601. );
  602. }
  603. };
  604. template <typename TryCatch, typename Exception, typename Expr>
  605. struct catch_push_back<TryCatch, Exception, void, Expr, 8>
  606. {
  607. typedef
  608. typename proto::result_of::make_expr<
  609. phoenix::tag::catch_
  610. , proto::basic_default_domain
  611. , catch_exception<Exception>
  612. , Expr
  613. >::type
  614. catch_expr;
  615. typedef phoenix::expression::try_catch<
  616. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type
  617. , catch_expr> gen_type;
  618. typedef typename gen_type::type type;
  619. static type
  620. make(
  621. TryCatch const& try_catch
  622. , Expr const& catch_
  623. )
  624. {
  625. return
  626. gen_type::make(
  627. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch)
  628. , proto::make_expr<
  629. phoenix::tag::catch_
  630. , proto::basic_default_domain
  631. >(catch_exception<Exception>(), catch_)
  632. );
  633. }
  634. };
  635. template <typename TryCatch, typename Expr>
  636. struct catch_all_push_back<TryCatch, Expr, 8>
  637. {
  638. typedef
  639. typename proto::result_of::make_expr<
  640. phoenix::tag::catch_all
  641. , proto::basic_default_domain
  642. , Expr
  643. >::type
  644. catch_expr;
  645. typedef phoenix::expression::try_catch<
  646. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type
  647. , catch_expr> gen_type;
  648. typedef typename gen_type::type type;
  649. static type
  650. make(
  651. TryCatch const& try_catch
  652. , Expr const& catch_
  653. )
  654. {
  655. return
  656. gen_type::make(
  657. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch)
  658. , proto::make_expr<
  659. phoenix::tag::catch_all
  660. , proto::basic_default_domain
  661. >(catch_)
  662. );
  663. }
  664. };
  665. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  666. struct catch_push_back<TryCatch, Exception, Capture, Expr, 9>
  667. {
  668. typedef
  669. typename proto::result_of::make_expr<
  670. phoenix::tag::catch_
  671. , proto::basic_default_domain
  672. , catch_exception<Exception>
  673. , Capture
  674. , Expr
  675. >::type
  676. catch_expr;
  677. typedef phoenix::expression::try_catch<
  678. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type
  679. , catch_expr> gen_type;
  680. typedef typename gen_type::type type;
  681. static type
  682. make(
  683. TryCatch const& try_catch
  684. , Capture const& capture
  685. , Expr const& catch_
  686. )
  687. {
  688. return
  689. gen_type::make(
  690. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch)
  691. , proto::make_expr<
  692. phoenix::tag::catch_
  693. , proto::basic_default_domain
  694. >(catch_exception<Exception>(), capture, catch_)
  695. );
  696. }
  697. };
  698. template <typename TryCatch, typename Exception, typename Expr>
  699. struct catch_push_back<TryCatch, Exception, void, Expr, 9>
  700. {
  701. typedef
  702. typename proto::result_of::make_expr<
  703. phoenix::tag::catch_
  704. , proto::basic_default_domain
  705. , catch_exception<Exception>
  706. , Expr
  707. >::type
  708. catch_expr;
  709. typedef phoenix::expression::try_catch<
  710. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type
  711. , catch_expr> gen_type;
  712. typedef typename gen_type::type type;
  713. static type
  714. make(
  715. TryCatch const& try_catch
  716. , Expr const& catch_
  717. )
  718. {
  719. return
  720. gen_type::make(
  721. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch)
  722. , proto::make_expr<
  723. phoenix::tag::catch_
  724. , proto::basic_default_domain
  725. >(catch_exception<Exception>(), catch_)
  726. );
  727. }
  728. };
  729. template <typename TryCatch, typename Expr>
  730. struct catch_all_push_back<TryCatch, Expr, 9>
  731. {
  732. typedef
  733. typename proto::result_of::make_expr<
  734. phoenix::tag::catch_all
  735. , proto::basic_default_domain
  736. , Expr
  737. >::type
  738. catch_expr;
  739. typedef phoenix::expression::try_catch<
  740. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type
  741. , catch_expr> gen_type;
  742. typedef typename gen_type::type type;
  743. static type
  744. make(
  745. TryCatch const& try_catch
  746. , Expr const& catch_
  747. )
  748. {
  749. return
  750. gen_type::make(
  751. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch)
  752. , proto::make_expr<
  753. phoenix::tag::catch_all
  754. , proto::basic_default_domain
  755. >(catch_)
  756. );
  757. }
  758. };
  759. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  760. struct catch_push_back<TryCatch, Exception, Capture, Expr, 10>
  761. {
  762. typedef
  763. typename proto::result_of::make_expr<
  764. phoenix::tag::catch_
  765. , proto::basic_default_domain
  766. , catch_exception<Exception>
  767. , Capture
  768. , Expr
  769. >::type
  770. catch_expr;
  771. typedef phoenix::expression::try_catch<
  772. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type
  773. , catch_expr> gen_type;
  774. typedef typename gen_type::type type;
  775. static type
  776. make(
  777. TryCatch const& try_catch
  778. , Capture const& capture
  779. , Expr const& catch_
  780. )
  781. {
  782. return
  783. gen_type::make(
  784. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch)
  785. , proto::make_expr<
  786. phoenix::tag::catch_
  787. , proto::basic_default_domain
  788. >(catch_exception<Exception>(), capture, catch_)
  789. );
  790. }
  791. };
  792. template <typename TryCatch, typename Exception, typename Expr>
  793. struct catch_push_back<TryCatch, Exception, void, Expr, 10>
  794. {
  795. typedef
  796. typename proto::result_of::make_expr<
  797. phoenix::tag::catch_
  798. , proto::basic_default_domain
  799. , catch_exception<Exception>
  800. , Expr
  801. >::type
  802. catch_expr;
  803. typedef phoenix::expression::try_catch<
  804. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type
  805. , catch_expr> gen_type;
  806. typedef typename gen_type::type type;
  807. static type
  808. make(
  809. TryCatch const& try_catch
  810. , Expr const& catch_
  811. )
  812. {
  813. return
  814. gen_type::make(
  815. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch)
  816. , proto::make_expr<
  817. phoenix::tag::catch_
  818. , proto::basic_default_domain
  819. >(catch_exception<Exception>(), catch_)
  820. );
  821. }
  822. };
  823. template <typename TryCatch, typename Expr>
  824. struct catch_all_push_back<TryCatch, Expr, 10>
  825. {
  826. typedef
  827. typename proto::result_of::make_expr<
  828. phoenix::tag::catch_all
  829. , proto::basic_default_domain
  830. , Expr
  831. >::type
  832. catch_expr;
  833. typedef phoenix::expression::try_catch<
  834. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type
  835. , catch_expr> gen_type;
  836. typedef typename gen_type::type type;
  837. static type
  838. make(
  839. TryCatch const& try_catch
  840. , Expr const& catch_
  841. )
  842. {
  843. return
  844. gen_type::make(
  845. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch)
  846. , proto::make_expr<
  847. phoenix::tag::catch_all
  848. , proto::basic_default_domain
  849. >(catch_)
  850. );
  851. }
  852. };