|
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< This(Seq const &) ></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 &)</template-arg>
+ </specialization>
+ <inherit>
+ <type>fusion::result_of::pop_back< Seq ></type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::pop_back< Seq >::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq &</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< Seq const >::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &</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<></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< This(Seq const &) ></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 &)</template-arg>
+ </specialization>
+ <inherit>
+ <type>fusion::result_of::pop_front< Seq ></type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::pop_front< Seq >::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq &</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< Seq const >::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &</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<
+ typename boost::add_const<typename boost::remove_reference<Seq>::type>::type
+ , typename boost::remove_const<typename boost::remove_reference<T>::type>::type
+ ></type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::push_back< Seq const, T >::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ <template-type-parameter name="T"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &</paramtype>
+ </parameter>
+ <parameter name="t">
+ <paramtype>T const &</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<
+ typename boost::add_const<typename boost::remove_reference<Seq>::type>::type
+ , typename boost::remove_const<typename boost::remove_reference<T>::type>::type
+ ></type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::push_front< Seq const, T >::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ <template-type-parameter name="T"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &</paramtype>
+ </parameter>
+ <parameter name="t">
+ <paramtype>T const &</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< This(Seq const &) ></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 &)</template-arg>
+ </specialization>
+ <inherit>
+ <type>fusion::result_of::reverse< Seq ></type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::reverse< Seq >::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq &</paramtype>
+ </parameter>
+ <returns>
+ <para><computeroutput>fusion::reverse(seq)</computeroutput></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename fusion::result_of::reverse< Seq const >::type</type>
+ <template>
+ <template-type-parameter name="Seq"/>
+ </template>
+ <parameter name="seq">
+ <paramtype>Seq const &</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<
+ typename boost::remove_const<typename boost::remove_reference<First>::type>::type
+ , typename boost::remove_const<typename boost::remove_reference<Second>::type>::type
+ ></type>
+ </typedef>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename std::pair< First, Second ></type>
+ <template>
+ <template-type-parameter name="First"/>
+ <template-type-parameter name="Second"/>
+ </template>
+ <parameter name="first">
+ <paramtype>First const &</paramtype>
+ </parameter>
+ <parameter name="second">
+ <paramtype>Second const &</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<></computeroutput>.
+ </purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that returns
+ the first element of a <computeroutput>std::pair<></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 &)</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 const &)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename Pair::first_type const &</type>
+ </typedef>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename Pair::first_type &</type>
+ <template>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <parameter name="pair">
+ <paramtype>Pair &</paramtype>
+ </parameter>
+ <returns>
+ <para>
+ <computeroutput>pair.first</computeroutput>
+ </para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename Pair::first_type const &</type>
+ <template>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <parameter name="pair">
+ <paramtype>Pair const &</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<></computeroutput>.
+ </purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that returns
+ the second element of a <computeroutput>std::pair<></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 &)</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 const &)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename Pair::second_type const &</type>
+ </typedef>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename Pair::second_type &</type>
+ <template>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <parameter name="pair">
+ <paramtype>Pair &</paramtype>
+ </parameter>
+ <returns>
+ <para>
+ <computeroutput>pair.second</computeroutput>
+ </para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename Pair::second_type const &</type>
+ <template>
+ <template-type-parameter name="Pair"/>
+ </template>
+ <parameter name="pair">
+ <paramtype>Pair const &</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<></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< This(Expr const &) ></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 &)</template-arg>
- </specialization>
- <inherit>
- <type>fusion::result_of::pop_front< Expr ></type>
- </inherit>
- </struct-specialization>
- <method-group name="public member functions">
- <method name="operator()" cv="const">
- <type>typename fusion::result_of::pop_front< Expr >::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr &</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< Expr const >::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr const &</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< This(Expr const &) ></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 &)</template-arg>
- </specialization>
- <inherit>
- <type>fusion::result_of::reverse< Expr ></type>
- </inherit>
- </struct-specialization>
- <method-group name="public member functions">
- <method name="operator()" cv="const">
- <type>typename fusion::result_of::reverse< Expr >::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr &</paramtype>
- </parameter>
- <returns>
- <para><computeroutput>fusion::reverse(expr)</computeroutput></para>
- </returns>
- </method>
- <method name="operator()" cv="const">
- <type>typename fusion::result_of::reverse< Expr const >::type</type>
- <template>
- <template-type-parameter name="Expr"/>
- </template>
- <parameter name="expr">
- <paramtype>Expr const &</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