281 lines
11 KiB
XML
281 lines
11 KiB
XML
<?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>
|