Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r66836 - in trunk: boost/proto boost/proto/transform libs/proto/doc libs/proto/doc/reference libs/proto/doc/reference/functional libs/proto/doc/reference/functional/fusion libs/proto/doc/reference/functional/std libs/proto/test
From: eric_at_[hidden]
Date: 2010-11-28 22:58:19


Author: eric_niebler
Date: 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
New Revision: 66836
URL: http://svn.boost.org/trac/boost/changeset/66836

Log:
pop_front and reverse are not in core, add docs for new callables
Added:
   trunk/libs/proto/doc/reference/functional/
   trunk/libs/proto/doc/reference/functional.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/fusion/
   trunk/libs/proto/doc/reference/functional/fusion.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/fusion/pop_back.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/fusion/pop_front.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/fusion/push_back.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/fusion/push_front.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/fusion/reverse.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/std/
   trunk/libs/proto/doc/reference/functional/std.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/std/utility.xml (contents, props changed)
Text files modified:
   trunk/boost/proto/fusion.hpp | 1
   trunk/boost/proto/proto_fwd.hpp | 12 +++
   trunk/boost/proto/transform/fold.hpp | 1
   trunk/libs/proto/doc/reference.xml | 39 +++++++++++
   trunk/libs/proto/doc/reference/fusion.xml | 138 ----------------------------------------
   trunk/libs/proto/doc/reference/proto_fwd.xml | 18 +++++
   trunk/libs/proto/test/examples.cpp | 1
   7 files changed, 71 insertions(+), 139 deletions(-)

Modified: trunk/boost/proto/fusion.hpp
==============================================================================
--- trunk/boost/proto/fusion.hpp (original)
+++ trunk/boost/proto/fusion.hpp 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -27,7 +27,6 @@
 #include <boost/proto/proto_fwd.hpp>
 #include <boost/proto/traits.hpp>
 #include <boost/proto/eval.hpp>
-#include <boost/proto/functional/fusion.hpp>
 
 #if BOOST_MSVC
 #pragma warning(push)

Modified: trunk/boost/proto/proto_fwd.hpp
==============================================================================
--- trunk/boost/proto/proto_fwd.hpp (original)
+++ trunk/boost/proto/proto_fwd.hpp 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -572,12 +572,24 @@
         typedef make_expr<tag::function> make_function;
 
         struct flatten;
+ struct make_pair;
+ struct first;
+ struct second;
         struct pop_front;
+ struct push_front;
+ struct pop_back;
+ struct push_back;
         struct reverse;
     }
 
     typedef functional::flatten _flatten;
+ typedef functional::make_pair _make_pair;
+ typedef functional::first _first;
+ typedef functional::second _second;
     typedef functional::pop_front _pop_front;
+ typedef functional::push_front _push_front;
+ typedef functional::pop_back _pop_back;
+ typedef functional::push_back _push_back;
     typedef functional::reverse _reverse;
     typedef functional::eval _eval;
     struct _deep_copy;

Modified: trunk/boost/proto/transform/fold.hpp
==============================================================================
--- trunk/boost/proto/transform/fold.hpp (original)
+++ trunk/boost/proto/transform/fold.hpp 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -18,6 +18,7 @@
     #include <boost/fusion/include/fold.hpp>
     #include <boost/proto/proto_fwd.hpp>
     #include <boost/proto/fusion.hpp>
+ #include <boost/proto/functional/fusion/reverse.hpp>
     #include <boost/proto/traits.hpp>
     #include <boost/proto/transform/call.hpp>
     #include <boost/proto/transform/impl.hpp>

Modified: trunk/libs/proto/doc/reference.xml
==============================================================================
--- trunk/libs/proto/doc/reference.xml (original)
+++ trunk/libs/proto/doc/reference.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -317,6 +317,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::first">proto::functional::first</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::flatten">proto::functional::flatten</classname>
         </computeroutput>
       </listitem>
@@ -332,11 +337,31 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::make_pair">proto::functional::make_pair</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
+ <classname alt="boost::proto::functional::pop_back">proto::functional::pop_back</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::pop_front">proto::functional::pop_front</classname>
         </computeroutput>
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::push_back">proto::functional::push_back</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
+ <classname alt="boost::proto::functional::push_front">proto::functional::push_front</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::reverse">proto::functional::reverse</classname>
         </computeroutput>
       </listitem>
