123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- <?xml version="1.0" encoding="utf-8"?>
- <!--
- Copyright 2012 Eric Niebler
- Distributed under the Boost
- Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- -->
- <header name="boost/proto/debug.hpp">
- <para>Utilities for debugging Proto expression trees </para>
- <namespace name="boost">
- <namespace name="proto">
- <namespace name="functional">
- <!-- proto::functional::display_expr -->
- <struct name="display_expr">
- <purpose>Pretty-print a Proto expression tree. </purpose>
- <description>
- <para>
- A <conceptname>PolymorphicFunctionObject</conceptname> which accepts a Proto expression tree and pretty-prints it to an <computeroutput>ostream</computeroutput> for debugging purposes.
- </para>
- </description>
- <typedef name="result_type">
- <type>void</type>
- </typedef>
- <method-group name="public member functions">
- <method name="operator()" cv="const">
- <type>void</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr const &</paramtype>
- </parameter>
- </method>
- </method-group>
- <constructor>
- <parameter name="sout"><paramtype>std::ostream &</paramtype><default>std::cout</default>
- <description>
- <para>
- The <computeroutput>ostream</computeroutput> to which the expression tree will be written.
- </para>
- </description>
- </parameter>
- <parameter name="depth">
- <paramtype>int</paramtype>
- <default>0</default>
- <description>
- <para>
- The starting indentation depth for this node. Children nodes will be displayed at a starting depth of <computeroutput>depth+4</computeroutput>.
- </para>
- </description>
- </parameter>
- </constructor>
- </struct>
- </namespace>
- <!-- proto::display_expr -->
- <overloaded-function name="display_expr">
- <signature>
- <type>void</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr const &</paramtype>
- <description>
- <para>The Proto expression tree to pretty-print </para>
- </description>
- </parameter>
- <parameter name="sout">
- <paramtype>std::ostream &</paramtype>
- <description>
- <para>
- The <computeroutput>ostream</computeroutput> to which the output should be written. If not specified, defaults to <computeroutput>std::cout</computeroutput>.
- </para>
- </description>
- </parameter>
- </signature>
- <signature>
- <type>void</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr const &</paramtype>
- </parameter>
- </signature>
- <purpose>Pretty-print a Proto expression tree. </purpose>
- <notes>
- <para>
- Equivalent to <computeroutput><classname alt="boost::proto::functional::display_expr">proto::functional::display_expr</classname>(0, sout)(expr)</computeroutput>.
- </para>
- </notes>
- </overloaded-function>
- <!-- proto::assert_matches -->
- <function name="assert_matches">
- <type>void</type>
- <template>
- <template-type-parameter name="Grammar"/>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr const &</paramtype>
- <purpose>
- The Proto expression to check againts <code>Grammar</code>.
- </purpose>
- </parameter>
- <purpose>
- Assert at compile time that a particular expression
- matches the specified grammar.
- </purpose>
- <notes>
- <para>
- Equivalent to <code>BOOST_MPL_ASSERT((<classname alt="proto::matches">proto::matches</classname><Expr, Grammar>))</code>.
- </para>
- </notes>
- <description>
- <para>
- Use <code>proto::assert_matches()</code> to assert at compile-time that
- an expression matches a grammar.
- </para>
- <para>
- <emphasis role="bold">Example:</emphasis><programlisting>typedef proto::plus< proto::terminal< int >, proto::terminal< int > > PlusInts;
- proto::assert_matches<PlusInts>( <functionname>proto::lit</functionname>(1) + 42 );</programlisting>
- </para>
- <para>
- See also:
- <itemizedlist>
- <listitem>
- <code><functionname>proto::assert_matches_not</functionname>()</code>
- </listitem>
- <listitem>
- <code><macroname>BOOST_PROTO_ASSERT_MATCHES</macroname>()</code>
- </listitem>
- <listitem>
- <code><macroname>BOOST_PROTO_ASSERT_MATCHES_NOT</macroname>()</code>
- </listitem>
- </itemizedlist>
- </para>
- </description>
- </function>
- <!-- proto::assert_matches_not -->
- <function name="assert_matches_not">
- <type>void</type>
- <template>
- <template-type-parameter name="Grammar"/>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr const &</paramtype>
- <purpose>
- The Proto expression to check againts <code>Grammar</code>.
- </purpose>
- </parameter>
- <purpose>
- Assert at compile time that a particular expression
- does not match the specified grammar.
- </purpose>
- <notes>
- <para>
- Equivalent to <code>BOOST_MPL_ASSERT_NOT((<classname alt="proto::matches">proto::matches</classname><Expr, Grammar>))</code>.
- </para>
- </notes>
- <description>
- <para>
- Use <code>proto::assert_matches_not()</code> to assert at compile-time that
- an expression does not match a grammar.
- </para>
- <para>
- <emphasis role="bold">Example:</emphasis><programlisting>typedef proto::plus< proto::terminal< int >, proto::terminal< int > > PlusInts;
- proto::assert_matches_not<PlusInts>( <functionname>proto::lit</functionname>("a string") + 42 );</programlisting>
- </para>
- <para>
- See also:
- <itemizedlist>
- <listitem>
- <code><functionname>proto::assert_matches</functionname>()</code>
- </listitem>
- <listitem>
- <code><macroname>BOOST_PROTO_ASSERT_MATCHES</macroname>()</code>
- </listitem>
- <listitem>
- <code><macroname>BOOST_PROTO_ASSERT_MATCHES_NOT</macroname>()</code>
- </listitem>
- </itemizedlist>
- </para>
- </description>
- </function>
- </namespace>
- </namespace>
- <macro name="BOOST_PROTO_ASSERT_MATCHES" kind="functionlike">
- <macro-parameter name="expr"/>
- <macro-parameter name="Grammar"/>
- <purpose>
- Assert at compile time that a particular expression
- matches the specified grammar.
- </purpose>
- <notes>
- <para>
- Equivalent to <code><functionname alt="boost::proto::assert_matches">proto::assert_matches</functionname><Grammar>(expr)</code>.
- </para>
- </notes>
- <description>
- <para>
- Use <code>BOOST_PROTO_ASSERT_MATCHES()</code> to assert at compile-time that
- an expression matches a grammar.
- </para>
- <para>
- <emphasis role="bold">Example:</emphasis><programlisting>typedef <classname alt="boost::proto::plus">proto::plus</classname>< <classname alt="boost::proto::terminal">proto::terminal</classname>< int >, <classname alt="boost::proto::terminal">proto::terminal</classname>< int > > PlusInts;
- BOOST_PROTO_ASSERT_MATCHES( <functionname alt="boost::proto::lit">proto::lit</functionname>(1) + 42, PlusInts );</programlisting>
- </para>
- <para>
- See also:
- <itemizedlist>
- <listitem>
- <code><functionname alt="boost::proto::assert_matches">proto::assert_matches</functionname>()</code>
- </listitem>
- <listitem>
- <code><functionname alt="boost::proto::assert_matches_not">proto::assert_matches_not</functionname>()</code>
- </listitem>
- <listitem>
- <code><macroname>BOOST_PROTO_ASSERT_MATCHES_NOT</macroname>()</code>
- </listitem>
- </itemizedlist>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_ASSERT_MATCHES_NOT" kind="functionlike">
- <macro-parameter name="expr"/>
- <macro-parameter name="Grammar"/>
- <purpose>
- Assert at compile time that a particular expression
- does not match the specified grammar.
- </purpose>
- <notes>
- <para>
- Equivalent to <code><functionname alt="boost::proto::assert_matches_not">proto::assert_matches_not</functionname><Grammar>(expr)</code>.
- </para>
- </notes>
- <description>
- <para>
- Use <code>BOOST_PROTO_ASSERT_MATCHES_NOT()</code> to assert at compile-time that
- an expression does not match a grammar.
- </para>
- <para>
- <emphasis role="bold">Example:</emphasis><programlisting>typedef <classname alt="boost::proto::plus">proto::plus</classname>< <classname alt="boost::proto::terminal">proto::terminal</classname>< int >, <classname alt="boost::proto::terminal">proto::terminal</classname>< int > > PlusInts;
- BOOST_PROTO_ASSERT_MATCHES_NOT( <functionname alt="boost::proto::lit">proto::lit</functionname>("a string") + 42, PlusInts );</programlisting>
- </para>
- <para>
- See also:
- <itemizedlist>
- <listitem>
- <code><functionname alt="boost::proto::assert_matches">proto::assert_matches</functionname>()</code>
- </listitem>
- <listitem>
- <code><functionname alt="boost::proto::assert_matches_not">proto::assert_matches_not</functionname>()</code>
- </listitem>
- <listitem>
- <code><macroname>BOOST_PROTO_ASSERT_MATCHES</macroname>()</code>
- </listitem>
- </itemizedlist>
- </para>
- </description>
- </macro>
- </header>
|