Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r80266 - in trunk: boost/proto boost/proto/functional boost/proto/functional/range boost/proto/functional/std libs/proto/doc libs/proto/doc/reference/functional libs/proto/doc/reference/functional/range libs/proto/doc/reference/functional/std
From: eric_at_[hidden]
Date: 2012-08-27 17:46:12


Author: eric_niebler
Date: 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
New Revision: 80266
URL: http://svn.boost.org/trac/boost/changeset/80266

Log:
add function objects for <iterator> and some boost.range functions
Added:
   trunk/boost/proto/functional/range/
   trunk/boost/proto/functional/range.hpp (contents, props changed)
   trunk/boost/proto/functional/range/begin.hpp (contents, props changed)
   trunk/boost/proto/functional/range/empty.hpp (contents, props changed)
   trunk/boost/proto/functional/range/end.hpp (contents, props changed)
   trunk/boost/proto/functional/range/rbegin.hpp (contents, props changed)
   trunk/boost/proto/functional/range/rend.hpp (contents, props changed)
   trunk/boost/proto/functional/range/size.hpp (contents, props changed)
   trunk/boost/proto/functional/std/iterator.hpp (contents, props changed)
   trunk/libs/proto/doc/reference/functional/range/
   trunk/libs/proto/doc/reference/functional/range.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/range/begin.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/range/empty.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/range/end.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/range/rbegin.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/range/rend.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/range/size.xml (contents, props changed)
   trunk/libs/proto/doc/reference/functional/std/iterator.xml (contents, props changed)
Text files modified:
   trunk/boost/proto/functional.hpp | 1
   trunk/boost/proto/functional/std.hpp | 1
   trunk/libs/proto/doc/reference.xml | 57 ++++++++++++++++++++++++++++++++++++++++
   3 files changed, 59 insertions(+), 0 deletions(-)

Modified: trunk/boost/proto/functional.hpp
==============================================================================
--- trunk/boost/proto/functional.hpp (original)
+++ trunk/boost/proto/functional.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -11,5 +11,6 @@
 
 #include <boost/proto/functional/std.hpp>
 #include <boost/proto/functional/fusion.hpp>
+#include <boost/proto/functional/range.hpp>
 
 #endif

Added: trunk/boost/proto/functional/range.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/proto/functional/range.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,19 @@
+///////////////////////////////////////////////////////////////////////////////
+/// \file range.hpp
+/// Proto callables for things found in the boost range library
+//
+// 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)
+
+#ifndef BOOST_PROTO_FUNCTIONAL_RANGE_HPP_EAN_27_08_2012
+#define BOOST_PROTO_FUNCTIONAL_RANGE_HPP_EAN_27_08_2012
+
+#include <boost/proto/functional/range/begin.hpp>
+#include <boost/proto/functional/range/empty.hpp>
+#include <boost/proto/functional/range/end.hpp>
+#include <boost/proto/functional/range/rbegin.hpp>
+#include <boost/proto/functional/range/rend.hpp>
+#include <boost/proto/functional/range/size.hpp>
+
+#endif

Added: trunk/boost/proto/functional/range/begin.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/proto/functional/range/begin.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,51 @@
+///////////////////////////////////////////////////////////////////////////////
+/// \file begin.hpp
+/// Proto callables for boost::begin()
+//
+// 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)
+
+#ifndef BOOST_PROTO_FUNCTIONAL_RANGE_BEGIN_HPP_EAN_27_08_2012
+#define BOOST_PROTO_FUNCTIONAL_RANGE_BEGIN_HPP_EAN_27_08_2012
+
+#include <boost/range/begin.hpp>
+#include <boost/proto/proto_fwd.hpp>
+
+namespace boost { namespace proto { namespace functional
+{
+
+ // A PolymorphicFunctionObject that wraps boost::begin()
+ struct begin
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template<typename Sig>
+ struct result;
+
+ template<typename This, typename Rng>
+ struct result<This(Rng)>
+ : boost::range_iterator<Rng>
+ {};
+
+ template<typename This, typename Rng>
+ struct result<This(Rng &)>
+ : boost::range_iterator<Rng>
+ {};
+
+ template<typename Rng>
+ typename boost::range_iterator<Rng>::type operator()(Rng &rng) const
+ {
+ return boost::begin(rng);
+ }
+
+ template<typename Rng>
+ typename boost::range_iterator<Rng const>::type operator()(Rng const &rng) const
+ {
+ return boost::begin(rng);
+ }
+ };
+
+}}}
+
+#endif