@@ -347,6 +372,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::second">proto::functional::second</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::unpack_expr">proto::functional::unpack_expr</classname>
         </computeroutput>
       </listitem>
@@ -1068,6 +1098,15 @@
   <xi:include href="reference/eval.xml"/>
   <xi:include href="reference/expr.xml"/>
   <xi:include href="reference/extends.xml"/>
+ <xi:include href="reference/functional.xml"/>
+ <xi:include href="reference/functional/fusion.xml"/>
+ <xi:include href="reference/functional/fusion/pop_back.xml"/>
+ <xi:include href="reference/functional/fusion/pop_front.xml"/>
+ <xi:include href="reference/functional/fusion/push_back.xml"/>
+ <xi:include href="reference/functional/fusion/push_front.xml"/>
+ <xi:include href="reference/functional/fusion/reverse.xml"/>
+ <xi:include href="reference/functional/std.xml"/>
+ <xi:include href="reference/functional/std/utility.xml"/>
   <xi:include href="reference/fusion.xml"/>
   <xi:include href="reference/generate.xml"/>
   <xi:include href="reference/literal.xml"/>

Added: trunk/libs/proto/doc/reference/functional.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<header name="boost/proto/functional.hpp">
+ <para>Includes all the functional extensions of Proto.</para>
+</header>

Added: trunk/libs/proto/doc/reference/functional/fusion.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/fusion.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<header name="boost/proto/functional/fusion.hpp">
+ <para>Includes all the functional extensions to Proto for the Boost.Fusion library.</para>
+</header>

