123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- <?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/proto_fwd.hpp">
- <para>Forward declarations of all of proto's public types and functions. </para>
- <namespace name="boost">
- <namespace name="proto">
- <struct name="callable">
- <purpose>Base class for callable <conceptname>PolymorphicFunctionObject</conceptname>s</purpose>
- <description>
- <para>
- When defining a callable <conceptname>PolymorphicFunctionObject</conceptname>, inherit
- from <computeroutput>proto::callable</computeroutput> so that it can be used to create
- a <conceptname>CallableTransform</conceptname>.
- </para>
- <para>
- <computeroutput><classname>proto::is_callable</classname><T>::value</computeroutput> is
- <computeroutput>true</computeroutput> for types that inherit from
- <computeroutput>proto::callable</computeroutput>.
- </para>
- </description>
- </struct>
- <data-member name="N">
- <description>
- <para>Array size wildcard for Proto grammars that match array terminals.</para></description>
- <type>int const</type>
- </data-member>
- <namespace name="functional">
- <typedef name="make_terminal">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::terminal</classname> ></type>
- </typedef>
- <typedef name="make_unary_plus">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::unary_plus</classname> ></type>
- </typedef>
- <typedef name="make_negate">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::negate</classname> ></type>
- </typedef>
- <typedef name="make_dereference">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::dereference</classname> ></type>
- </typedef>
- <typedef name="make_complement">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::complement</classname> ></type>
- </typedef>
- <typedef name="make_address_of">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::address_of</classname> ></type>
- </typedef>
- <typedef name="make_logical_not">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::logical_not</classname> ></type>
- </typedef>
- <typedef name="make_pre_inc">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::pre_inc</classname> ></type>
- </typedef>
- <typedef name="make_pre_dec">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::pre_dec</classname> ></type>
- </typedef>
- <typedef name="make_post_inc">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::post_inc</classname> ></type>
- </typedef>
- <typedef name="make_post_dec">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::post_dec</classname> ></type>
- </typedef>
- <typedef name="make_shift_left">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::shift_left</classname> ></type>
- </typedef>
- <typedef name="make_shift_right">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::shift_right</classname> ></type>
- </typedef>
- <typedef name="make_multiplies">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::multiplies</classname> ></type>
- </typedef>
- <typedef name="make_divides">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::divides</classname> ></type>
- </typedef>
- <typedef name="make_modulus">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::modulus</classname> ></type>
- </typedef>
- <typedef name="make_plus">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::plus</classname> ></type>
- </typedef>
- <typedef name="make_minus">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::minus</classname> ></type>
- </typedef>
- <typedef name="make_less">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::less</classname> ></type>
- </typedef>
- <typedef name="make_greater">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::greater</classname> ></type>
- </typedef>
- <typedef name="make_less_equal">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::less_equal</classname> ></type>
- </typedef>
- <typedef name="make_greater_equal">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::greater_equal</classname> ></type>
- </typedef>
- <typedef name="make_equal_to">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::equal_to</classname> ></type>
- </typedef>
- <typedef name="make_not_equal_to">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::not_equal_to</classname> ></type>
- </typedef>
- <typedef name="make_logical_or">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::logical_or</classname> ></type>
- </typedef>
- <typedef name="make_logical_and">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::logical_and</classname> ></type>
- </typedef>
- <typedef name="make_bitwise_and">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_and</classname> ></type>
- </typedef>
- <typedef name="make_bitwise_or">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_or</classname> ></type>
- </typedef>
- <typedef name="make_bitwise_xor">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_xor</classname> ></type>
- </typedef>
- <typedef name="make_comma">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::comma</classname> ></type>
- </typedef>
- <typedef name="make_mem_ptr">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::mem_ptr</classname> ></type>
- </typedef>
- <typedef name="make_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::assign</classname> ></type>
- </typedef>
- <typedef name="make_shift_left_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::shift_left_assign</classname> ></type>
- </typedef>
- <typedef name="make_shift_right_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::shift_right_assign</classname> ></type>
- </typedef>
- <typedef name="make_multiplies_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::multiplies_assign</classname> ></type>
- </typedef>
- <typedef name="make_divides_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::divides_assign</classname> ></type>
- </typedef>
- <typedef name="make_modulus_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::modulus_assign</classname> ></type>
- </typedef>
- <typedef name="make_plus_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::plus_assign</classname> ></type>
- </typedef>
- <typedef name="make_minus_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::minus_assign</classname> ></type>
- </typedef>
- <typedef name="make_bitwise_and_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_and_assign</classname> ></type>
- </typedef>
- <typedef name="make_bitwise_or_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_or_assign</classname> ></type>
- </typedef>
- <typedef name="make_bitwise_xor_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_xor_assign</classname> ></type>
- </typedef>
- <typedef name="make_subscript">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::subscript</classname> ></type>
- </typedef>
- <typedef name="make_if_else">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::if_else_</classname> ></type>
- </typedef>
- <typedef name="make_function">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::function</classname> ></type>
- </typedef>
- </namespace>
- <typedef name="_flatten">
- <type><classname>proto::functional::flatten</classname></type>
- </typedef>
- <typedef name="_make_pair">
- <type><classname>proto::functional::make_pair</classname></type>
- </typedef>
- <typedef name="_first">
- <type><classname>proto::functional::first</classname></type>
- </typedef>
- <typedef name="_second">
- <type><classname>proto::functional::second</classname></type>
- </typedef>
- <typedef name="_pop_back">
- <type><classname>proto::functional::pop_back</classname></type>
- </typedef>
- <typedef name="_pop_front">
- <type><classname>proto::functional::pop_front</classname></type>
- </typedef>
- <typedef name="_push_back">
- <type><classname>proto::functional::push_back</classname></type>
- </typedef>
- <typedef name="_push_front">
- <type><classname>proto::functional::push_front</classname></type>
- </typedef>
- <typedef name="_reverse">
- <type><classname>proto::functional::reverse</classname></type>
- </typedef>
- <typedef name="_eval">
- <type><classname>proto::functional::eval</classname></type>
- </typedef>
- <typedef name="_deep_copy">
- <type><classname>proto::functional::deep_copy</classname></type>
- </typedef>
- <typedef name="_make_terminal">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::terminal</classname> ></type>
- </typedef>
- <typedef name="_make_unary_plus">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::unary_plus</classname> ></type>
- </typedef>
- <typedef name="_make_negate">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::negate</classname> ></type>
- </typedef>
- <typedef name="_make_dereference">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::dereference</classname> ></type>
- </typedef>
- <typedef name="_make_complement">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::complement</classname> ></type>
- </typedef>
- <typedef name="_make_address_of">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::address_of</classname> ></type>
- </typedef>
- <typedef name="_make_logical_not">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::logical_not</classname> ></type>
- </typedef>
- <typedef name="_make_pre_inc">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::pre_inc</classname> ></type>
- </typedef>
- <typedef name="_make_pre_dec">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::pre_dec</classname> ></type>
- </typedef>
- <typedef name="_make_post_inc">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::post_inc</classname> ></type>
- </typedef>
- <typedef name="_make_post_dec">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::post_dec</classname> ></type>
- </typedef>
- <typedef name="_make_shift_left">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::shift_left</classname> ></type>
- </typedef>
- <typedef name="_make_shift_right">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::shift_right</classname> ></type>
- </typedef>
- <typedef name="_make_multiplies">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::multiplies</classname> ></type>
- </typedef>
- <typedef name="_make_divides">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::divides</classname> ></type>
- </typedef>
- <typedef name="_make_modulus">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::modulus</classname> ></type>
- </typedef>
- <typedef name="_make_plus">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::plus</classname> ></type>
- </typedef>
- <typedef name="_make_minus">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::minus</classname> ></type>
- </typedef>
- <typedef name="_make_less">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::less</classname> ></type>
- </typedef>
- <typedef name="_make_greater">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::greater</classname> ></type>
- </typedef>
- <typedef name="_make_less_equal">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::less_equal</classname> ></type>
- </typedef>
- <typedef name="_make_greater_equal">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::greater_equal</classname> ></type>
- </typedef>
- <typedef name="_make_equal_to">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::equal_to</classname> ></type>
- </typedef>
- <typedef name="_make_not_equal_to">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::not_equal_to</classname> ></type>
- </typedef>
- <typedef name="_make_logical_or">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::logical_or</classname> ></type>
- </typedef>
- <typedef name="_make_logical_and">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::logical_and</classname> ></type>
- </typedef>
- <typedef name="_make_bitwise_and">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_and</classname> ></type>
- </typedef>
- <typedef name="_make_bitwise_or">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_or</classname> ></type>
- </typedef>
- <typedef name="_make_bitwise_xor">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_xor</classname> ></type>
- </typedef>
- <typedef name="_make_comma">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::comma</classname> ></type>
- </typedef>
- <typedef name="_make_mem_ptr">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::mem_ptr</classname> ></type>
- </typedef>
- <typedef name="_make_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::assign</classname> ></type>
- </typedef>
- <typedef name="_make_shift_left_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::shift_left_assign</classname> ></type>
- </typedef>
- <typedef name="_make_shift_right_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::shift_right_assign</classname> ></type>
- </typedef>
- <typedef name="_make_multiplies_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::multiplies_assign</classname> ></type>
- </typedef>
- <typedef name="_make_divides_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::divides_assign</classname> ></type>
- </typedef>
- <typedef name="_make_modulus_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::modulus_assign</classname> ></type>
- </typedef>
- <typedef name="_make_plus_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::plus_assign</classname> ></type>
- </typedef>
- <typedef name="_make_minus_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::minus_assign</classname> ></type>
- </typedef>
- <typedef name="_make_bitwise_and_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_and_assign</classname> ></type>
- </typedef>
- <typedef name="_make_bitwise_or_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_or_assign</classname> ></type>
- </typedef>
- <typedef name="_make_bitwise_xor_assign">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::bitwise_xor_assign</classname> ></type>
- </typedef>
- <typedef name="_make_subscript">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::subscript</classname> ></type>
- </typedef>
- <typedef name="_make_if_else">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::if_else_</classname> ></type>
- </typedef>
- <typedef name="_make_function">
- <type><classname>proto::functional::make_expr</classname>< <classname>proto::tag::function</classname> ></type>
- </typedef>
- <typedef name="_childN">
- <purpose>For each <replaceable>N</replaceable> in <computeroutput>[0,BOOST_PROTO_MAX_ARITY)</computeroutput></purpose>
- <type><classname>proto::_child_c</classname>< <replaceable>N</replaceable> ></type>
- </typedef>
- <typedef name="_child">
- <type><classname alt="proto::_childN">proto::_child0</classname></type>
- </typedef>
- <typedef name="_left">
- <type><classname alt="proto::_childN">proto::_child0</classname></type>
- </typedef>
- <typedef name="_right">
- <type><classname alt="proto::_childN">proto::_child1</classname></type>
- </typedef>
- </namespace>
- </namespace>
- <macro name="BOOST_PROTO_MAX_ARITY">
- <purpose>Controls the maximum number of child nodes an expression may have.</purpose>
- <description>
- <para>
- <computeroutput>BOOST_PROTO_MAX_ARITY</computeroutput> defaults to 10. It may be set higher or lower, but not
- lower than 3. Setting it higher will have a negative effect on compile times.
- </para>
- <para>
- See also <computeroutput><macroname>BOOST_PROTO_MAX_FUNCTION_CALL_ARITY</macroname></computeroutput>.
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_MAX_LOGICAL_ARITY">
- <purpose>Controls the maximum number of sub-grammars that
- <computeroutput>
- <classname alt="boost::proto::or_">proto::or_<></classname>
- </computeroutput> and
- <computeroutput>
- <classname alt="boost::proto::and_">proto::and_<></classname>
- </computeroutput> accept.</purpose>
- <description>
- <para>
- <computeroutput>BOOST_PROTO_MAX_LOGICAL_ARITY</computeroutput> defaults to 10. It may be set higher or lower. Setting
- it higher will have a negative effect on compile times.
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_MAX_FUNCTION_CALL_ARITY">
- <purpose>Controls the maximum number of arguments that <computeroutput>operator()</computeroutput> overloads
- accept.</purpose>
- <description>
- <para>
- When setting
- <computeroutput>
- <macroname>BOOST_PROTO_MAX_ARITY</macroname>
- </computeroutput> higher than the default, compile times
- slow down considerably. That is due in large part to the explosion in the number of
- <computeroutput>operator()</computeroutput> overloads that must be generated for each
- Proto expression type. By setting <computeroutput>BOOST_PROTO_MAX_FUNCTION_CALL_ARITY</computeroutput>
- lower than <computeroutput><macroname>BOOST_PROTO_MAX_ARITY</macroname></computeroutput>,
- compile times can be sped up considerably.
- </para>
- </description>
- </macro>
- </header>
|