Added: trunk/boost/proto/functional/range/empty.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/proto/functional/range/empty.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,34 @@
+///////////////////////////////////////////////////////////////////////////////
+/// \file empty.hpp
+/// Proto callables for boost::empty()
+//
+// 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)
+
+#ifndef BOOST_PROTO_FUNCTIONAL_RANGE_EMPTY_HPP_EAN_27_08_2012
+#define BOOST_PROTO_FUNCTIONAL_RANGE_EMPTY_HPP_EAN_27_08_2012
+
+#include <boost/range/empty.hpp>
+#include <boost/proto/proto_fwd.hpp>
+
+namespace boost { namespace proto { namespace functional
+{
+
+ // A PolymorphicFunctionObject that wraps boost::empty()
+ struct empty
+ {
+ BOOST_PROTO_CALLABLE()
+
+ typedef bool result_type;
+
+ template<typename Rng>
+ bool operator()(Rng const &rng) const
+ {
+ return boost::empty(rng);
+ }
+ };
+
+}}}
+
+#endif

Added: trunk/boost/proto/functional/range/end.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/proto/functional/range/end.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,51 @@
+///////////////////////////////////////////////////////////////////////////////
+/// \file end.hpp
+/// Proto callables for boost::end()
+//
+// 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)
+
+#ifndef BOOST_PROTO_FUNCTIONAL_RANGE_END_HPP_EAN_27_08_2012
+#define BOOST_PROTO_FUNCTIONAL_RANGE_END_HPP_EAN_27_08_2012
+
+#include <boost/range/end.hpp>
+#include <boost/proto/proto_fwd.hpp>
+
+namespace boost { namespace proto { namespace functional
+{
+
+ // A PolymorphicFunctionObject that wraps boost::end()
+ struct end
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template<typename Sig>
+ struct result;
+
+ template<typename This, typename Rng>
+ struct result<This(Rng)>
+ : boost::range_iterator<Rng>
+ {};
+
+ template<typename This, typename Rng>
+ struct result<This(Rng &)>
+ : boost::range_iterator<Rng>
+ {};
+
+ template<typename Rng>
+ typename boost::range_iterator<Rng>::type operator()(Rng &rng) const
+ {
+ return boost::end(rng);
+ }
+
+ template<typename Rng>
+ typename boost::range_iterator<Rng const>::type operator()(Rng const &rng) const
+ {
+ return boost::end(rng);
+ }
+ };
+
+}}}
+
+#endif

Added: trunk/boost/proto/functional/range/rbegin.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/proto/functional/range/rbegin.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,51 @@
+///////////////////////////////////////////////////////////////////////////////
+/// \file rbegin.hpp
+/// Proto callables for boost::rbegin()
+//
+// 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)
+
+#ifndef BOOST_PROTO_FUNCTIONAL_RANGE_RBEGIN_HPP_EAN_27_08_2012
+#define BOOST_PROTO_FUNCTIONAL_RANGE_RBEGIN_HPP_EAN_27_08_2012
+
+#include <boost/range/rbegin.hpp>
+#include <boost/proto/proto_fwd.hpp>
+
+namespace boost { namespace proto { namespace functional
+{
+
+ // A PolymorphicFunctionObject that wraps boost::rbegin()
+ struct rbegin
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template<typename Sig>
+ struct result;
+
+ template<typename This, typename Rng>
+ struct result<This(Rng)>
+ : boost::range_reverse_iterator<Rng>
+ {};
+
+ template<typename This, typename Rng>
+ struct result<This(Rng &)>
+ : boost::range_reverse_iterator<Rng>
+ {};
+
+ template<typename Rng>
+ typename boost::range_reverse_iterator<Rng>::type operator()(Rng &rng) const
+ {
+ return boost::rbegin(rng);
+ }
+
+ template<typename Rng>
+ typename boost::range_reverse_iterator<Rng const>::type operator()(Rng const &rng) const
+ {
+ return boost::rbegin(rng);
+ }
+ };
+
+}}}
+
+#endif

