debug.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  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/debug.hpp">
  9. <para>Utilities for debugging Proto expression trees </para>
  10. <namespace name="boost">
  11. <namespace name="proto">
  12. <namespace name="functional">
  13. <!-- proto::functional::display_expr -->
  14. <struct name="display_expr">
  15. <purpose>Pretty-print a Proto expression tree. </purpose>
  16. <description>
  17. <para>
  18. A <conceptname>PolymorphicFunctionObject</conceptname> which accepts a Proto expression tree and pretty-prints it to an <computeroutput>ostream</computeroutput> for debugging purposes.
  19. </para>
  20. </description>
  21. <typedef name="result_type">
  22. <type>void</type>
  23. </typedef>
  24. <method-group name="public member functions">
  25. <method name="operator()" cv="const">
  26. <type>void</type>
  27. <template>
  28. <template-type-parameter name="Expr"/>
  29. </template>
  30. <parameter name="expr">
  31. <paramtype>Expr const &amp;</paramtype>
  32. </parameter>
  33. </method>
  34. </method-group>
  35. <constructor>
  36. <parameter name="sout"><paramtype>std::ostream &amp;</paramtype><default>std::cout</default>
  37. <description>
  38. <para>
  39. The <computeroutput>ostream</computeroutput> to which the expression tree will be written.
  40. </para>
  41. </description>
  42. </parameter>
  43. <parameter name="depth">
  44. <paramtype>int</paramtype>
  45. <default>0</default>
  46. <description>
  47. <para>
  48. The starting indentation depth for this node. Children nodes will be displayed at a starting depth of <computeroutput>depth+4</computeroutput>.
  49. </para>
  50. </description>
  51. </parameter>
  52. </constructor>
  53. </struct>
  54. </namespace>
  55. <!-- proto::display_expr -->
  56. <overloaded-function name="display_expr">
  57. <signature>
  58. <type>void</type>
  59. <template>
  60. <template-type-parameter name="Expr"/>
  61. </template>
  62. <parameter name="expr">
  63. <paramtype>Expr const &amp;</paramtype>
  64. <description>
  65. <para>The Proto expression tree to pretty-print </para>
  66. </description>
  67. </parameter>
  68. <parameter name="sout">
  69. <paramtype>std::ostream &amp;</paramtype>
  70. <description>
  71. <para>
  72. The <computeroutput>ostream</computeroutput> to which the output should be written. If not specified, defaults to <computeroutput>std::cout</computeroutput>.
  73. </para>
  74. </description>
  75. </parameter>
  76. </signature>
  77. <signature>
  78. <type>void</type>
  79. <template>
  80. <template-type-parameter name="Expr"/>
  81. </template>
  82. <parameter name="expr">
  83. <paramtype>Expr const &amp;</paramtype>
  84. </parameter>
  85. </signature>
  86. <purpose>Pretty-print a Proto expression tree. </purpose>
  87. <notes>
  88. <para>
  89. Equivalent to <computeroutput><classname alt="boost::proto::functional::display_expr">proto::functional::display_expr</classname>(0, sout)(expr)</computeroutput>.
  90. </para>
  91. </notes>
  92. </overloaded-function>
  93. <!-- proto::assert_matches -->
  94. <function name="assert_matches">
  95. <type>void</type>
  96. <template>
  97. <template-type-parameter name="Grammar"/>
  98. <template-type-parameter name="Expr"/>
  99. </template>
  100. <parameter name="expr">
  101. <paramtype>Expr const &amp;</paramtype>
  102. <purpose>
  103. The Proto expression to check againts <code>Grammar</code>.
  104. </purpose>
  105. </parameter>
  106. <purpose>
  107. Assert at compile time that a particular expression
  108. matches the specified grammar.
  109. </purpose>
  110. <notes>
  111. <para>
  112. Equivalent to <code>BOOST_MPL_ASSERT((<classname alt="proto::matches">proto::matches</classname>&lt;Expr, Grammar&gt;))</code>.
  113. </para>
  114. </notes>
  115. <description>
  116. <para>
  117. Use <code>proto::assert_matches()</code> to assert at compile-time that
  118. an expression matches a grammar.
  119. </para>
  120. <para>
  121. <emphasis role="bold">Example:</emphasis><programlisting>typedef proto::plus&lt; proto::terminal&lt; int &gt;, proto::terminal&lt; int &gt; &gt; PlusInts;
  122. proto::assert_matches&lt;PlusInts&gt;( <functionname>proto::lit</functionname>(1) + 42 );</programlisting>
  123. </para>
  124. <para>
  125. See also:
  126. <itemizedlist>
  127. <listitem>
  128. <code><functionname>proto::assert_matches_not</functionname>()</code>
  129. </listitem>
  130. <listitem>
  131. <code><macroname>BOOST_PROTO_ASSERT_MATCHES</macroname>()</code>
  132. </listitem>
  133. <listitem>
  134. <code><macroname>BOOST_PROTO_ASSERT_MATCHES_NOT</macroname>()</code>
  135. </listitem>
  136. </itemizedlist>
  137. </para>
  138. </description>
  139. </function>
  140. <!-- proto::assert_matches_not -->
  141. <function name="assert_matches_not">
  142. <type>void</type>
  143. <template>
  144. <template-type-parameter name="Grammar"/>
  145. <template-type-parameter name="Expr"/>
  146. </template>
  147. <parameter name="expr">
  148. <paramtype>Expr const &amp;</paramtype>
  149. <purpose>
  150. The Proto expression to check againts <code>Grammar</code>.
  151. </purpose>
  152. </parameter>
  153. <purpose>
  154. Assert at compile time that a particular expression
  155. does not match the specified grammar.
  156. </purpose>
  157. <notes>
  158. <para>
  159. Equivalent to <code>BOOST_MPL_ASSERT_NOT((<classname alt="proto::matches">proto::matches</classname>&lt;Expr, Grammar&gt;))</code>.
  160. </para>
  161. </notes>
  162. <description>
  163. <para>
  164. Use <code>proto::assert_matches_not()</code> to assert at compile-time that
  165. an expression does not match a grammar.
  166. </para>
  167. <para>
  168. <emphasis role="bold">Example:</emphasis><programlisting>typedef proto::plus&lt; proto::terminal&lt; int &gt;, proto::terminal&lt; int &gt; &gt; PlusInts;
  169. proto::assert_matches_not&lt;PlusInts&gt;( <functionname>proto::lit</functionname>("a string") + 42 );</programlisting>
  170. </para>
  171. <para>
  172. See also:
  173. <itemizedlist>
  174. <listitem>
  175. <code><functionname>proto::assert_matches</functionname>()</code>
  176. </listitem>
  177. <listitem>
  178. <code><macroname>BOOST_PROTO_ASSERT_MATCHES</macroname>()</code>
  179. </listitem>
  180. <listitem>
  181. <code><macroname>BOOST_PROTO_ASSERT_MATCHES_NOT</macroname>()</code>
  182. </listitem>
  183. </itemizedlist>
  184. </para>
  185. </description>
  186. </function>
  187. </namespace>
  188. </namespace>
  189. <macro name="BOOST_PROTO_ASSERT_MATCHES" kind="functionlike">
  190. <macro-parameter name="expr"/>
  191. <macro-parameter name="Grammar"/>
  192. <purpose>
  193. Assert at compile time that a particular expression
  194. matches the specified grammar.
  195. </purpose>
  196. <notes>
  197. <para>
  198. Equivalent to <code><functionname alt="boost::proto::assert_matches">proto::assert_matches</functionname>&lt;Grammar&gt;(expr)</code>.
  199. </para>
  200. </notes>
  201. <description>
  202. <para>
  203. Use <code>BOOST_PROTO_ASSERT_MATCHES()</code> to assert at compile-time that
  204. an expression matches a grammar.
  205. </para>
  206. <para>
  207. <emphasis role="bold">Example:</emphasis><programlisting>typedef <classname alt="boost::proto::plus">proto::plus</classname>&lt; <classname alt="boost::proto::terminal">proto::terminal</classname>&lt; int &gt;, <classname alt="boost::proto::terminal">proto::terminal</classname>&lt; int &gt; &gt; PlusInts;
  208. BOOST_PROTO_ASSERT_MATCHES( <functionname alt="boost::proto::lit">proto::lit</functionname>(1) + 42, PlusInts );</programlisting>
  209. </para>
  210. <para>
  211. See also:
  212. <itemizedlist>
  213. <listitem>
  214. <code><functionname alt="boost::proto::assert_matches">proto::assert_matches</functionname>()</code>
  215. </listitem>
  216. <listitem>
  217. <code><functionname alt="boost::proto::assert_matches_not">proto::assert_matches_not</functionname>()</code>
  218. </listitem>
  219. <listitem>
  220. <code><macroname>BOOST_PROTO_ASSERT_MATCHES_NOT</macroname>()</code>
  221. </listitem>
  222. </itemizedlist>
  223. </para>
  224. </description>
  225. </macro>
  226. <macro name="BOOST_PROTO_ASSERT_MATCHES_NOT" kind="functionlike">
  227. <macro-parameter name="expr"/>
  228. <macro-parameter name="Grammar"/>
  229. <purpose>
  230. Assert at compile time that a particular expression
  231. does not match the specified grammar.
  232. </purpose>
  233. <notes>
  234. <para>
  235. Equivalent to <code><functionname alt="boost::proto::assert_matches_not">proto::assert_matches_not</functionname>&lt;Grammar&gt;(expr)</code>.
  236. </para>
  237. </notes>
  238. <description>
  239. <para>
  240. Use <code>BOOST_PROTO_ASSERT_MATCHES_NOT()</code> to assert at compile-time that
  241. an expression does not match a grammar.
  242. </para>
  243. <para>
  244. <emphasis role="bold">Example:</emphasis><programlisting>typedef <classname alt="boost::proto::plus">proto::plus</classname>&lt; <classname alt="boost::proto::terminal">proto::terminal</classname>&lt; int &gt;, <classname alt="boost::proto::terminal">proto::terminal</classname>&lt; int &gt; &gt; PlusInts;
  245. BOOST_PROTO_ASSERT_MATCHES_NOT( <functionname alt="boost::proto::lit">proto::lit</functionname>("a string") + 42, PlusInts );</programlisting>
  246. </para>
  247. <para>
  248. See also:
  249. <itemizedlist>
  250. <listitem>
  251. <code><functionname alt="boost::proto::assert_matches">proto::assert_matches</functionname>()</code>
  252. </listitem>
  253. <listitem>
  254. <code><functionname alt="boost::proto::assert_matches_not">proto::assert_matches_not</functionname>()</code>
  255. </listitem>
  256. <listitem>
  257. <code><macroname>BOOST_PROTO_ASSERT_MATCHES</macroname>()</code>
  258. </listitem>
  259. </itemizedlist>
  260. </para>
  261. </description>
  262. </macro>
  263. </header>