proto_fwd.xml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!--
  3. Copyright 2012 Eric Niebler
  4. Distributed under the Boost
  5. Software License, Version 1.0. (See accompanying
  6. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  7. -->
  8. <header name="boost/proto/proto_fwd.hpp">
  9. <para>Forward declarations of all of proto's public types and functions. </para>
  10. <namespace name="boost">
  11. <namespace name="proto">
  12. <struct name="callable">
  13. <purpose>Base class for callable <conceptname>PolymorphicFunctionObject</conceptname>s</purpose>
  14. <description>
  15. <para>
  16. When defining a callable <conceptname>PolymorphicFunctionObject</conceptname>, inherit
  17. from <computeroutput>proto::callable</computeroutput> so that it can be used to create
  18. a <conceptname>CallableTransform</conceptname>.
  19. </para>
  20. <para>
  21. <computeroutput><classname>proto::is_callable</classname>&lt;T&gt;::value</computeroutput> is
  22. <computeroutput>true</computeroutput> for types that inherit from
  23. <computeroutput>proto::callable</computeroutput>.
  24. </para>
  25. </description>
  26. </struct>
  27. <data-member name="N">
  28. <description>
  29. <para>Array size wildcard for Proto grammars that match array terminals.</para></description>
  30. <type>int const</type>
  31. </data-member>
  32. <namespace name="functional">
  33. <typedef name="make_terminal">
  34. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::terminal</classname> &gt;</type>
  35. </typedef>
  36. <typedef name="make_unary_plus">
  37. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::unary_plus</classname> &gt;</type>
  38. </typedef>
  39. <typedef name="make_negate">
  40. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::negate</classname> &gt;</type>
  41. </typedef>
  42. <typedef name="make_dereference">
  43. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::dereference</classname> &gt;</type>
  44. </typedef>
  45. <typedef name="make_complement">
  46. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::complement</classname> &gt;</type>
  47. </typedef>
  48. <typedef name="make_address_of">
  49. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::address_of</classname> &gt;</type>
  50. </typedef>
  51. <typedef name="make_logical_not">
  52. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_not</classname> &gt;</type>
  53. </typedef>
  54. <typedef name="make_pre_inc">
  55. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::pre_inc</classname> &gt;</type>
  56. </typedef>
  57. <typedef name="make_pre_dec">
  58. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::pre_dec</classname> &gt;</type>
  59. </typedef>
  60. <typedef name="make_post_inc">
  61. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::post_inc</classname> &gt;</type>
  62. </typedef>
  63. <typedef name="make_post_dec">
  64. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::post_dec</classname> &gt;</type>
  65. </typedef>
  66. <typedef name="make_shift_left">
  67. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_left</classname> &gt;</type>
  68. </typedef>
  69. <typedef name="make_shift_right">
  70. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_right</classname> &gt;</type>
  71. </typedef>
  72. <typedef name="make_multiplies">
  73. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::multiplies</classname> &gt;</type>
  74. </typedef>
  75. <typedef name="make_divides">
  76. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::divides</classname> &gt;</type>
  77. </typedef>
  78. <typedef name="make_modulus">
  79. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::modulus</classname> &gt;</type>
  80. </typedef>
  81. <typedef name="make_plus">
  82. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::plus</classname> &gt;</type>
  83. </typedef>
  84. <typedef name="make_minus">
  85. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::minus</classname> &gt;</type>
  86. </typedef>
  87. <typedef name="make_less">
  88. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::less</classname> &gt;</type>
  89. </typedef>
  90. <typedef name="make_greater">
  91. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::greater</classname> &gt;</type>
  92. </typedef>
  93. <typedef name="make_less_equal">
  94. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::less_equal</classname> &gt;</type>
  95. </typedef>
  96. <typedef name="make_greater_equal">
  97. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::greater_equal</classname> &gt;</type>
  98. </typedef>
  99. <typedef name="make_equal_to">
  100. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::equal_to</classname> &gt;</type>
  101. </typedef>
  102. <typedef name="make_not_equal_to">
  103. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::not_equal_to</classname> &gt;</type>
  104. </typedef>
  105. <typedef name="make_logical_or">
  106. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_or</classname> &gt;</type>
  107. </typedef>
  108. <typedef name="make_logical_and">
  109. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_and</classname> &gt;</type>
  110. </typedef>
  111. <typedef name="make_bitwise_and">
  112. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_and</classname> &gt;</type>
  113. </typedef>
  114. <typedef name="make_bitwise_or">
  115. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_or</classname> &gt;</type>
  116. </typedef>
  117. <typedef name="make_bitwise_xor">
  118. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_xor</classname> &gt;</type>
  119. </typedef>
  120. <typedef name="make_comma">
  121. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::comma</classname> &gt;</type>
  122. </typedef>
  123. <typedef name="make_mem_ptr">
  124. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::mem_ptr</classname> &gt;</type>
  125. </typedef>
  126. <typedef name="make_assign">
  127. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::assign</classname> &gt;</type>
  128. </typedef>
  129. <typedef name="make_shift_left_assign">
  130. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_left_assign</classname> &gt;</type>
  131. </typedef>
  132. <typedef name="make_shift_right_assign">
  133. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_right_assign</classname> &gt;</type>
  134. </typedef>
  135. <typedef name="make_multiplies_assign">
  136. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::multiplies_assign</classname> &gt;</type>
  137. </typedef>
  138. <typedef name="make_divides_assign">
  139. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::divides_assign</classname> &gt;</type>
  140. </typedef>
  141. <typedef name="make_modulus_assign">
  142. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::modulus_assign</classname> &gt;</type>
  143. </typedef>
  144. <typedef name="make_plus_assign">
  145. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::plus_assign</classname> &gt;</type>
  146. </typedef>
  147. <typedef name="make_minus_assign">
  148. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::minus_assign</classname> &gt;</type>
  149. </typedef>
  150. <typedef name="make_bitwise_and_assign">
  151. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_and_assign</classname> &gt;</type>
  152. </typedef>
  153. <typedef name="make_bitwise_or_assign">
  154. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_or_assign</classname> &gt;</type>
  155. </typedef>
  156. <typedef name="make_bitwise_xor_assign">
  157. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_xor_assign</classname> &gt;</type>
  158. </typedef>
  159. <typedef name="make_subscript">
  160. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::subscript</classname> &gt;</type>
  161. </typedef>
  162. <typedef name="make_if_else">
  163. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::if_else_</classname> &gt;</type>
  164. </typedef>
  165. <typedef name="make_function">
  166. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::function</classname> &gt;</type>
  167. </typedef>
  168. </namespace>
  169. <typedef name="_flatten">
  170. <type><classname>proto::functional::flatten</classname></type>
  171. </typedef>
  172. <typedef name="_make_pair">
  173. <type><classname>proto::functional::make_pair</classname></type>
  174. </typedef>
  175. <typedef name="_first">
  176. <type><classname>proto::functional::first</classname></type>
  177. </typedef>
  178. <typedef name="_second">
  179. <type><classname>proto::functional::second</classname></type>
  180. </typedef>
  181. <typedef name="_pop_back">
  182. <type><classname>proto::functional::pop_back</classname></type>
  183. </typedef>
  184. <typedef name="_pop_front">
  185. <type><classname>proto::functional::pop_front</classname></type>
  186. </typedef>
  187. <typedef name="_push_back">
  188. <type><classname>proto::functional::push_back</classname></type>
  189. </typedef>
  190. <typedef name="_push_front">
  191. <type><classname>proto::functional::push_front</classname></type>
  192. </typedef>
  193. <typedef name="_reverse">
  194. <type><classname>proto::functional::reverse</classname></type>
  195. </typedef>
  196. <typedef name="_eval">
  197. <type><classname>proto::functional::eval</classname></type>
  198. </typedef>
  199. <typedef name="_deep_copy">
  200. <type><classname>proto::functional::deep_copy</classname></type>
  201. </typedef>
  202. <typedef name="_make_terminal">
  203. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::terminal</classname> &gt;</type>
  204. </typedef>
  205. <typedef name="_make_unary_plus">
  206. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::unary_plus</classname> &gt;</type>
  207. </typedef>
  208. <typedef name="_make_negate">
  209. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::negate</classname> &gt;</type>
  210. </typedef>
  211. <typedef name="_make_dereference">
  212. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::dereference</classname> &gt;</type>
  213. </typedef>
  214. <typedef name="_make_complement">
  215. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::complement</classname> &gt;</type>
  216. </typedef>
  217. <typedef name="_make_address_of">
  218. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::address_of</classname> &gt;</type>
  219. </typedef>
  220. <typedef name="_make_logical_not">
  221. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_not</classname> &gt;</type>
  222. </typedef>
  223. <typedef name="_make_pre_inc">
  224. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::pre_inc</classname> &gt;</type>
  225. </typedef>
  226. <typedef name="_make_pre_dec">
  227. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::pre_dec</classname> &gt;</type>
  228. </typedef>
  229. <typedef name="_make_post_inc">
  230. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::post_inc</classname> &gt;</type>
  231. </typedef>
  232. <typedef name="_make_post_dec">
  233. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::post_dec</classname> &gt;</type>
  234. </typedef>
  235. <typedef name="_make_shift_left">
  236. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_left</classname> &gt;</type>
  237. </typedef>
  238. <typedef name="_make_shift_right">
  239. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_right</classname> &gt;</type>
  240. </typedef>
  241. <typedef name="_make_multiplies">
  242. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::multiplies</classname> &gt;</type>
  243. </typedef>
  244. <typedef name="_make_divides">
  245. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::divides</classname> &gt;</type>
  246. </typedef>
  247. <typedef name="_make_modulus">
  248. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::modulus</classname> &gt;</type>
  249. </typedef>
  250. <typedef name="_make_plus">
  251. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::plus</classname> &gt;</type>
  252. </typedef>
  253. <typedef name="_make_minus">
  254. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::minus</classname> &gt;</type>
  255. </typedef>
  256. <typedef name="_make_less">
  257. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::less</classname> &gt;</type>
  258. </typedef>
  259. <typedef name="_make_greater">
  260. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::greater</classname> &gt;</type>
  261. </typedef>
  262. <typedef name="_make_less_equal">
  263. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::less_equal</classname> &gt;</type>
  264. </typedef>
  265. <typedef name="_make_greater_equal">
  266. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::greater_equal</classname> &gt;</type>
  267. </typedef>
  268. <typedef name="_make_equal_to">
  269. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::equal_to</classname> &gt;</type>
  270. </typedef>
  271. <typedef name="_make_not_equal_to">
  272. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::not_equal_to</classname> &gt;</type>
  273. </typedef>
  274. <typedef name="_make_logical_or">
  275. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_or</classname> &gt;</type>
  276. </typedef>
  277. <typedef name="_make_logical_and">
  278. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::logical_and</classname> &gt;</type>
  279. </typedef>
  280. <typedef name="_make_bitwise_and">
  281. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_and</classname> &gt;</type>
  282. </typedef>
  283. <typedef name="_make_bitwise_or">
  284. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_or</classname> &gt;</type>
  285. </typedef>
  286. <typedef name="_make_bitwise_xor">
  287. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_xor</classname> &gt;</type>
  288. </typedef>
  289. <typedef name="_make_comma">
  290. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::comma</classname> &gt;</type>
  291. </typedef>
  292. <typedef name="_make_mem_ptr">
  293. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::mem_ptr</classname> &gt;</type>
  294. </typedef>
  295. <typedef name="_make_assign">
  296. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::assign</classname> &gt;</type>
  297. </typedef>
  298. <typedef name="_make_shift_left_assign">
  299. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_left_assign</classname> &gt;</type>
  300. </typedef>
  301. <typedef name="_make_shift_right_assign">
  302. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::shift_right_assign</classname> &gt;</type>
  303. </typedef>
  304. <typedef name="_make_multiplies_assign">
  305. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::multiplies_assign</classname> &gt;</type>
  306. </typedef>
  307. <typedef name="_make_divides_assign">
  308. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::divides_assign</classname> &gt;</type>
  309. </typedef>
  310. <typedef name="_make_modulus_assign">
  311. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::modulus_assign</classname> &gt;</type>
  312. </typedef>
  313. <typedef name="_make_plus_assign">
  314. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::plus_assign</classname> &gt;</type>
  315. </typedef>
  316. <typedef name="_make_minus_assign">
  317. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::minus_assign</classname> &gt;</type>
  318. </typedef>
  319. <typedef name="_make_bitwise_and_assign">
  320. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_and_assign</classname> &gt;</type>
  321. </typedef>
  322. <typedef name="_make_bitwise_or_assign">
  323. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_or_assign</classname> &gt;</type>
  324. </typedef>
  325. <typedef name="_make_bitwise_xor_assign">
  326. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::bitwise_xor_assign</classname> &gt;</type>
  327. </typedef>
  328. <typedef name="_make_subscript">
  329. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::subscript</classname> &gt;</type>
  330. </typedef>
  331. <typedef name="_make_if_else">
  332. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::if_else_</classname> &gt;</type>
  333. </typedef>
  334. <typedef name="_make_function">
  335. <type><classname>proto::functional::make_expr</classname>&lt; <classname>proto::tag::function</classname> &gt;</type>
  336. </typedef>
  337. <typedef name="_childN">
  338. <purpose>For each <replaceable>N</replaceable> in <computeroutput>[0,BOOST_PROTO_MAX_ARITY)</computeroutput></purpose>
  339. <type><classname>proto::_child_c</classname>&lt; <replaceable>N</replaceable> &gt;</type>
  340. </typedef>
  341. <typedef name="_child">
  342. <type><classname alt="proto::_childN">proto::_child0</classname></type>
  343. </typedef>
  344. <typedef name="_left">
  345. <type><classname alt="proto::_childN">proto::_child0</classname></type>
  346. </typedef>
  347. <typedef name="_right">
  348. <type><classname alt="proto::_childN">proto::_child1</classname></type>
  349. </typedef>
  350. </namespace>
  351. </namespace>
  352. <macro name="BOOST_PROTO_MAX_ARITY">
  353. <purpose>Controls the maximum number of child nodes an expression may have.</purpose>
  354. <description>
  355. <para>
  356. <computeroutput>BOOST_PROTO_MAX_ARITY</computeroutput> defaults to 10. It may be set higher or lower, but not
  357. lower than 3. Setting it higher will have a negative effect on compile times.
  358. </para>
  359. <para>
  360. See also <computeroutput><macroname>BOOST_PROTO_MAX_FUNCTION_CALL_ARITY</macroname></computeroutput>.
  361. </para>
  362. </description>
  363. </macro>
  364. <macro name="BOOST_PROTO_MAX_LOGICAL_ARITY">
  365. <purpose>Controls the maximum number of sub-grammars that
  366. <computeroutput>
  367. <classname alt="boost::proto::or_">proto::or_&lt;&gt;</classname>
  368. </computeroutput> and
  369. <computeroutput>
  370. <classname alt="boost::proto::and_">proto::and_&lt;&gt;</classname>
  371. </computeroutput> accept.</purpose>
  372. <description>
  373. <para>
  374. <computeroutput>BOOST_PROTO_MAX_LOGICAL_ARITY</computeroutput> defaults to 10. It may be set higher or lower. Setting
  375. it higher will have a negative effect on compile times.
  376. </para>
  377. </description>
  378. </macro>
  379. <macro name="BOOST_PROTO_MAX_FUNCTION_CALL_ARITY">
  380. <purpose>Controls the maximum number of arguments that <computeroutput>operator()</computeroutput> overloads
  381. accept.</purpose>
  382. <description>
  383. <para>
  384. When setting
  385. <computeroutput>
  386. <macroname>BOOST_PROTO_MAX_ARITY</macroname>
  387. </computeroutput> higher than the default, compile times
  388. slow down considerably. That is due in large part to the explosion in the number of
  389. <computeroutput>operator()</computeroutput> overloads that must be generated for each
  390. Proto expression type. By setting <computeroutput>BOOST_PROTO_MAX_FUNCTION_CALL_ARITY</computeroutput>
  391. lower than <computeroutput><macroname>BOOST_PROTO_MAX_ARITY</macroname></computeroutput>,
  392. compile times can be sped up considerably.
  393. </para>
  394. </description>
  395. </macro>
  396. </header>