Added: trunk/boost/proto/functional/range/rend.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/proto/functional/range/rend.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,51 @@
+///////////////////////////////////////////////////////////////////////////////
+/// \file rend.hpp
+/// Proto callables for boost::rend()
+//
+// 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)
+
+#ifndef BOOST_PROTO_FUNCTIONAL_RANGE_REND_HPP_EAN_27_08_2012
+#define BOOST_PROTO_FUNCTIONAL_RANGE_REND_HPP_EAN_27_08_2012
+
+#include <boost/range/rend.hpp>
+#include <boost/proto/proto_fwd.hpp>
+
+namespace boost { namespace proto { namespace functional
+{
+
+ // A PolymorphicFunctionObject that wraps boost::rend()
+ struct rend
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template<typename Sig>
+ struct result;
+
+ template<typename This, typename Rng>
+ struct result<This(Rng)>
+ : boost::range_iterator<Rng>
+ {};
+
+ template<typename This, typename Rng>
+ struct result<This(Rng &)>
+ : boost::range_iterator<Rng>
+ {};
+
+ template<typename Rng>
+ typename boost::range_iterator<Rng>::type operator()(Rng &rng) const
+ {
+ return boost::rend(rng);
+ }
+
+ template<typename Rng>
+ typename boost::range_iterator<Rng const>::type operator()(Rng const &rng) const
+ {
+ return boost::rend(rng);
+ }
+ };
+
+}}}
+
+#endif

Added: trunk/boost/proto/functional/range/size.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/proto/functional/range/size.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,45 @@
+///////////////////////////////////////////////////////////////////////////////
+/// \file size.hpp
+/// Proto callables for boost::size()
+//
+// 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)
+
+#ifndef BOOST_PROTO_FUNCTIONAL_RANGE_SIZE_HPP_EAN_27_08_2012
+#define BOOST_PROTO_FUNCTIONAL_RANGE_SIZE_HPP_EAN_27_08_2012
+
+#include <boost/range/size.hpp>
+#include <boost/proto/proto_fwd.hpp>
+
+namespace boost { namespace proto { namespace functional
+{
+
+ // A PolymorphicFunctionObject that wraps boost::size()
+ struct size
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template<typename Sig>
+ struct result;
+
+ template<typename This, typename Rng>
+ struct result<This(Rng)>
+ : boost::range_size<Rng>
+ {};
+
+ template<typename This, typename Rng>
+ struct result<This(Rng &)>
+ : boost::range_size<Rng>
+ {};
+
+ template<typename Rng>
+ typename boost::range_size<Rng>::type operator()(Rng const &rng) const
+ {
+ return boost::size(rng);
+ }
+ };
+
+}}}
+
+#endif

Modified: trunk/boost/proto/functional/std.hpp
==============================================================================
--- trunk/boost/proto/functional/std.hpp (original)
+++ trunk/boost/proto/functional/std.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -10,5 +10,6 @@
 #define BOOST_PROTO_FUNCTIONAL_STD_HPP_EAN_11_27_2010
 
 #include <boost/proto/functional/std/utility.hpp>
+#include <boost/proto/functional/std/iterator.hpp>
 
 #endif

