﻿<?xml version="1.0" encoding="utf-8"?>
<header name="boost/proto/expr.hpp">
  <namespace name="boost">
    <namespace name="proto">

      <!-- boost::proto::basic_expr -->

      <struct name="basic_expr">
        <template>
          <template-type-parameter name="Tag"/>
          <template-type-parameter name="Args"/>
          <template-nontype-parameter name="Arity">
            <type>long</type>
            <default>Args::arity</default>
          </template-nontype-parameter>
        </template>

        <purpose>Simplified representation of a node in an expression tree.</purpose>

        <description>
          <para>
            <computeroutput>proto::basic_expr&lt;&gt;</computeroutput> is a node in an expression
            template tree. It is a container for its child sub-trees. It also serves as the
            terminal nodes of the tree.
          </para>
          <para>
            <computeroutput>Tag</computeroutput> is type that represents the operation
            encoded by this expression. It is typically one of the structs in the
            <computeroutput>boost::proto::tag</computeroutput> namespace, but it doesn't
            have to be. If <computeroutput>Arity</computeroutput> is 0 then this
            <computeroutput>expr&lt;&gt;</computeroutput> type represents a leaf in the
            expression tree.
          </para>
          <para>
            <computeroutput>Args</computeroutput> is a list of types representing
            the children of this expression. It is an instantiation of one of
            <computeroutput><classname alt="proto::listN">proto::list1&lt;&gt;</classname></computeroutput>,
            <computeroutput><classname alt="proto::listN">proto::list2&lt;&gt;</classname></computeroutput>,
            etc. The child types
            must all themselves be either <computeroutput>proto::expr&lt;&gt;</computeroutput>
            or <computeroutput>proto::basic_expr&lt;&gt;&amp;</computeroutput> (or extensions thereof via
            <computeroutput><classname>proto::extends&lt;&gt;</classname></computeroutput> or
            <computeroutput><macroname>BOOST_PROTO_EXTENDS</macroname>()</computeroutput>), unless
            <computeroutput>Arity</computeroutput> is 0, in which case
            <computeroutput>Args</computeroutput> must be
            <computeroutput>proto::term&lt;T&gt;</computeroutput>, where
            <computeroutput>T</computeroutput> can be any type.
          </para>
          <para>
            <computeroutput>proto::basic_expr&lt;&gt;</computeroutput> is a valid Fusion
            random-access sequence, where the elements of the sequence are the child
            expressions.
          </para>
        </description>

        <!-- typedefs -->

        <typedef name="proto_tag">
          <type>Tag</type>
        </typedef>

        <typedef name="proto_args">
          <type>Args</type>
        </typedef>

        <typedef name="proto_arity">
          <type>mpl::long_&lt; Arity &gt;</type>
        </typedef>

        <typedef name="proto_domain">
          <type><classname>proto::default_domain</classname></type>
        </typedef>

        <typedef name="proto_grammar">
          <type>basic_expr</type>
        </typedef>

        <typedef name="proto_base_expr">
          <type>basic_expr</type>
        </typedef>

        <typedef name="proto_derived_expr">
          <type>basic_expr</type>
        </typedef>

        <typedef name="proto_childN">
          <type>typename Args::child<replaceable>N</replaceable></type>
          <purpose>For each <replaceable>N</replaceable> in <replaceable>[0,max(Arity,1))</replaceable>.</purpose>
        </typedef>

        <method-group name="public static functions">

          <!-- make -->
          <method name="make" specifiers="static">
            <type>basic_expr const</type>
            <template>
              <template-type-parameter name="A" pack="1"/>
            </template>
            <parameter name="a" pack="1">
              <paramtype>A const &amp;</paramtype>
            </parameter>
            <requires>
              <para>
                The number of supplied arguments must be <computeroutput>max(Arity,1)</computeroutput>.
              </para>
            </requires>
            <returns>
              <para>
                A new <computeroutput>basic_expr</computeroutput> object initialized with the specified arguments.
              </para>
            </returns>
          </method>

        </method-group>

        <method-group name="public member functions">

          <method name="proto_base">
            <type>basic_expr &amp;</type>
            <returns>
              <para>
                <computeroutput>*this</computeroutput>
              </para>
            </returns>
          </method>

          <method name="proto_base" cv="const">
            <type>basic_expr const &amp;</type>
            <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>

      <!-- boost::proto::expr -->

      <struct name="expr">
        <template>
          <template-type-parameter name="Tag"/>
          <template-type-parameter name="Args"/>
          <template-nontype-parameter name="Arity">
            <type>long</type>
            <default>Args::arity</default>
          </template-nontype-parameter>
        </template>

        <purpose>Representation of a node in an expression tree.</purpose>

        <description>
          <para>
            <computeroutput>proto::expr&lt;&gt;</computeroutput> is a node in an expression
            template tree. It is a container for its child sub-trees. It also serves as the
            terminal nodes of the tree.
          </para>
          <para>
            <computeroutput>Tag</computeroutput> is type that represents the operation
            encoded by this expression. It is typically one of the structs in the
            <computeroutput>boost::proto::tag</computeroutput> namespace, but it doesn't
            have to be. If <computeroutput>Arity</computeroutput> is 0 then this
            <computeroutput>expr&lt;&gt;</computeroutput> type represents a leaf in the
            expression tree.
          </para>
          <para>
            <computeroutput>Args</computeroutput> is a list of types representing
            the children of this expression. It is an instantiation of one of
            <computeroutput><classname alt="proto::listN">proto::list1&lt;&gt;</classname></computeroutput>,
            <computeroutput><classname alt="proto::listN">proto::list2&lt;&gt;</classname></computeroutput>,
            etc. The child types
            must all themselves be either <computeroutput>proto::expr&lt;&gt;</computeroutput>
            or <computeroutput>proto::basic_expr&lt;&gt;&amp;</computeroutput> (or extensions thereof via
            <computeroutput><classname>proto::extends&lt;&gt;</classname></computeroutput> or
            <computeroutput><macroname>BOOST_PROTO_EXTENDS</macroname>()</computeroutput>), unless
            <computeroutput>Arity</computeroutput> is 0, in which case
            <computeroutput>Args</computeroutput> must be
            <computeroutput>proto::term&lt;T&gt;</computeroutput>, where
            <computeroutput>T</computeroutput> can be any type.
          </para>
          <para>
            <computeroutput>proto::expr&lt;&gt;</computeroutput> is a valid Fusion
            random-access sequence, where the elements of the sequence are the child
            expressions.
          </para>
        </description>

        <!-- typedefs -->

        <typedef name="proto_tag">
          <type>Tag</type>
        </typedef>

        <typedef name="proto_args">
          <type>Args</type>
        </typedef>

        <typedef name="proto_arity">
          <type>mpl::long_&lt; Arity &gt;</type>
        </typedef>

        <typedef name="proto_domain">
          <type><classname>proto::default_domain</classname></type>
        </typedef>

        <typedef name="proto_grammar">
          <type><classname>proto::basic_expr</classname>&lt; Tag, Args, Arity &gt;</type>
        </typedef>

        <typedef name="proto_base_expr">
          <type>expr</type>
        </typedef>

        <typedef name="proto_derived_expr">
          <type>expr</type>
        </typedef>

        <typedef name="proto_childN">
          <type>typename Args::child<replaceable>N</replaceable></type>
          <purpose>For each <replaceable>N</replaceable> in <replaceable>[0,max(Arity,1))</replaceable>.</purpose>
        </typedef>

        <struct name="result">
          <template>
            <template-type-parameter name="Signature"/>
          </template>
          <description>
            <para>
              Encodes the return type of <computeroutput><classname>proto::expr&lt;&gt;</classname>::operator()</computeroutput>.
              Makes <computeroutput><classname>proto::expr&lt;&gt;</classname></computeroutput> a TR1-style function object type
              usable with <computeroutput>boost::result_of&lt;&gt;</computeroutput>
            </para>
          </description>
          <typedef name="type">
            <type><replaceable>unspecified</replaceable></type>
          </typedef>
        </struct>

        <method-group name="public static functions">

          <!-- make -->
          <method name="make" specifiers="static">
            <type>expr const</type>
            <template>
              <template-type-parameter name="A" pack="1"/>
            </template>
            <parameter name="a" pack="1">
              <paramtype>A const &amp;</paramtype>
            </parameter>
            <requires>
              <para>
                The number of supplied arguments must be <computeroutput>max(Arity,1)</computeroutput>.
              </para>
            </requires>
            <returns>
              <para>
                A new <computeroutput>expr</computeroutput> object initialized with the specified arguments.
              </para>
            </returns>
          </method>

        </method-group>

        <method-group name="public member functions">

          <method name="proto_base">
            <type>expr &amp;</type>
            <returns><para><computeroutput>*this</computeroutput></para></returns>
          </method>

          <method name="proto_base" cv="const">
            <type>expr const &amp;</type>
            <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>

          <!-- operator= -->
          <method name="operator=">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A"/>
            </template>
            <parameter name="a">
              <paramtype>A &amp;</paramtype>
            </parameter>
            <description>
              <para>Lazy assignment expression</para>
            </description>
            <returns>
              <para>A new expression node representing the assignment operation.</para>
            </returns>
          </method>

          <method name="operator=">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A"/>
            </template>
            <parameter name="a">
              <paramtype>A 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 name="operator=" cv="const">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A"/>
            </template>
            <parameter name="a">
              <paramtype>A &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 name="operator=" cv="const">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A"/>
            </template>
            <parameter name="a">
              <paramtype>A 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>

          <!-- operator[] -->
          <method name="operator[]">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A"/>
            </template>
            <parameter name="a">
              <paramtype>A &amp;</paramtype>
            </parameter>
            <description>
              <para>Lazy subscript expression</para>
            </description>
            <returns>
              <para>A new expression node representing the subscript operation.</para>
            </returns>
          </method>

          <method name="operator[]">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A"/>
            </template>
            <parameter name="a">
              <paramtype>A 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 name="operator[]" cv="const">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A"/>
            </template>
            <parameter name="a">
              <paramtype>A &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 name="operator[]" cv="const">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A"/>
            </template>
            <parameter name="a">
              <paramtype>A 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>

          <!-- operator() -->
          <method name="operator()">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A" pack="1"/>
            </template>
            <parameter name="a" pack="1">
              <paramtype>A const &amp;</paramtype>
            </parameter>
            <description>
              <para>Lazy function call</para>
            </description>
            <returns>
              <para>A new expression node representing the function call operation.</para>
            </returns>
          </method>

          <method name="operator()" cv="const">
            <type><replaceable>unspecified</replaceable></type>
            <template>
              <template-type-parameter name="A" pack="1"/>
            </template>
            <parameter name="a" pack="1">
              <paramtype>A 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>

        <data-member name="childN">
          <type>proto_child<replaceable>N</replaceable></type>
          <purpose>For each <replaceable>N</replaceable> in <replaceable>[0,max(Arity,1))</replaceable>.</purpose>
        </data-member>

        <data-member name="proto_arity_c" specifiers="static">
          <type>const long</type>
          <purpose>
            <computeroutput>= Arity;</computeroutput>
          </purpose>
        </data-member>

      </struct>

      <!-- proto::unexpr -->
      <struct name="unexpr">
        <template>
          <template-type-parameter name="Expr"/>
        </template>
        <purpose>Lets you inherit the interface of an expression while hiding from Proto the fact that
          the type is a Proto expression.</purpose>
        <inherit><type>Expr</type></inherit>
        <method-group name="public member functions"/>
        <constructor>
          <parameter name="expr">
            <paramtype>Expr const &amp;</paramtype>
          </parameter>
        </constructor>
        <description>
          <para>
            For an expression type <computeroutput>E</computeroutput>,
            <computeroutput>
              <classname>proto::is_expr</classname>&lt;E&gt;::value
            </computeroutput> is <computeroutput>true</computeroutput>, but
            <computeroutput>
              <classname>proto::is_expr</classname>&lt;proto::unexpr&lt;E&gt; &gt;::value
            </computeroutput> is <computeroutput>false</computeroutput>.
          </para>
        </description>
      </struct>

    </namespace>
  </namespace>
</header>