Added: trunk/libs/proto/doc/reference/functional/fusion/pop_back.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/fusion/pop_back.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<header name="boost/proto/functional/fusion/pop_back.hpp">
+ <para>Includes Proto callable <computeroutput><classname>boost::proto::functional::pop_back</classname></computeroutput>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::pop_back -->
+ <struct name="pop_back">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::pop_back()</computeroutput> algorithm on its argument.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::pop_back()</computeroutput> algorithm on its argument.
+ </para>
+ </description>
+ <inherit>
+ <type><classname>proto::callable</classname></type>
+ </inherit>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <specialization>
+ <template-arg>This(Seq)</template-arg>
+ </specialization>
+ <inherit>
+ <type>result&lt; This(Seq const &amp;) &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <specialization>
+ <template-arg>This(Seq &amp;)</template-arg>
+ </specialization>
+ <inherit>
+ <type>fusion::result_of::pop_back&lt; Seq &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::pop_back&lt; Seq &gt;::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>fusion::pop_back(seq)</computeroutput></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::pop_back&lt; Seq const &gt;::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>fusion::pop_back(seq)</computeroutput></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/fusion/pop_front.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/fusion/pop_front.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<header name="boost/proto/functional/fusion/pop_front.hpp">
+ <para>Includes Proto callable <computeroutput><classname>boost::proto::functional::pop_front</classname></computeroutput>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::pop_front -->
+ <struct name="pop_front">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::pop_front()</computeroutput> algorithm on its argument.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::pop_front()</computeroutput> algorithm on its argument. This is
+ useful for defining a <conceptname>CallableTransform</conceptname> such as
+ <computeroutput>pop_front(_)</computeroutput>, which removes the first child from a Proto
+ expression node. Such a transform might be used as the first argument to the
+ <computeroutput><classname alt="proto::fold">proto::fold&lt;&gt;</classname></computeroutput>
+ transform; that is, fold all but the first child.
+ </para>
+ </description>
+ <inherit>
+ <type><classname>proto::callable</classname></type>
+ </inherit>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <specialization>
+ <template-arg>This(Seq)</template-arg>
+ </specialization>
+ <inherit>
+ <type>result&lt; This(Seq const &amp;) &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <specialization>
+ <template-arg>This(Seq &amp;)</template-arg>
+ </specialization>
+ <inherit>
+ <type>fusion::result_of::pop_front&lt; Seq &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::pop_front&lt; Seq &gt;::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>fusion::pop_front(seq)</computeroutput></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::pop_front&lt; Seq const &gt;::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>fusion::pop_front(seq)</computeroutput></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/fusion/push_back.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/fusion/push_back.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<header name="boost/proto/functional/fusion/push_back.hpp">
+ <para>Includes Proto callable <computeroutput><classname>boost::proto::functional::push_back</classname></computeroutput>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::push_back -->
+ <struct name="push_back">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::push_back()</computeroutput> algorithm on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::push_back()</computeroutput> algorithm on its arguments.</para>
+ </description>
+ <inherit>
+ <type><classname>proto::callable</classname></type>
+ </inherit>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Seq"/>
+ <template-type-parameter name="T"/>
+ </template>
+ <specialization>
+ <template-arg>This(Seq, T)</template-arg>
+ </specialization>
+ <inherit>
+ <type>fusion::result_of::push_back&lt;
+ typename boost::add_const&lt;typename boost::remove_reference&lt;Seq&gt;::type&gt;::type
+ , typename boost::remove_const&lt;typename boost::remove_reference&lt;T&gt;::type&gt;::type
+ &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::push_back&lt; Seq const, T &gt;::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ <template-type-parameter name="T"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &amp;</paramtype>
+ </parameter>
+ <parameter name="t">
+ <paramtype>T const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>fusion::push_back(seq, t)</computeroutput></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/fusion/push_front.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/fusion/push_front.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<header name="boost/proto/functional/fusion/push_front.hpp">
+ <para>Includes Proto callable <computeroutput><classname>boost::proto::functional::push_front</classname></computeroutput>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::push_front -->
+ <struct name="push_front">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::push_front()</computeroutput> algorithm on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::push_front()</computeroutput> algorithm on its arguments.</para>
+ </description>
+ <inherit>
+ <type><classname>proto::callable</classname></type>
+ </inherit>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Seq"/>
+ <template-type-parameter name="T"/>
+ </template>
+ <specialization>
+ <template-arg>This(Seq, T)</template-arg>
+ </specialization>
+ <inherit>
+ <type>fusion::result_of::push_front&lt;
+ typename boost::add_const&lt;typename boost::remove_reference&lt;Seq&gt;::type&gt;::type
+ , typename boost::remove_const&lt;typename boost::remove_reference&lt;T&gt;::type&gt;::type
+ &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::push_front&lt; Seq const, T &gt;::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ <template-type-parameter name="T"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &amp;</paramtype>
+ </parameter>
+ <parameter name="t">
+ <paramtype>T const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>fusion::push_front(seq, t)</computeroutput></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/fusion/reverse.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/fusion/reverse.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<header name="boost/proto/functional/fusion/reverse.hpp">
+ <para>Includes Proto callable <computeroutput><classname>boost::proto::functional::reverse</classname></computeroutput>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::reverse -->
+ <struct name="reverse">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::reverse()</computeroutput> algorithm on its argument.
+ </purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <computeroutput>fusion::reverse()</computeroutput> algorithm on its argument. This is
+ useful for defining a <conceptname>CallableTransform</conceptname> like
+ <computeroutput>reverse(_)</computeroutput>, which reverses the order of the children
+ of a Proto expression node.
+ </para>
+ </description>
+ <inherit>
+ <type><classname>proto::callable</classname></type>
+ </inherit>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <specialization>
+ <template-arg>This(Seq)</template-arg>
+ </specialization>
+ <inherit>
+ <type>result&lt; This(Seq const &amp;) &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <specialization>
+ <template-arg>This(Seq &amp;)</template-arg>
+ </specialization>
+ <inherit>
+ <type>fusion::result_of::reverse&lt; Seq &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::reverse&lt; Seq &gt;::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>fusion::reverse(seq)</computeroutput></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::reverse&lt; Seq const &gt;::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>fusion::reverse(seq)</computeroutput></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/std.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/std.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<header name="boost/proto/functional/std.hpp">
+ <para>Includes all the functional extensions to Proto for the standard library.</para>
+</header>