Added: trunk/boost/proto/functional/std/iterator.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/proto/functional/std/iterator.hpp 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,158 @@
+///////////////////////////////////////////////////////////////////////////////
+/// \file iterator.hpp
+/// Proto callables for std functions found in \<iterator\>
+//
+// 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)
+
+#ifndef BOOST_PROTO_FUNCTIONAL_STD_ITERATOR_HPP_EAN_27_08_2012
+#define BOOST_PROTO_FUNCTIONAL_STD_ITERATOR_HPP_EAN_27_08_2012
+
+#include <iterator>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/proto/proto_fwd.hpp>
+
+namespace boost { namespace proto { namespace functional
+{
+
+ // A PolymorphicFunctionObject wrapping std::advance
+ struct advance
+ {
+ BOOST_PROTO_CALLABLE()
+
+ typedef void result_type;
+
+ template<typename InputIterator, typename Distance>
+ void operator()(InputIterator &x, Distance n) const
+ {
+ std::advance(x, n);
+ }
+ };
+
+ // A PolymorphicFunctionObject wrapping std::distance
+ struct distance
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template<typename Sig>
+ struct result;
+
+ template<typename This, typename InputIter1, typename InputIter2>
+ struct result<This(InputIter1, InputIter2)>
+ {
+ typedef
+ typename std::iterator_traits<
+ typename boost::remove_const<
+ typename boost::remove_reference<InputIter1>::type
+ >::type
+ >::difference_type
+ type;
+ };
+
+ template<typename InputIterator>
+ typename std::iterator_traits<InputIterator>::difference_type
+ operator()(InputIterator first, InputIterator last) const
+ {
+ return std::distance(first, last);
+ }
+ };
+
+ // A PolymorphicFunctionObject wrapping std::next
+ struct next
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template<typename Sig>
+ struct result;
+
+ template<typename This, typename ForwardIterator>
+ struct result<This(ForwardIterator)>
+ {
+ typedef
+ typename boost::remove_const<
+ typename boost::remove_reference<ForwardIterator>::type
+ >::type
+ type;
+ };
+
+ template<typename This, typename ForwardIterator, typename Distance>
+ struct result<This(ForwardIterator, Distance)>
+ {
+ typedef
+ typename boost::remove_const<
+ typename boost::remove_reference<ForwardIterator>::type
+ >::type
+ type;
+ };
+
+ template<typename ForwardIterator>
+ ForwardIterator operator()(ForwardIterator x) const
+ {
+ return std::advance(
+ x
+ , static_cast<typename std::iterator_traits<ForwardIterator>::difference_type>(1)
+ );
+ }
+
+ template<typename ForwardIterator>
+ ForwardIterator operator()(
+ ForwardIterator x
+ , typename std::iterator_traits<ForwardIterator>::difference_type n
+ ) const
+ {
+ return std::advance(x, n);
+ }
+ };
+
+ // A PolymorphicFunctionObject wrapping std::prior
+ struct prior
+ {
+ BOOST_PROTO_CALLABLE()
+
+ template<typename Sig>
+ struct result;
+
+ template<typename This, typename BidirectionalIterator>
+ struct result<This(BidirectionalIterator)>
+ {
+ typedef
+ typename boost::remove_const<
+ typename boost::remove_reference<BidirectionalIterator>::type
+ >::type
+ type;
+ };
+
+ template<typename This, typename BidirectionalIterator, typename Distance>
+ struct result<This(BidirectionalIterator, Distance)>
+ {
+ typedef
+ typename boost::remove_const<
+ typename boost::remove_reference<BidirectionalIterator>::type
+ >::type
+ type;
+ };
+
+ template<typename BidirectionalIterator>
+ BidirectionalIterator operator()(BidirectionalIterator x) const
+ {
+ return std::advance(
+ x
+ , -static_cast<typename std::iterator_traits<BidirectionalIterator>::difference_type>(1)
+ );
+ }
+
+ template<typename BidirectionalIterator>
+ BidirectionalIterator operator()(
+ BidirectionalIterator x
+ , typename std::iterator_traits<BidirectionalIterator>::difference_type n
+ ) const
+ {
+ return std::advance(x, -n);
+ }
+ };
+
+}}}
+
+#endif

Modified: trunk/libs/proto/doc/reference.xml
==============================================================================
--- trunk/libs/proto/doc/reference.xml (original)
+++ trunk/libs/proto/doc/reference.xml 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -324,6 +324,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::advance">proto::functional::advance</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::as_child">proto::functional::as_child</classname>
         </computeroutput>
       </listitem>
@@ -344,6 +349,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::begin">proto::functional::begin</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::child">proto::functional::child</classname>
         </computeroutput>
       </listitem>
