| <?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<></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<></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<></classname></computeroutput>, |
| <computeroutput><classname alt="proto::listN">proto::list2<></classname></computeroutput>, |
| etc. The child types |
| must all themselves be either <computeroutput>proto::expr<></computeroutput> |
| or <computeroutput>proto::basic_expr<>&</computeroutput> (or extensions thereof via |
| <computeroutput><classname>proto::extends<></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<T></computeroutput>, where |
| <computeroutput>T</computeroutput> can be any type. |
| </para> |
| <para> |
| <computeroutput>proto::basic_expr<></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_< Arity ></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 &</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 &</type> |
| <returns> |
| <para> |
| <computeroutput>*this</computeroutput> |
| </para> |
| </returns> |
| </method> |
| |
| <method name="proto_base" cv="const"> |
| <type>basic_expr const &</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<></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<></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<></classname></computeroutput>, |
| <computeroutput><classname alt="proto::listN">proto::list2<></classname></computeroutput>, |
| etc. The child types |
| must all themselves be either <computeroutput>proto::expr<></computeroutput> |
| or <computeroutput>proto::basic_expr<>&</computeroutput> (or extensions thereof via |
| <computeroutput><classname>proto::extends<></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<T></computeroutput>, where |
| <computeroutput>T</computeroutput> can be any type. |
| </para> |
| <para> |
| <computeroutput>proto::expr<></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_< Arity ></type> |
| </typedef> |
| |
| <typedef name="proto_domain"> |
| <type><classname>proto::default_domain</classname></type> |
| </typedef> |
| |
| <typedef name="proto_grammar"> |
| <type><classname>proto::basic_expr</classname>< Tag, Args, Arity ></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<></classname>::operator()</computeroutput>. |
| Makes <computeroutput><classname>proto::expr<></classname></computeroutput> a TR1-style function object type |
| usable with <computeroutput>boost::result_of<></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 &</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 &</type> |
| <returns><para><computeroutput>*this</computeroutput></para></returns> |
| </method> |
| |
| <method name="proto_base" cv="const"> |
| <type>expr const &</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 &</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 &</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 &</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 &</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 &</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 &</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 &</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 &</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 &</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 &</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 &</paramtype> |
| </parameter> |
| </constructor> |
| <description> |
| <para> |
| For an expression type <computeroutput>E</computeroutput>, |
| <computeroutput> |
| <classname>proto::is_expr</classname><E>::value |
| </computeroutput> is <computeroutput>true</computeroutput>, but |
| <computeroutput> |
| <classname>proto::is_expr</classname><proto::unexpr<E> >::value |
| </computeroutput> is <computeroutput>false</computeroutput>. |
| </para> |
| </description> |
| </struct> |
| |
| </namespace> |
| </namespace> |
| </header> |