Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r71787 - in sandbox/assign_v2/boost/assign/v2: . interpreter put
From: erwann.rogard_at_[hidden]
Date: 2011-05-07 15:38:04


Author: e_r
Date: 2011-05-07 15:38:03 EDT (Sat, 07 May 2011)
New Revision: 71787
URL: http://svn.boost.org/trac/boost/changeset/71787

Log:
upd assign_v2
Text files modified:
   sandbox/assign_v2/boost/assign/v2/interpreter.hpp | 1
   sandbox/assign_v2/boost/assign/v2/interpreter/as_arg_list.hpp | 21 ++++-----
   sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp | 78 +++++++++++++++++--------------------
   sandbox/assign_v2/boost/assign/v2/interpreter/csv.hpp | 81 ++++++++++++++++-----------------------
   sandbox/assign_v2/boost/assign/v2/interpreter/fwd.hpp | 3 +
   sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp | 4
   6 files changed, 86 insertions(+), 102 deletions(-)

Modified: sandbox/assign_v2/boost/assign/v2/interpreter.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter.hpp 2011-05-07 15:38:03 EDT (Sat, 07 May 2011)
@@ -10,6 +10,7 @@
 #ifndef BOOST_ASSIGN_V2_INTERPRETER_ER_2011_HPP
 #define BOOST_ASSIGN_V2_INTERPRETER_ER_2011_HPP
 #include <boost/assign/v2/interpreter/as_arg_list.hpp>
+#include <boost/assign/v2/interpreter/csv.hpp>
 #include <boost/assign/v2/interpreter/data.hpp>
 #include <boost/assign/v2/interpreter/crtp.hpp>
 #include <boost/assign/v2/interpreter/modifier.hpp>

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/as_arg_list.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/as_arg_list.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/as_arg_list.hpp 2011-05-07 15:38:03 EDT (Sat, 07 May 2011)
@@ -22,27 +22,26 @@
     template<
         typename R // Range
>
- class as_arg_list_adapter/*<-*/
+ struct as_arg_list_adapter
+ : boost::iterator_range<
+ typename boost::range_iterator<R>::type
+ >/*<-*/
     {
-
- typedef typename boost::range_iterator<R>::type ri_;
- typedef boost::iterator_range<ri_> ir_;
+
+ typedef boost::iterator_range<
+ typename boost::range_iterator<R>::type
+ > super_t;
+
         public:
 
         as_arg_list_adapter(R& range)
- :ir(
+ :super_t(
                 boost::make_iterator_range( range )
             )
         {}
 
- typedef ir_ result_type;
-
- result_type operator()()const{ return this->ir; }
-
         private:
         as_arg_list_adapter();
- ir_ ir;
-
     }/*->*/;
 
 namespace result_of{

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp 2011-05-07 15:38:03 EDT (Sat, 07 May 2011)
@@ -17,11 +17,14 @@
 #include <boost/assign/v2/interpreter/fwd.hpp>
 #include <boost/assign/v2/interpreter/modifier.hpp>
 #include <boost/concept_check.hpp>
+#include <boost/function.hpp>
 #include <boost/mpl/always.hpp>
 #include <boost/mpl/apply.hpp>
 #include <boost/range/algorithm/for_each.hpp>
+#include <boost/range/reference.hpp>
 #include <boost/ref.hpp>
 #include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_reference.hpp>
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 #include <utility>
 #else
@@ -63,41 +66,6 @@
 
     };
 
- template<typename D>
- struct wrapper
- {
-
- wrapper(D const& d):d_( d ){}
-
- operator D const&()const{ return this->d_; }
-
- typedef wrapper const& result_type;
-
-#if BOOST_ASSIGN_V2_ENABLE_CPP0X
- template<typename T>
- result_type operator()( T&& t )const
- {
- this->d_( std::forward<T>(t) ); return (*this);
- }
-#else
-
- template<typename T>
- result_type operator()(T& t)const
- {
- this->d_( t ); return (*this);
- }
-
- template<typename T>
- result_type operator()(T const & t)const
- {
- this->d_( t ); return (*this);
- }
-#endif
-
- private:
- D const& d_;
-
- };
 }// interpreter_aux
 //[syntax_interpreter_crtp
 namespace interpreter_aux{
@@ -180,13 +148,6 @@
 
         typedef D const& result_type;
 
- template<typename R>
- result_type
- operator()( as_arg_list_adapter<R> range )const/*<-*/
- {
- return ::boost::for_each( range(), wrapper<D>( this->derived() ) );
- }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
-
 //<-
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
@@ -199,6 +160,12 @@
             );
         }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
+ template<typename R>
+ result_type as_arg_list( R&& range )const/*<-*/
+ {
+ return this->as_arg_list_impl( std::forward<R>( range ) );
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
 //<-
 #else
         protected:
@@ -215,6 +182,20 @@
             return this->modify( this->fun() );
         }
 