@@ -364,6 +374,21 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::distance">proto::functional::distance</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
+ <classname alt="boost::proto::functional::empty">proto::functional::empty</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
+ <classname alt="boost::proto::functional::end">proto::functional::end</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::env_var">proto::functional::env_var</classname>
         </computeroutput>
       </listitem>
@@ -404,6 +429,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::next">proto::functional::next</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::pop_back">proto::functional::pop_back</classname>
         </computeroutput>
       </listitem>
@@ -414,6 +444,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::prior">proto::functional::prior</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::push_back">proto::functional::push_back</classname>
         </computeroutput>
       </listitem>
@@ -424,6 +459,16 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::rbegin">proto::functional::rbegin</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
+ <classname alt="boost::proto::functional::rend">proto::functional::rend</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::reverse">proto::functional::reverse</classname>
         </computeroutput>
       </listitem>
@@ -439,6 +484,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::size">proto::functional::size</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::unpack_expr">proto::functional::unpack_expr</classname>
         </computeroutput>
       </listitem>
@@ -1243,7 +1293,14 @@
   <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/range/begin.xml"/>
+ <xi:include href="reference/functional/range/empty.xml"/>
+ <xi:include href="reference/functional/range/end.xml"/>
+ <xi:include href="reference/functional/range/rbegin.xml"/>
+ <xi:include href="reference/functional/range/rend.xml"/>
+ <xi:include href="reference/functional/range/size.xml"/>
   <xi:include href="reference/functional/std.xml"/>
+ <xi:include href="reference/functional/std/iterator.xml"/>
   <xi:include href="reference/functional/std/utility.xml"/>
   <xi:include href="reference/fusion.xml"/>
   <xi:include href="reference/generate.xml"/>

Added: trunk/libs/proto/doc/reference/functional/range.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/range.xml 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,11 @@
+<?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/functional/range.hpp">
+ <para>Includes all the functional extensions to Proto for the Boost.Range library.</para>
+</header>

