blob: 0ca4c1a1413c6801efb769e9124be630bd29484b [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<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>&lt;
typename boost::remove_reference&lt; Expr &gt;::type,
typename boost::remove_reference&lt; Context &gt;::type
&gt;</type>
</inherit>
</struct-specialization>
<method-group name="public member functions">
<method name="operator()" cv="const">
<type>typename <classname>proto::result_of::eval</classname>&lt; Expr, Context &gt;::type</type>
<template>
<template-type-parameter name="Expr"/>
<template-type-parameter name="Context"/>
</template>
<parameter name="expr">
<paramtype>Expr &amp;</paramtype>
<description>
<para>The Proto expression to evaluate.</para>
</description>
</parameter>
<parameter name="context">
<paramtype>Context &amp;</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&lt;Expr&gt;()(expr, context)</computeroutput>
</para>
</returns>
</method>
<method name="operator()" cv="const">
<type>typename <classname>proto::result_of::eval</classname>&lt; Expr, Context &gt;::type</type>
<template>
<template-type-parameter name="Expr"/>
<template-type-parameter name="Context"/>
</template>
<parameter name="expr">
<paramtype>Expr &amp;</paramtype>
</parameter>
<parameter name="context">
<paramtype>Context const &amp;</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&lt; Expr &gt;::result_type</type>
</typedef>
</struct>
</namespace>
<!-- proto::eval() -->
<overloaded-function name="eval">
<signature>
<type>typename <classname>proto::result_of::eval</classname>&lt; Expr, Context &gt;::type</type>
<template>
<template-type-parameter name="Expr"/>
<template-type-parameter name="Context"/>
</template>
<parameter name="expr">
<paramtype>Expr &amp;</paramtype>
<description>
<para>The Proto expression to evaluate.</para>
</description>
</parameter>
<parameter name="context">
<paramtype>Context &amp;</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>&lt; Expr, Context &gt;::type</type>
<template>
<template-type-parameter name="Expr"/>
<template-type-parameter name="Context"/>
</template>
<parameter name="expr">
<paramtype>Expr &amp;</paramtype>
</parameter>
<parameter name="context">
<paramtype>Context const &amp;</paramtype>
</parameter>
</signature>
<purpose>Evaluate a given Proto expression with a given context. </purpose>
<returns>
<para>
<computeroutput>typename Context::template eval&lt;Expr&gt;()(expr, context)</computeroutput>
</para>
</returns>
</overloaded-function>
</namespace>
</namespace>
</header>