+ template<typename R>
+ result_type
+ as_arg_list( R& range )const/*<-*/
+ {
+ return this->as_arg_list_impl( range );
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
+ template<typename R>
+ result_type
+ as_arg_list( R const& range )const/*<-*/
+ {
+ return this->as_arg_list_impl( range );
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
 #define BOOST_ASSIGN_V2_MACRO(z, N, data) \
     template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
     result_type \
@@ -230,6 +211,7 @@
     ~
 )
 #undef BOOST_ASSIGN_V2_MACRO
+
 #endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 
         // must be mutable
@@ -283,6 +265,18 @@
 
 #endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 
+ template<typename R>
+ result_type
+ as_arg_list_impl( BOOST_ASSIGN_V2_FORWARD_PARAM(R, range) )const/*<-*/
+ {
+ typedef typename boost::range_reference<
+ typename boost::remove_reference<R>::type
+ >::type t_;
+ boost::function<result_type ( t_ )> f = boost::cref( *this );
+ boost::for_each( BOOST_ASSIGN_V2_FORWARD_ARG(R, range), f );
+ return this->derived();
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
 //->
     };
 

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/csv.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/csv.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/csv.hpp 2011-05-07 15:38:03 EDT (Sat, 07 May 2011)
@@ -9,20 +9,12 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_INTERPRETER_CSV_ER_2011_HPP
 #define BOOST_ASSIGN_V2_INTERPRETER_CSV_ER_2011_HPP
+#include <boost/assign/v2/interpreter/crtp.hpp>
+#include <boost/assign/v2/interpreter/as_arg_list.hpp>
 #include <boost/assign/v2/support/config/enable_cpp0x.hpp>
 #include <boost/assign/v2/support/pp/ignore.hpp>
-#include <boost/assign/v2/interpreter/fwd.hpp>
-#include <boost/config.hpp>
-#include <boost/mpl/bool.hpp>
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 #include <utility>
-#else
-#include <boost/assign/v2/support/config/limit_csv_arity.hpp>
-#include <boost/preprocessor/arithmetic/inc.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/control/expr_if.hpp>
-#include <boost/preprocessor/repetition.hpp>
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 
 namespace boost{
 namespace assign{
@@ -30,16 +22,37 @@
 //[syntax_interpreter_csv
 namespace interpreter_aux{
 
-//<-
-#if BOOST_ASSIGN_V2_ENABLE_CPP0X
-//->
-
     template<typename D, typename C, typename F, typename MTag, typename DTag>
     void csv(
         interpreter_crtp<D, C, F, MTag, DTag> const& interpreter
     )/*<-*/
     {
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
+ template<
+ typename D, typename C, typename F, typename MTag, typename DTag,
+ typename R
+ >
+ void invoke(
+ interpreter_crtp<D, C, F, MTag, DTag> const& interpreter,
+ as_arg_list_adapter<R>&& adapter
+ )/*<-*/
+ {
+ interpreter.as_arg_list( std::forward<T>( adapter ) );
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
+ template<
+ typename D, typename C, typename F, typename MTag, typename DTag,
+ typename T
+ >
+ void invoke(
+ interpreter_crtp<D, C, F, MTag, DTag> const& interpreter,
+ T&& t
+ )/*<-*/
+ {
+ interpreter( std::forward<T>( t ) );
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
     template<typename D, typename C, typename F, typename MTag, typename DTag,
         typename T, typename... Args>
     void csv(
@@ -48,48 +61,22 @@
     )/*<-*/
     {
         return csv(
- interpreter( std::forward<T>( t ) ),
+ invoke( interpreter, t ),
             std::forward<Args>( args )...
         );
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
 //]
-#else
-#define BOOST_ASSIGN_V2_MACRO1(z, i, data) ( BOOST_PP_CAT(_, i) )
-#define BOOST_ASSIGN_V2_MACRO2(z, N, is_const)\
- template<\
- typename D, typename C, typename F, typename MTag, typename DTag\
- BOOST_PP_ENUM_TRAILING_PARAMS(N, typename T)\
- >\
- void csv(\
- interpreter_crtp<D, C, F, MTag, DTag> const& interpreter\
- BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(\
- N, T, BOOST_PP_EXPR_IF(is_const, const) & _\
- )\
- )\
- {\
- interpreter BOOST_PP_REPEAT(N, BOOST_ASSIGN_V2_MACRO1, ~ );\
- }\
-/**/
-
-BOOST_PP_REPEAT_FROM_TO(
- 1, // otherwise redefintion of csv()
- BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY),
- BOOST_ASSIGN_V2_MACRO2,
- 0
-)
-BOOST_PP_REPEAT(
- BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY),
- BOOST_ASSIGN_V2_MACRO2,
- 1
-)
-#undef BOOST_ASSIGN_V2_MACRO1
-#undef BOOST_ASSIGN_V2_MACRO2
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 
 }// interpreter_aux
 }// v2
 }// assign
 }// boost
 
+#else
+
+#include <boost/assign/v2/interpreter/cpp03/csv.hpp>
+
+#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
+
 #endif // BOOST_ASSIGN_V2_INTERPRETER_CSV_ER_2011_HPP

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/fwd.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/fwd.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/fwd.hpp 2011-05-07 15:38:03 EDT (Sat, 07 May 2011)
@@ -53,6 +53,9 @@
     template<typename Derived> struct replace_modifier_tag;
     template<typename Derived> struct replace_data_tag;
 
+ template<typename R>
+ class as_arg_list_adapter;
+
 }// interpreter_aux
 }// v2
 }// assign

Modified: sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp 2011-05-07 15:38:03 EDT (Sat, 07 May 2011)
@@ -9,11 +9,11 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_CSV_PUT_ER_2011_HPP
 #define BOOST_ASSIGN_V2_PUT_CSV_PUT_ER_2011_HPP
-#include <boost/assign/v2/support/config/enable_cpp0x.hpp>
-#include <boost/assign/v2/support/pp/ignore.hpp>
 #include <boost/assign/v2/interpreter/csv.hpp>
 #include <boost/assign/v2/option/data.hpp>
 #include <boost/assign/v2/put/put.hpp>
+#include <boost/assign/v2/support/config/enable_cpp0x.hpp>
+#include <boost/assign/v2/support/pp/ignore.hpp>
 #include <boost/utility/enable_if.hpp>
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 #include <utility>


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