Added: trunk/libs/proto/doc/reference/functional/range/begin.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/range/begin.xml 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,73 @@
+<?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/functional/range/begin.hpp">
+ <para>Includes Proto callable <code><classname>boost::proto::functional::begin</classname></code>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::begin -->
+ <struct name="begin">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::begin()</code> accessor function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::begin()</code> accessor function 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="Range"/>
+ </template>
+ <specialization>
+ <template-arg>This(Range)</template-arg>
+ </specialization>
+ <inherit>
+ <type>boost::range_iterator&lt;
+ typename boost::remove_reference&lt;Range&gt;::type
+ &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename boost::range_iterator&lt; Range &gt;::type</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::begin(rng)</code></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename boost::range_iterator&lt; Range const &gt;::type</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::begin(rng)</code></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/range/empty.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/range/empty.xml 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,50 @@
+<?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/functional/range/empty.hpp">
+ <para>Includes Proto callable <code><classname>boost::proto::functional::empty</classname></code>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::empty -->
+ <struct name="empty">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::empty()</code> function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::empty()</code> function on its arguments.</para>
+ </description>
+ <inherit>
+ <type><classname>proto::callable</classname></type>
+ </inherit>
+ <typedef name="result_type">
+ <type>bool</type>
+ </typedef>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>bool</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::empty(rng)</code></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/range/end.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/range/end.xml 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,73 @@
+<?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/functional/range/end.hpp">
+ <para>Includes Proto callable <code><classname>boost::proto::functional::end</classname></code>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::end -->
+ <struct name="end">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::end()</code> accessor function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::end()</code> accessor function 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="Range"/>
+ </template>
+ <specialization>
+ <template-arg>This(Range)</template-arg>
+ </specialization>
+ <inherit>
+ <type>boost::range_iterator&lt;
+ typename boost::remove_reference&lt;Range&gt;::type
+ &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename boost::range_iterator&lt; Range &gt;::type</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::end(rng)</code></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename boost::range_iterator&lt; Range const &gt;::type</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::end(rng)</code></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/range/rbegin.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/range/rbegin.xml 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,73 @@
+<?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/functional/range/rbegin.hpp">
+ <para>Includes Proto callable <code><classname>boost::proto::functional::rbegin</classname></code>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::rbegin -->
+ <struct name="rbegin">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::rbegin()</code> accessor function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::rbegin()</code> accessor function 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="Range"/>
+ </template>
+ <specialization>
+ <template-arg>This(Range)</template-arg>
+ </specialization>
+ <inherit>
+ <type>boost::range_reverse_iterator&lt;
+ typename boost::remove_reference&lt;Range&gt;::type
+ &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename boost::range_reverse_iterator&lt; Range &gt;::type</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::rbegin(rng)</code></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename boost::range_reverse_iterator&lt; Range const &gt;::type</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::rbegin(rng)</code></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/range/rend.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/range/rend.xml 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,73 @@
+<?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/functional/range/rend.hpp">
+ <para>Includes Proto callable <code><classname>boost::proto::functional::rend</classname></code>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::rend -->
+ <struct name="rend">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::rend()</code> accessor function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::rend()</code> accessor function 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="Range"/>
+ </template>
+ <specialization>
+ <template-arg>This(Range)</template-arg>
+ </specialization>
+ <inherit>
+ <type>boost::range_reverse_iterator&lt;
+ typename boost::remove_reference&lt;Range&gt;::type
+ &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename boost::range_reverse_iterator&lt; Range &gt;::type</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::rend(rng)</code></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>typename boost::range_reverse_iterator&lt; Range const &gt;::type</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::rend(rng)</code></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/range/size.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/range/size.xml 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,61 @@
+<?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/functional/range/size.hpp">
+ <para>Includes Proto callable <code><classname>boost::proto::functional::size</classname></code>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::size -->
+ <struct name="size">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::size()</code> function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>boost::size()</code> function 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="Range"/>
+ </template>
+ <specialization>
+ <template-arg>This(Range)</template-arg>
+ </specialization>
+ <inherit>
+ <type>boost::range_size&lt;
+ typename boost::remove_reference&lt;Range&gt;::type
+ &gt;</type>
+ </inherit>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>typename boost::range_size&lt; Range const &gt;::type</type>
+ <template>
+ <template-type-parameter name="Range"/>
+ </template>
+ <parameter name="rng">
+ <paramtype>Range const &amp;</paramtype>
+ </parameter>
+ <returns>
+ <para><code>boost::size(rng)</code></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>

