123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?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/eval.hpp">
- <para>
- Contains the
- <computeroutput>
- <functionname alt="boost::proto::eval">proto::eval()</functionname>
- </computeroutput> expression evaluator.
- </para>
- <namespace name="boost">
- <namespace name="proto">
- <namespace name="functional">
- <!-- proto::functional::eval-->
- <struct name="eval">
- <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type for evaluating a given Proto
- expression with a given context.</purpose>
- <inherit>
- <type><classname>proto::callable</classname></type>
- </inherit>
- <struct-specialization name="result">
- <template>
- <template-type-parameter name="This"/>
- <template-type-parameter name="Expr"/>
- <template-type-parameter name="Context"/>
- </template>
- <specialization>
- <template-arg>This(Expr, Context)</template-arg>
- </specialization>
- <inherit>
- <type>
- <classname>proto::result_of::eval</classname><
- typename boost::remove_reference< Expr >::type,
- typename boost::remove_reference< Context >::type
- ></type>
- </inherit>
- </struct-specialization>
- <method-group name="public member functions">
- <method name="operator()" cv="const">
- <type>typename <classname>proto::result_of::eval</classname>< Expr, Context >::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- <template-type-parameter name="Context"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr &</paramtype>
- <description>
- <para>The Proto expression to evaluate.</para>
- </description>
- </parameter>
- <parameter name="context">
- <paramtype>Context &</paramtype>
- <description>
- <para>The context in which the expression should be evaluated. </para>
- </description>
- </parameter>
- <purpose>Evaluate a given Proto expression with a given context. </purpose>
- <returns>
- <para>
- <computeroutput>typename Context::template eval<Expr>()(expr, context)</computeroutput>
- </para>
- </returns>
- </method>
- <method name="operator()" cv="const">
- <type>typename <classname>proto::result_of::eval</classname>< Expr, Context >::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- <template-type-parameter name="Context"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr &</paramtype>
- </parameter>
- <parameter name="context">
- <paramtype>Context const &</paramtype>
- </parameter>
- <description>
- <para>
- This is an overloaded member function, provided for convenience. It differs from the above
- function only in what argument(s) it accepts.
- </para>
- </description>
- </method>
- </method-group>
- </struct>
- </namespace>
- <namespace name="result_of">
- <!-- proto::result_of::eval -->
- <struct name="eval">
- <template>
- <template-type-parameter name="Expr"/>
- <template-type-parameter name="Context"/>
- </template>
- <purpose>A metafunction for calculating the return type of <computeroutput>
- <functionname alt="proto::eval">proto::eval()</functionname></computeroutput> given a
- certain <computeroutput>Expr</computeroutput> and <computeroutput>Context</computeroutput> types.</purpose>
- <typedef name="type">
- <type>typename Context::template eval< Expr >::result_type</type>
- </typedef>
- </struct>
- </namespace>
- <!-- proto::eval() -->
- <overloaded-function name="eval">
- <signature>
- <type>typename <classname>proto::result_of::eval</classname>< Expr, Context >::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- <template-type-parameter name="Context"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr &</paramtype>
- <description>
- <para>The Proto expression to evaluate.</para>
- </description>
- </parameter>
- <parameter name="context">
- <paramtype>Context &</paramtype>
- <description>
- <para>The context in which the expression should be evaluated.</para>
- </description>
- </parameter>
- </signature>
- <signature>
- <type>typename <classname>proto::result_of::eval</classname>< Expr, Context >::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- <template-type-parameter name="Context"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr &</paramtype>
- </parameter>
- <parameter name="context">
- <paramtype>Context const &</paramtype>
- </parameter>
- </signature>
- <purpose>Evaluate a given Proto expression with a given context. </purpose>
- <returns>
- <para>
- <computeroutput>typename Context::template eval<Expr>()(expr, context)</computeroutput>
- </para>
- </returns>
- </overloaded-function>
- </namespace>
- </namespace>
- </header>
|