Added: trunk/libs/proto/doc/reference/functional/std/utility.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/std/utility.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="utf-8"?>
+<header name="boost/proto/functional/utility.hpp">
+ <para>Defines Proto callables <computeroutput><classname>boost::proto::functional::make_pair</classname></computeroutput>,
+ <computeroutput><classname>boost::proto::functional::first</classname></computeroutput> and
+ <computeroutput><classname>boost::proto::functional::second</classname></computeroutput>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::make_pair -->
+ <struct name="make_pair">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes
+ <computeroutput>std::make_pair()</computeroutput> on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes
+ <computeroutput>std::make_pair()</computeroutput> on its arguments.</para>
+ </description>
+ <inherit>
+ <type><classname>proto::callable</classname></type>
+ </inherit>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="First"/>
+ <template-type-parameter name="Second"/>
+ </template>
+ <specialization>
+ <template-arg>This(First, Second)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>std::pair&lt;
+ typename boost::remove_const&lt;typename boost::remove_reference&lt;First&gt;::type&gt;::type
+ , typename boost::remove_const&lt;typename boost::remove_reference&lt;Second&gt;::type&gt;::type
+ &gt;</type>
+ </typedef>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename std::pair&lt; First, Second &gt;</type>
+ <template>
+ <template-type-parameter name="First"/>
+ <template-type-parameter name="Second"/>
+ </template>
+ <parameter name="first">
+ <paramtype>First const &amp;</paramtype>
+ </parameter>
+ <parameter name="second">
+ <paramtype>Second const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>std::make_pair(first, second)</computeroutput></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ <!-- proto::functional::first -->
+ <struct name="first">
+ <purpose>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that returns
+ the first element of a <computeroutput>std::pair&lt;&gt;</computeroutput>.
+ </purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that returns
+ the first element of a <computeroutput>std::pair&lt;&gt;</computeroutput>.</para>
+ </description>
+ <inherit><type><classname>proto::callable</classname></type>
+ </inherit>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <specialization>
+ <template-arg>This(Pair)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename Pair::first_type</type>
+ </typedef>
+ </struct-specialization>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <specialization>
+ <template-arg>This(Pair &amp;)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename Pair::first_type &amp;</type>
+ </typedef>
+ </struct-specialization>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <specialization>
+ <template-arg>This(Pair const &amp;)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename Pair::first_type const &amp;</type>
+ </typedef>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename Pair::first_type &amp;</type>
+ <template>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <parameter name="pair">
+ <paramtype>Pair &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para>
+ <computeroutput>pair.first</computeroutput>
+ </para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename Pair::first_type const &amp;</type>
+ <template>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <parameter name="pair">
+ <paramtype>Pair const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para>
+ <computeroutput>pair.first</computeroutput>
+ </para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ <!-- proto::functional::second -->
+ <struct name="second">
+ <purpose>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that returns
+ the second element of a <computeroutput>std::pair&lt;&gt;</computeroutput>.
+ </purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that returns
+ the second element of a <computeroutput>std::pair&lt;&gt;</computeroutput>.
+ </para>
+ </description>
+ <inherit><type><classname>proto::callable</classname></type></inherit>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <specialization>
+ <template-arg>This(Pair)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename Pair::second_type</type>
+ </typedef>
+ </struct-specialization>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <specialization>
+ <template-arg>This(Pair &amp;)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename Pair::second_type &amp;</type>
+ </typedef>
+ </struct-specialization>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <specialization>
+ <template-arg>This(Pair const &amp;)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename Pair::second_type const &amp;</type>
+ </typedef>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename Pair::second_type &amp;</type>
+ <template>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <parameter name="pair">
+ <paramtype>Pair &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para>
+ <computeroutput>pair.second</computeroutput>
+ </para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename Pair::second_type const &amp;</type>
+ <template>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <parameter name="pair">
+ <paramtype>Pair const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para>
+ <computeroutput>pair.second</computeroutput>
+ </para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+
+</header>

Modified: trunk/libs/proto/doc/reference/fusion.xml
==============================================================================
--- trunk/libs/proto/doc/reference/fusion.xml (original)
+++ trunk/libs/proto/doc/reference/fusion.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -69,144 +69,6 @@
           </method-group>
         </struct>
 