Added: trunk/libs/proto/doc/reference/functional/std/iterator.xml
==============================================================================
--- (empty file)
+++ trunk/libs/proto/doc/reference/functional/std/iterator.xml 2012-08-27 17:46:09 EDT (Mon, 27 Aug 2012)
@@ -0,0 +1,247 @@
+<?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/functional/std/iterator.hpp">
+ <para>Includes Proto callables for the functions found in the standard <code>&lt;iterator&gt; header</code>.</para>
+
+ <namespace name="boost">
+ <namespace name="proto">
+ <namespace name="functional">
+
+ <!-- proto::functional::advance -->
+ <struct name="advance">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>std::advance()</code> function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>std::advance()</code> function on its arguments.</para>
+ </description>
+ <inherit>
+ <type><classname>proto::callable</classname></type>
+ </inherit>
+ <typedef name="result_type">
+ <type>void</type>
+ </typedef>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>void</type>
+ <template>
+ <template-type-parameter name="InputIterator"/>
+ </template>
+ <template>
+ <template-type-parameter name="Distance"/>
+ </template>
+ <parameter name="x">
+ <paramtype>InputIterator &amp;</paramtype>
+ </parameter>
+ <parameter name="n">
+ <paramtype>Distance</paramtype>
+ </parameter>
+ <description>
+ <para>Calls <code>std::advance(x, n)</code></para>
+ </description>
+ </method>
+ </method-group>
+ </struct>
+
+ <!-- proto::functional::distance -->
+ <struct name="distance">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>std::distance()</code> function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>std::distance()</code> function 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="InputIterator"/>
+ </template>
+ <specialization>
+ <template-arg>This(InputIterator, InputIterator)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename std::iterator_traits&lt;
+ typename boost::remove_const&lt;
+ typename boost::remove_reference&lt;InputIterator&gt;::type
+ &gt;::type
+ &gt;::difference_type</type>
+ </typedef>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>void</type>
+ <template>
+ <template-type-parameter name="InputIterator"/>
+ </template>
+ <parameter name="first">
+ <paramtype>InputIterator</paramtype>
+ </parameter>
+ <parameter name="last">
+ <paramtype>InputIterator</paramtype>
+ </parameter>
+ <returns>
+ <para><code>std::distance(first, last)</code></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ <!-- proto::functional::next -->
+ <struct name="next">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>std::next()</code> function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>std::next()</code> function 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="ForwardIterator"/>
+ </template>
+ <specialization>
+ <template-arg>This(ForwardIterator)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename boost::remove_const&lt;
+ typename boost::remove_reference&lt;ForwardIterator&gt;::type
+ &gt;::type</type>
+ </typedef>
+ </struct-specialization>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="ForwardIterator"/>
+ <template-type-parameter name="Distance"/>
+ </template>
+ <specialization>
+ <template-arg>This(ForwardIterator, Distance)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename boost::remove_const&lt;
+ typename boost::remove_reference&lt;ForwardIterator&gt;::type
+ &gt;::type</type>
+ </typedef>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>void</type>
+ <template>
+ <template-type-parameter name="ForwardIterator"/>
+ </template>
+ <parameter name="x">
+ <paramtype>ForwardIterator</paramtype>
+ </parameter>
+ <returns>
+ <para><code>std::next(x)</code></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>void</type>
+ <template>
+ <template-type-parameter name="ForwardIterator"/>
+ </template>
+ <parameter name="x">
+ <paramtype>ForwardIterator</paramtype>
+ </parameter>
+ <parameter name="n">
+ <paramtype>typename std::iterator_traits&lt;ForwardIterator&gt;::difference_type</paramtype>
+ </parameter>
+ <returns>
+ <para><code>std::next(x, n)</code></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ <!-- proto::functional::prior -->
+ <struct name="prior">
+ <purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>std::prior()</code> function on its arguments.</purpose>
+ <description>
+ <para>
+ A <conceptname>PolymorphicFunctionObject</conceptname> type that invokes the
+ <code>std::prior()</code> function 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="BidirectionalIterator"/>
+ </template>
+ <specialization>
+ <template-arg>This(BidirectionalIterator)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename boost::remove_const&lt;
+ typename boost::remove_reference&lt;BidirectionalIterator&gt;::type
+ &gt;::type</type>
+ </typedef>
+ </struct-specialization>
+ <struct-specialization name="result">
+ <template>
+ <template-type-parameter name="This"/>
+ <template-type-parameter name="BidirectionalIterator"/>
+ <template-type-parameter name="Distance"/>
+ </template>
+ <specialization>
+ <template-arg>This(BidirectionalIterator, Distance)</template-arg>
+ </specialization>
+ <typedef name="type">
+ <type>typename boost::remove_const&lt;
+ typename boost::remove_reference&lt;BidirectionalIterator&gt;::type
+ &gt;::type</type>
+ </typedef>
+ </struct-specialization>
+ <method-group name="public member functions">
+ <method name="operator()" cv="const">
+ <type>void</type>
+ <template>
+ <template-type-parameter name="BidirectionalIterator"/>
+ </template>
+ <parameter name="x">
+ <paramtype>BidirectionalIterator</paramtype>
+ </parameter>
+ <returns>
+ <para><code>std::prior(x)</code></para>
+ </returns>
+ </method>
+ <method name="operator()" cv="const">
+ <type>void</type>
+ <template>
+ <template-type-parameter name="BidirectionalIterator"/>
+ </template>
+ <parameter name="x">
+ <paramtype>BidirectionalIterator</paramtype>
+ </parameter>
+ <parameter name="n">
+ <paramtype>typename std::iterator_traits&lt;BidirectionalIterator&gt;::difference_type</paramtype>
+ </parameter>
+ <returns>
+ <para><code>std::prior(x, n)</code></para>
+ </returns>
+ </method>
+ </method-group>
+ </struct>
+
+ </namespace>
+ </namespace>
+ </namespace>
+</header>


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