- <!-- proto::functional::pop_front -->
- <struct name="pop_front">
- <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
- <computeroutput>fusion::pop_front()</computeroutput> algorithm on its argument.</purpose>
- <description>
- <para>
- A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
- <computeroutput>fusion::pop_front()</computeroutput> algorithm on its argument. This is
- useful for defining a <conceptname>CallableTransform</conceptname> such as
- <computeroutput>pop_front(_)</computeroutput>, which removes the first child from a Proto
- expression node. Such a transform might be used as the first argument to the
- <computeroutput><classname alt="proto::fold">proto::fold&lt;&gt;</classname></computeroutput>
- transform; that is, fold all but the first child.
- </para>
- </description>
- <inherit>
- <type><classname>proto::callable</classname></type>
- </inherit>
- <struct-specialization name="result">
- <template>
- <template-type-parameter name="This"/>
- <template-type-parameter name="Expr"/>
- </template>
- <specialization>
- <template-arg>This(Expr)</template-arg>
- </specialization>
- <inherit>
- <type>result&lt; This(Expr const &amp;) &gt;</type>
- </inherit>
- </struct-specialization>
- <struct-specialization name="result">
- <template>
- <template-type-parameter name="This"/>
- <template-type-parameter name="Expr"/>
- </template>
- <specialization>
- <template-arg>This(Expr &amp;)</template-arg>
- </specialization>
- <inherit>
- <type>fusion::result_of::pop_front&lt; Expr &gt;</type>
- </inherit>
- </struct-specialization>
- <method-group name="public member functions">
- <method name="operator()" cv="const">
- <type>typename fusion::result_of::pop_front&lt; Expr &gt;::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr &amp;</paramtype>
- </parameter>
- <returns>
- <para><computeroutput>fusion::pop_front(expr)</computeroutput></para>
- </returns>
- </method>
- <method name="operator()" cv="const">
- <type>typename fusion::result_of::pop_front&lt; Expr const &gt;::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr const &amp;</paramtype>
- </parameter>
- <returns>
- <para><computeroutput>fusion::pop_front(expr)</computeroutput></para>
- </returns>
- </method>
- </method-group>
- </struct>
-
- <!-- proto::functional::reverse -->
- <struct name="reverse">
- <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
- <computeroutput>fusion::reverse()</computeroutput> algorithm on its argument.
- </purpose>
- <description>
- <para>
- A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
- <computeroutput>fusion::reverse()</computeroutput> algorithm on its argument. This is
- useful for defining a <conceptname>CallableTransform</conceptname> like
- <computeroutput>reverse(_)</computeroutput>, which reverses the order of the children
- of a Proto expression node.
- </para>
- </description>
- <inherit>
- <type><classname>proto::callable</classname></type>
- </inherit>
- <struct-specialization name="result">
- <template>
- <template-type-parameter name="This"/>
- <template-type-parameter name="Expr"/>
- </template>
- <specialization>
- <template-arg>This(Expr)</template-arg>
- </specialization>
- <inherit>
- <type>result&lt; This(Expr const &amp;) &gt;</type>
- </inherit>
- </struct-specialization>
- <struct-specialization name="result">
- <template>
- <template-type-parameter name="This"/>
- <template-type-parameter name="Expr"/>
- </template>
- <specialization>
- <template-arg>This(Expr &amp;)</template-arg>
- </specialization>
- <inherit>
- <type>fusion::result_of::reverse&lt; Expr &gt;</type>
- </inherit>
- </struct-specialization>
- <method-group name="public member functions">
- <method name="operator()" cv="const">
- <type>typename fusion::result_of::reverse&lt; Expr &gt;::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr &amp;</paramtype>
- </parameter>
- <returns>
- <para><computeroutput>fusion::reverse(expr)</computeroutput></para>
- </returns>
- </method>
- <method name="operator()" cv="const">
- <type>typename fusion::result_of::reverse&lt; Expr const &gt;::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr const &amp;</paramtype>
- </parameter>
- <returns>
- <para><computeroutput>fusion::reverse(expr)</computeroutput></para>
- </returns>
- </method>
- </method-group>
- </struct>
       </namespace>
       
       <namespace name="result_of">

Modified: trunk/libs/proto/doc/reference/proto_fwd.xml
==============================================================================
--- trunk/libs/proto/doc/reference/proto_fwd.xml (original)
+++ trunk/libs/proto/doc/reference/proto_fwd.xml 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -163,9 +163,27 @@
       <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>

Modified: trunk/libs/proto/test/examples.cpp
==============================================================================
--- trunk/libs/proto/test/examples.cpp (original)
+++ trunk/libs/proto/test/examples.cpp 2010-11-28 22:58:02 EST (Sun, 28 Nov 2010)
@@ -10,6 +10,7 @@
 #include <boost/mpl/min_max.hpp>
 #include <boost/proto/core.hpp>
 #include <boost/proto/transform.hpp>
+#include <boost/proto/functional/fusion.hpp>
 #include <boost/utility/result_of.hpp>
 #include <boost/fusion/include/cons.hpp>
 #include <boost/fusion/include/tuple.hpp>


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk