Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r71066 - in sandbox/assign_v2: boost/assign/v2/interpreter boost/assign/v2/option boost/assign/v2/option/modifier boost/assign/v2/put boost/assign/v2/put/cpp03 boost/assign/v2/ref/array libs/assign/v2 libs/assign/v2/src libs/assign/v2/test libs/assign/v2/test/option libs/assign/v2/test/pipe libs/assign/v2/test/put
From: erwann.rogard_at_[hidden]
Date: 2011-04-06 23:04:10


Author: e_r
Date: 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
New Revision: 71066
URL: http://svn.boost.org/trac/boost/changeset/71066

Log:
upd assign_v2
Text files modified:
   sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp | 4
   sandbox/assign_v2/boost/assign/v2/option/list.hpp | 4
   sandbox/assign_v2/boost/assign/v2/option/modifier/iterate.hpp | 4 +
   sandbox/assign_v2/boost/assign/v2/option/modifier/row_major.hpp | 32 +++++++---
   sandbox/assign_v2/boost/assign/v2/put/cpp03/delay_csv_put.hpp | 81 ---------------------------
   sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp | 81 +++++++++++++++++++++++++++
   sandbox/assign_v2/boost/assign/v2/put/delay_csv_put.hpp | 89 -----------------------------
   sandbox/assign_v2/boost/assign/v2/ref/array/as_arg_list.hpp | 55 ++++++++++++++++++
   sandbox/assign_v2/libs/assign/v2/src/main.cpp | 1
   sandbox/assign_v2/libs/assign/v2/test/option/data.cpp | 15 +---
   sandbox/assign_v2/libs/assign/v2/test/option/mapped.cpp | 16 ++---
   sandbox/assign_v2/libs/assign/v2/test/option/std_modifier.cpp | 18 +++---
   sandbox/assign_v2/libs/assign/v2/test/pipe.cpp | 26 --------
   sandbox/assign_v2/libs/assign/v2/test/pipe.h | 23 -------
   sandbox/assign_v2/libs/assign/v2/test/pipe/csv_put.cpp | 86 ----------------------------
   sandbox/assign_v2/libs/assign/v2/test/pipe/csv_put.h | 24 -------
   sandbox/assign_v2/libs/assign/v2/test/put/put.cpp | 118 +++++++++++++++++++++++++++++++++------
   sandbox/assign_v2/libs/assign/v2/tutorial.cpp | 90 +++++++++++++++++------------
   18 files changed, 342 insertions(+), 425 deletions(-)

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -65,10 +65,10 @@
 }// switch_tag
 
 #define BOOST_ASSIGN_V2_SWITCH_TAG modifier_tag
-BOOST_ASSIGN_V2_SWITCH_CASE( 0, container_aux::is_multi_array, modifier_tag::row_major )
+BOOST_ASSIGN_V2_SWITCH_CASE( 0, container_aux::is_multi_array, modifier_tag::row_major<> )
 BOOST_ASSIGN_V2_SWITCH_CASE( 1, container_aux::is_associative, modifier_tag::insert )
 BOOST_ASSIGN_V2_SWITCH_CASE( 2, container_aux::is_array, modifier_tag::iterate<> )
-BOOST_ASSIGN_V2_SWITCH_CASE( 3, container_aux::has_push_deduced_value, modifier_tag::push )
+BOOST_ASSIGN_V2_SWITCH_CASE( 3, container_aux::has_push_deduced_value, modifier_tag::push )
 BOOST_ASSIGN_V2_SWITCH_CASE_DEFAULT( 4, modifier_tag::push_back )
 #undef BOOST_ASSIGN_V2_SWITCH_TAG
 

Modified: sandbox/assign_v2/boost/assign/v2/option/list.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/list.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option/list.hpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -202,9 +202,9 @@
 
 }// result_of
 }// interpreter_aux
+ typedef interpreter_aux::empty_list_option empty_list_option_;
 namespace{
- interpreter_aux::empty_list_option _list_option
- = interpreter_aux::empty_list_option();
+ empty_list_option_ _list_option = empty_list_option_();
 }
 namespace interpreter_aux{
 namespace result_of{

Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/iterate.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/iterate.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/iterate.hpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -51,7 +51,9 @@
 
         public:
                     
- interpreter_modifier(): ptr( new arg_() ){}
+ interpreter_modifier()
+ : ptr( new arg_() )
+ {}
         explicit interpreter_modifier(
             ignore_,
             typename boost::call_traits<arg_>::param_type arg

Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/row_major.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/row_major.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/row_major.hpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -12,19 +12,25 @@
 #include <cstddef>
 #include <boost/assert.hpp>
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
+#include <boost/assign/v2/detail/functor/iterate.hpp>
 #include <boost/assign/v2/detail/keyword.hpp>
 #include <boost/assign/v2/option/modifier/framework.hpp>
 #include <boost/call_traits.hpp>
+#include <boost/shared_ptr.hpp>
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 #include <utility>
 #endif
 
+#include <iostream>
+
 namespace boost{
 namespace assign{
 namespace v2{
 //[syntax_option_row_major
 namespace modifier_tag{
- struct row_major{};
+
+ template<typename Arg = functor_aux::iterate> struct row_major{};
+
 }// modifier_tag
 namespace interpreter_aux{
 
@@ -71,28 +77,34 @@
         row_major_::assign( array, index, BOOST_ASSIGN_V2_forward );
     }
 
- template<>
- class interpreter_modifier< modifier_tag::row_major >
+ template<typename Arg>
+ class interpreter_modifier< modifier_tag::row_major<Arg> >
     {
 
- typedef std::size_t size_type;
+ typedef Arg arg_;
+ typedef boost::shared_ptr<arg_> ptr_;
 
         public:
         interpreter_modifier()
- : index_( 0 )
+ : ptr( new arg_() )
         {}
- interpreter_modifier( ignore_, size_type n )
- : index_( n )
+ interpreter_modifier(
+ ignore_,
+ typename boost::call_traits<arg_>::param_type arg
+ )
+ : ptr( new arg_( arg ) )
         {}
 
         template<typename C, typename T>
         void impl(C& cont, BOOST_ASSIGN_V2_arg, data_tag::value )const
         {
- row_major_assign( cont, this->index_++, BOOST_ASSIGN_V2_forward );
+ int n = (*this->ptr)();
+ std::cout << "n = " << n << std::endl;
+ row_major_assign( cont, n, BOOST_ASSIGN_V2_forward );
         }
 
         private:
- mutable size_type index_;
+ mutable ptr_ ptr;
     };
 
 #undef BOOST_ASSIGN_V2_arg
@@ -101,7 +113,7 @@
 }// interpreter_aux
 //]
 BOOST_ASSIGN_V2_OPTION_MODIFIER_KEYWORD(row_major)
-BOOST_ASSIGN_V2_OPTION_MODIFIER_META_MODIFIER_TAG(row_major, modifier_tag::row_major)
+BOOST_ASSIGN_V2_OPTION_MODIFIER_META_MODIFIER_TAG(row_major, modifier_tag::row_major<Arg>)
 }// v2
 }// assign
 }// boost

Modified: sandbox/assign_v2/boost/assign/v2/put/cpp03/delay_csv_put.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/cpp03/delay_csv_put.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/put/cpp03/delay_csv_put.hpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -1,80 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to 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_ASSIGN_V2_PUT_CPP03_DELAY_CSV_PUT_HPP_ER_2010
-#define BOOST_ASSIGN_V2_PUT_CPP03_DELAY_CSV_PUT_HPP_ER_2010
-#include <boost/assign/v2/detail/config/limit_csv_arity.hpp>
-#include <boost/mpl/aux_/na.hpp>
-#include <boost/preprocessor/arithmetic/inc.hpp>
-#include <boost/preprocessor/repetition.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-//[syntax_delay_csv_put
-namespace interpreter_aux{
-
- template<typename U>
- typename result_of::delay_csv_put<U, 0>::type
- delay_csv_put()
- {
- return typename result_of::delay_csv_put<U, 0>::type(
- ref::csv_array<U>();
- );
- }
-
-#define BOOST_ASSIGN_V2_MACRO2(z, N, U)\
- template<typename T, arg_list_size_type N>\
- typename result_of::delay_csv_put<U, N>::type\
- delay_csv_put( BOOST_PP_ENUM_PARAMS(N, U &_) )\
- {\
- return typename result_of::delay_csv_put<U, N>::type(\
- ref::csv_array<U>( BOOST_PP_ENUM_PARAMS(N, _) )\
- );\
- }\
- template<typename T, typename O, bool is, arg_list_size_type N>\
- typename result_of::delay_csv_put<U, N>::type\
- delay_csv_put(\
- option_crtp<O, is> const& crtp,\
- BOOST_PP_ENUM_PARAMS(N, U &_)\
- )\
- {\
- typedef O const& options_;\
- options_ options = static_cast<options_>( crtp );\
- return typename result_of::delay_csv_put<U, N>::type(\
- ref::csv_array<U>( BOOST_PP_ENUM_PARAMS(N, _) )\
- );\
- }\
-/**/
-
-BOOST_PP_REPEAT_FROM_TO(
- 1,
- BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY),
- BOOST_ASSIGN_V2_MACRO2,
- T
-)
-BOOST_PP_REPEAT_FROM_TO(
- 1,
- BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY),
- BOOST_ASSIGN_V2_MACRO2,
- T const
-)
-#undef BOOST_ASSIGN_V2_MACRO1
-#undef BOOST_ASSIGN_V2_MACRO2
-
-}// interpreter_aux
-
- using interpreter_aux::delay_csv_put;
-
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_PUT_CPP03_DELAY_CSV_PUT_HPP_ER_2010
-
+// TODO remove file
\ No newline at end of file

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-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -11,6 +11,7 @@
 #define BOOST_ASSIGN_V2_PUT_CSV_PUT_ER_2010_HPP
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #include <boost/assign/v2/detail/pp/ignore.hpp>
+#include <boost/assign/v2/interpreter/as_arg_list.hpp>
 #include <boost/assign/v2/interpreter/csv.hpp>
 #include <boost/assign/v2/put/put.hpp>
 #include <boost/assign/v2/option/data.hpp>
@@ -132,7 +133,74 @@
 #endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
 
-}// interpreter_aux
+
+ template<typename R, typename Os = empty_list_option>
+ struct delayed_csv_put/*<-*/
+ : Os, as_arg_list_adapter<R>
+ {
+
+ typedef Os super1_t;
+ typedef as_arg_list_adapter<R> super2_t;
+
+ explicit delayed_csv_put(R& r)
+ : super2_t( r )
+ {}
+
+ explicit delayed_csv_put(Os options, R& r)
+ : super1_t( options ), super2_t( r )
+ {}
+
+ template<typename C>
+ C& apply(C& cont)const
+ {
+ make_csv_ready(
+ put( cont ) % static_cast<super1_t const&>( *this )
+ )(
+ static_cast<super2_t const&>( *this )
+ );
+
+ return cont;
+ }
+
+
+ }/*->*/;
+
+ template<typename C, typename R, typename Os>
+ C& operator|(C& cont, delayed_csv_put<R, Os> const& rhs)/*<-*/
+ {
+ return rhs.apply( cont );
+
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
+namespace result_of{
+
+ template<typename R, typename Os = empty_list_option>
+ struct delay_csv_put/*<-*/
+ {
+ typedef delayed_csv_put<R, Os> type;
+ }/*->*/;
+
+
+}// result_of
+
+ template<typename R>
+ typename result_of::delay_csv_put<R const>::type
+ delay_csv_put(R const& range)/*<-*/
+ {
+ return delayed_csv_put<R const>( range );
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
+
+ template<typename Os, typename R>
+ typename result_of::delay_csv_put<R const, Os>::type
+ delay_csv_put(option_crtp<Os> const& options, R const& range)/*<-*/
+ {
+ return delayed_csv_put<R const, Os>(
+ static_cast<Os const&>( options ), range
+ );
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+
+}// interpreter_aux
 //<-
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
@@ -140,6 +208,17 @@
 //<-
 #endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
+
+ using interpreter_aux::delay_csv_put;
+
+namespace result_of{
+
+ template<typename R, typename Os = empty_list_option_>
+ struct delay_csv_put
+ : interpreter_aux::result_of::delay_csv_put<R, Os>
+ {};
+
+}// result_of
 //]
 
 }// v2

Modified: sandbox/assign_v2/boost/assign/v2/put/delay_csv_put.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/delay_csv_put.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/put/delay_csv_put.hpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -1,88 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to 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_ASSIGN_V2_PUT_DELAYED_CSV_PUT_HPP_ER_2010
-#define BOOST_ASSIGN_V2_PUT_DELAYED_CSV_PUT_HPP_ER_2010
-#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
-#include <boost/assign/v2/detail/pp/ignore.hpp>
-#include <boost/assign/v2/put/put.hpp>
-#include <boost/assign/v2/option/list.hpp>
-#include <boost/assign/v2/ref/array/as_arg_list.hpp>
-#include <boost/call_traits.hpp>
-#include <boost/concept_check.hpp>
-#if BOOST_ASSIGN_V2_ENABLE_CPP0X
-#include <utility>
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
-
-namespace boost{
- struct use_default;
-namespace assign{
-namespace v2{
-//[syntax_delay_csv_put
-namespace interpreter_aux{
-
- template<typename R, typename Os = empty_list_option>
- struct delayed_csv_put/*<-*/
- : as_arg_list_adapter<
- typename boost::add_const<R>::type
- >,
- Os
- {
- typedef as_arg_list_adapter<
- typename boost::add_const<R>::type
- > super1_t;
-
- typedef Os super2_t;
-
- explicit delayed_csv_put(typename call_traits<R>::param_type r)
- : super1_t( r )
- {}
-
- explicit delayed_csv_put(
- Os options,
- typename call_traits<R>::param_type r
- )
- : super1_t( r ), super2_t( options )
- {}
-
- template<typename C>
- C& apply(C& cont)
- {
-
- make_csv_ready(
- put( cont ) % static_cast<super2_t const&>( *this )
- )(
- static_cast<super1_t const&>( *this )
- );
-
- return cont;
-
- }
-
-
- }/*->*/;
-
- template<typename C, typename R, typename Os>
- C& operator|(C& cont, delayed_csv_put<R, O> const& rhs)/*<-*/
- {
- return rhs.apply( cont )
-
- }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
-
-}// interpreter_aux
-
- using interpreter_aux::delay_csv_put;
-
-//]
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_PUT_DELAYED_CSV_PUT_HPP_ER_2010
-
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/ref/array/as_arg_list.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/array/as_arg_list.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/ref/array/as_arg_list.hpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -1 +1,54 @@
-// TODO remove file
\ No newline at end of file
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Erwann Rogard //
+// Use, modification and distribution are subject to 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_ASSIGN_V2_REF_ARRAY_AS_ARG_LIST_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_ARRAY_AS_ARG_LIST_ER_2010_HPP
+#include <boost/assign/v2/ref/array/interface.hpp>
+#include <boost/assign/v2/ref/array/size_type.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace array_aux{
+
+ // --- Implementation --- //
+
+ template<size_type I, typename F, typename Impl, typename D>
+ typename boost::enable_if_c<
+ D::static_size == I
+ >::type
+ as_arg_list( F const& f, interface<Impl, D> const& array)
+ {}
+
+ template<size_type I, typename F, typename Impl, typename D>
+ typename boost::enable_if_c< I < D::static_size >::type
+ as_arg_list(F const& f , interface<Impl, D> const& array)
+ {
+ f( array[ I ].get() );
+ as_arg_list<I + 1>( f, array );
+ }
+
+ // --- User interface --- //
+
+ template<typename F, typename Impl, typename D>
+ void as_arg_list(F const& f , interface<Impl, D> const& array)
+ {
+ as_arg_list<0>( f, array );
+ }
+
+}// array_aux
+using array_aux::as_arg_list;
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif // BOOST_ASSIGN_V2_REF_ARRAY_AS_ARG_LIST_ER_2010_HPP

Modified: sandbox/assign_v2/libs/assign/v2/src/main.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/src/main.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/src/main.cpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -67,7 +67,6 @@
         xxx_deque::test();
         xxx_interpreter::test();
         xxx_option::test();
- //xxx_pipe::test();
         xxx_put::test();
         xxx_ref::test();
     }

Modified: sandbox/assign_v2/libs/assign/v2/test/option/data.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/option/data.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/option/data.cpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -53,19 +53,14 @@
         }
         {
             //[test_option_data_recursive
- int i = 1, k = 1;
+ int k = 1;
             
- BOOST_AUTO(
- factorials, (
- as2::deque<int>( as2::_nil ) % (
- as2::_data = ( lambda::var( k ) *= ( lambda::var( i )++ ) )
- )
- )()()()()()
- );
-
             BOOST_ASSIGN_V2_CHECK(
                 range::equal(
- factorials,
+ as2::csv_deque<int>(
+ as2::_data = ( lambda::var( k ) *= lambda::_1 ),
+ 1, 2, 3, 4, 5
+ ),
                     as2::csv_deque( 1, 2, 6, 24, 120 )
                 )
             );

Modified: sandbox/assign_v2/libs/assign/v2/test/option/mapped.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/option/mapped.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/option/mapped.cpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -61,17 +61,15 @@
         }
         {
             //[test_option_mapped_deque
- BOOST_AUTO(
- alternating,
- (
- as2::deque<int>(
- as2::as_arg_list( std::list<int>( 10, 1 ) )
- ) % ( as2::_mapped = ( lambda::_1 *= -1 ) )
- )( 1 )( 3 )( 5 )( 7 )( 9 )
- );
+ std::list<int> source(10, 1);
+ BOOST_AUTO( option, ( as2::_mapped = ( lambda::_1 *= -1 ) ) );
+
             BOOST_ASSIGN_V2_CHECK(
                 range::equal(
- alternating,
+ (
+ as2::deque<int>( as2::as_arg_list( source ) )
+ % option
+ )( 1 )( 3 )( 5 )( 7 )( 9 ),
                     as2::csv_deque( +1, -1, +1, -1, +1, -1, +1, -1, +1, -1 )
                 )
             );

Modified: sandbox/assign_v2/libs/assign/v2/test/option/std_modifier.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/option/std_modifier.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/option/std_modifier.cpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -36,9 +36,6 @@
         using namespace boost;
         namespace as2 = assign::v2;
 
- // Note: In many cases, the default is already set at that invoked with
- // operator%
-
         // PUT
         {
             //[test_option_standard_meta
@@ -56,16 +53,19 @@
             // fully qual boost::begin/end demanded by MSVC - error C2668
             //[test_option_push_front
             boost::circular_buffer<int> cb( 3 );
- as2::csv_put( cb, as2::_push_front, 3, 2, 1 );
-
+
             BOOST_ASSIGN_V2_CHECK(
- range::equal(cb, as2::csv_deque(1, 2, 3) )
+ range::equal(
+ cb | as2::delay_csv_put( as2::_push_front, as2::csv_deque( 3, 2, 1 ) ),
+ as2::csv_deque( 1, 2, 3 )
+ )
             );
 
- as2::csv_put( cb, 4, 5 );
-
             BOOST_ASSIGN_V2_CHECK(
- range::equal(cb, as2::csv_deque(3, 4, 5) )
+ range::equal(
+ cb | as2::delay_csv_put( as2::csv_deque( 4, 5 ) ),
+ as2::csv_deque( 3, 4, 5 )
+ )
             );
 
             //]

Modified: sandbox/assign_v2/libs/assign/v2/test/pipe.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/pipe.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/pipe.cpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -1,25 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to 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) //
-//////////////////////////////////////////////////////////////////////////////
-#include <libs/assign/v2/test/pipe/csv_put.h>
-#include <libs/assign/v2/test/pipe/option.h>
-#include <libs/assign/v2/test/pipe.h>
-
-namespace test_assign_v2{
-namespace xxx_pipe{
-
- void test()
- {
- xxx_csv_put::test();
- xxx_option::test();
- }
-
-}// xxx_pipe
-}// xxx_test_assign
-
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/libs/assign/v2/test/pipe.h
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/pipe.h (original)
+++ sandbox/assign_v2/libs/assign/v2/test/pipe.h 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -1,22 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to 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 LIBS_ASSIGN_V2_TEST_PIPE_ER_2010_H
-#define LIBS_ASSIGN_V2_TEST_PIPE_ER_2010_H
-
-namespace test_assign_v2{
-namespace xxx_pipe{
-
- void test();
-
-}// xxx_pipe
-}// xxx_test_assign
-
-#endif // LIBS_ASSIGN_V2_TEST_PIPE_ER_2010_H
-
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/libs/assign/v2/test/pipe/csv_put.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/pipe/csv_put.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/pipe/csv_put.cpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -1,85 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to 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) //
-//////////////////////////////////////////////////////////////////////////////
-#include <map>
-#include <deque>
-#include <string>
-#include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/detail/traits/container.hpp>
-#include <boost/assign/v2/include/csv_deque.hpp>
-#include <boost/assign/v2/pipe/csv_put.hpp>
-#include <boost/ptr_container/ptr_map.hpp>
-#include <boost/range/algorithm/equal.hpp>
-
-#include <libs/assign/v2/test/pipe/csv_put.h>
-
-namespace test_assign_v2{
-namespace xxx_pipe{
-namespace xxx_csv_put{
-
- void test(){
-
- using namespace boost;
- namespace as2 = assign::v2;
- {
- //[test_pipe_csv_put_str_literal
- typedef const char* T; typedef std::string str_;
- std::deque<T> cont;
-
- BOOST_ASSIGN_V2_CHECK(
- boost::range::equal(
- cont | /*<<`"x"`, `"y"` and `"z"` are kept as `const char(&)[2]`>>*/as2::_csv_put( "x", "y", "z" ),
- as2::csv_deque<str_>( "x", "y", "z" )
- )
- );
- //]
- }
- {
- //[test_pipe_csv_put_map
- typedef std::map<std::string, int> C; typedef C::value_type T;
- C cal; C benchmark;
- benchmark["jan"] = 31;
- benchmark["feb"] = 28;
- benchmark["mar"] = 31;
-
- cal | as2::_csv_put( T("jan", 31), T( "feb", 28 ), T("mar", 31) );
-
- BOOST_ASSIGN_V2_CHECK(
- range::equal(
- cal | as2::_csv_put( T("jan", 31), T("feb", 28 ), T("mar", 31) ),
- benchmark
- )
- );
- //]
- }
- {
- //[test_pipe_csv_put_map_ptr
- typedef boost::ptr_map<std::string, int> C;
- typedef as2::value_container_value<C>::type T;
-
- C benchmark;
- benchmark["jan"] = 31;
- benchmark["feb"] = 28;
- benchmark["mar"] = 31;
-
- C cal;
- BOOST_ASSIGN_V2_CHECK(
- range::equal(
- cal | as2::_csv_put( T("jan", 31), T("feb", 28 ), T("mar", 31) ),
- benchmark
- )
- );
- //]
- }
-
- }// test()
-
-}// xxx_csv_put
-}// xxx_pipe
-}// xxx_test_assign
+// TODO remove file

Modified: sandbox/assign_v2/libs/assign/v2/test/pipe/csv_put.h
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/pipe/csv_put.h (original)
+++ sandbox/assign_v2/libs/assign/v2/test/pipe/csv_put.h 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -1,23 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to 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 LIBS_ASSIGN_V2_TEST_PIPE_CSV_PUT_ER_2010_H
-#define LIBS_ASSIGN_V2_TEST_PIPE_CSV_PUT_ER_2010_H
-
-namespace test_assign_v2{
-namespace xxx_pipe{
-namespace xxx_csv_put{
-
- void test();
-
-}// xxx_csv_put
-}// xxx_pipe
-}// test_assign_v2
-
-#endif // LIBS_ASSIGN_V2_TEST_PIPE_CSV_PUT_ER_2010_H
+// TODO remove file

Modified: sandbox/assign_v2/libs/assign/v2/test/put/put.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/put.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/put.cpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -18,25 +18,29 @@
 #include <stack>
 #include <string>
 #include <utility>
-#include <boost/circular_buffer.hpp>
-#include <boost/unordered_map.hpp>
-#include <boost/unordered_set.hpp>
+
+#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
+#if !BOOST_ASSIGN_V2_ENABLE_CPP0X
+#define BOOST_ASSIGN_V2_LIMIT_CSV_ARITY 30
+#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 
 #include <boost/assign/v2/detail/config/check.hpp>
 #include <boost/assign/v2/detail/traits.hpp>
 #include <boost/assign/v2/include/csv_deque.hpp>
 #include <boost/assign/v2/include/put.hpp>
 #include <boost/assign/v2/include/csv_put.hpp>
-#include <boost/tuple/tuple.hpp>
+#include <boost/circular_buffer.hpp>
+#include <boost/multi_array.hpp>
+#include <boost/numeric/conversion/bounds.hpp>
 #include <boost/range/algorithm_ext/iota.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
-#include <boost/numeric/conversion/bounds.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/unordered_map.hpp>
+#include <boost/unordered_set.hpp>
 #include <boost/variant.hpp>
 #include <libs/assign/v2/test/put/put.h>
 
-#include <iostream>
-
 namespace test_assign_v2{
 namespace xxx_put{
 namespace xxx_put{
@@ -54,7 +58,7 @@
             std::queue<int> adapter; as2::csv_put( adapter, 1, 10, 100 );
             array<int, 3> array; as2::csv_put( array, 1, 10, 100 );
             std::set<int> assoc; as2::csv_put( assoc, 1, 10, 100 );
- std::list<int> seq; as2::csv_put( seq, 1, 10, 100 );
+ std::list<int> seq; as2::csv_put( seq, 1, 10, 100 );
             //]
             BOOST_ASSIGN_V2_CHECK( adapter.front() == 1 );
             BOOST_ASSIGN_V2_CHECK( adapter.back() == 100 );
@@ -147,11 +151,22 @@
         //SET
         {
             //[test_csv_put_unordered_set
- boost::unordered_set<std::string> set;
- as2::csv_put( set, "foo", "bar", "baz" );
-
- BOOST_ASSIGN_V2_CHECK( set.count( "foo" ) == 1 );
- BOOST_ASSIGN_V2_CHECK( set.count( "baz" ) == 1 );
+ typedef std::string word_;
+ typedef boost::unordered_set<word_> C;
+
+ C set, benchmark;
+ benchmark.insert( "foo" );
+ benchmark.insert( "bar" );
+ benchmark.insert( "baz" );
+
+ BOOST_ASSIGN_V2_CHECK(
+ range::equal(
+ set | as2::delay_csv_put(
+ as2::csv_deque<word_>( "foo", "bar", "baz" )
+ ),
+ benchmark
+ )
+ );
             //]
         }
         // MAP
@@ -162,7 +177,8 @@
             const char y[4] = { 'b', 'a', 'r', '\0' };
             word_ z = "***baz";
             boost::unordered_map<int, word_> map;
- as2::put( map )/*<<Calls `map.insert( 1, str_( foo, 3 ) )`>>*/( 1, x, 3 )( 2, y )( 3, z, 3, 3 )( 4, "qux");
+
+ as2::put( map )( 1, x, 3 )( 2, y )( 3, z, 3, 3 )( 4, "qux");
 
             assert( map[1] == "foo" ); assert( map[2] == "bar" );
             assert( map[3] == "baz" ); assert( map[4] == "qux" );
@@ -173,12 +189,77 @@
             typedef std::string month_; typedef int days_;
             typedef std::map<month_, days_> C;
             typedef C::value_type T;
- C map; as2::csv_put( map, T("jan", 31 ), T( "feb", 28 ), T( "mar", 31 ) );
+ C map, benchmark;
+
+ as2::csv_put( map, T("jan", 31 ), T( "feb", 28 ), T( "mar", 31 ) );
 
             BOOST_ASSIGN_V2_CHECK( map["jan"] == 31 );
+ BOOST_ASSIGN_V2_CHECK( map["feb"] == 28 );
             BOOST_ASSIGN_V2_CHECK( map["mar"] == 31 );
             //]
         }
+ // MULTI-ARRAY
+ {
+ //[test_csv_put_multi_array
+ typedef boost::multi_array<int, 3> array3_;
+ typedef array3_::size_type size_;
+
+ typedef const int dim_;
+ dim_ dim1 = 2, dim2 = 3, dim3 = 4;
+
+ using boost::extents;
+ array3_ array3( extents[dim1][dim2][dim3] );
+
+ as2::csv_put(
+ array3,
+ 0, 1, 2, 3,
+ 4, 5, 6, 7,
+ 8, 9, 10, 11,
+
+ 12, 13, 14, 15,
+ 16, 17, 18, 19,
+ 20, 21, 22, 23
+ );
+
+ size_ i = 0;
+ for( size_ i1 = 0; i1 < dim1; i1++ )
+ {
+ for( size_ i2 = 0; i2 < dim2; i2++ )
+ {
+ for( size_ i3 = 0; i3 < dim3; i3++ )
+ {
+ BOOST_ASSIGN_V2_CHECK( array3[ i1 ][ i2 ][ i3 ] == i++ );
+ }
+ }
+ }
+
+ //]
+
+ using boost::indices;
+ typedef boost::multi_array_types::index_range range;
+ array3_::array_view<2>::type view =
+ array3[ indices[1][range(0,2)][range(1,3)] ];
+
+ as2::csv_put(
+ view,
+ 99, 98,
+ 97, 96
+ );
+
+ BOOST_ASSIGN_V2_CHECK(
+ boost::range::equal(
+ as2::csv_deque(
+ view[0][0], view[0][1],
+ view[1][0], view[1][1]
+ ),
+ as2::csv_deque(
+ 99, 98,
+ 97, 96
+ )
+ )
+ );
+
+ }
         // OTHER
         {
             //test_csv_put_cb
@@ -189,10 +270,11 @@
                 range::equal(cb, as2::csv_deque(1, 2, 3) )
             );
 
- as2::csv_put( cb, 4, 5 );
-
             BOOST_ASSIGN_V2_CHECK(
- range::equal(cb, as2::csv_deque(3, 4, 5) )
+ range::equal(
+ cb | as2::delay_csv_put( as2::csv_deque( 4, 5 ) ),
+ as2::csv_deque(3, 4, 5)
+ )
             );
             //]
         }

Modified: sandbox/assign_v2/libs/assign/v2/tutorial.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/tutorial.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/tutorial.cpp 2011-04-06 23:04:08 EDT (Wed, 06 Apr 2011)
@@ -9,10 +9,11 @@
 //////////////////////////////////////////////////////////////////////////////
 #include <assert.h>
 #include <cstddef>
-#include <vector>
 #include <deque>
+#include <list>
 #include <map>
 #include <queue>
+#include <vector>
 #include <boost/assign/v2.hpp>
 #include <boost/array.hpp>
 #include <boost/lambda/lambda.hpp>
@@ -34,10 +35,11 @@
         using namespace boost;
         using namespace assign::v2;
         {
- //[tutorial_assign
+ //[tutorial_assign1
             std::vector<int> numeric( 10 ); iota( numeric, 0 );
             typedef std::string str_; typedef variant< int, str_ > data_;
             array<data_, 16> keypad;
+
             csv_put( keypad
                 , "+", "-", "*", "/", "=", "."
                 , as_arg_list( numeric )
@@ -48,12 +50,18 @@
             //]
         }
         {
- //[tutorial_piping
- std::deque<int> cont;
- range::stable_partition( cont | _csv_put( 0, 1, 2, 3, 4, 5 ), lambda::_1 % 2 );
- //]
- //[tutorial_container_generation
- assert( range::equal( cont, csv_deque(1, 3, 5, 0, 2, 4) ) );
+ //[tutorial_delay_csv_put
+ std::deque<int> source( 6 ), sorted; iota( source, 0 );
+
+ range::stable_partition(
+ sorted | delay_csv_put( source ),
+ lambda::_1 % 2
+ );
+ //]
+ //[tutorial_csv_deque
+ assert(
+ range::equal( sorted, csv_deque(1, 3, 5, 0, 2, 4) )
+ );
             //]
         }
         {
@@ -66,69 +74,75 @@
         }
         {
             //[tutorial_ptr_container
- typedef std::string T; ptr_set<T> assoc;
- T x = "isomer", y = "ephemeral", z = "prosaic";
- /*<<Calls `assoc.insert( new T( t ) )` for [^t = x, y, z]>>*/
- assoc | _csv_put( x, z, y );
+ typedef std::string word_; ptr_set<word_> words;
+ /*<<Calls `assoc.insert( new word_( s ) )` for [^s = "isomer", "ephemeral", "prosaic"]>>*/
+ csv_put( words, "isomer", "ephemeral", "prosaic" );
 
- assert( assoc.count( x ) == 1 );
- assert( assoc.count( z ) == 1 );
+ assert( words.count( "isomer" ) == 1 );
+ assert( words.count( "prosaic" ) == 1 );
             //]
         }
         {
             //[tutorial_chain
- std::vector<int> iota8( 8 );
- for(int i = 0; i < 8; i++){ iota8[i] = 1 + i; }
- array<int, 5> iota5; int six, seven, eight;
+ std::vector<int> source( 8 ); boost::iota( source, 1 );
+
+ array<int, 5> copies; int x, y, z;
             boost::copy(
- iota8,
+ source,
                 boost::begin(
- iota5 | _chain( ref::csv_array( six, seven, eight ) | ref::_get )
+ copies | _chain(
+ ref::csv_array( x, y, z ) | ref::_get
+ )
                 )
             );
 
- assert(
- range::equal( iota5, csv_deque(1, 2, 3, 4, 5) )
- );
- assert( six == 6 );
- assert( seven == 7 );
- assert( eight == 8 );
+ assert( range::equal( copies, csv_deque(1, 2, 3, 4, 5) ) );
+ assert( x == 6 ); assert( y == 7 ); assert( z == 8 );
             //]
         }
         {
- //[tutorial_conversion
- std::queue<int> fifo = converter( csv_deque( 1, 10, 100 ) );
+ //[tutorial_converter
+ typedef std::queue<int> C;
+
+ C fifo = converter( csv_deque( 1, 2, 3 ) );
+ assert( fifo.front() == 1 ); assert( fifo.back() == 3 );
+ //]
 
- assert( fifo.front() == 1 ); assert( fifo.back() == 100 );
+ //[tutorial_convert
+ assert(
+ ( csv_deque( 1, 1, 3 ) | convert<C>() ) < fifo
+ );
             //]
         }
         {
- //[tutorial_data_gen
+ //[tutorial_map
             typedef std::string word_;
             const char x[] = "foo";
             const char y[4] = { 'b', 'a', 'r', '\0' };
             word_ z = "***baz";
             std::map<int, word_> map;
- put( map )/*<<Calls `map.insert( 1, str_( foo, 3 ) )`>>*/( 1, x, 3 )( 2, y )( 3, z, 3, 3 )( 4, "qux");
+ put( map )/*<<Calls `map.insert( 1, str_( foo, 3 ) )`>>*/( 1, x, 3 )( 2, y )( 3, z, 3, 3 )( 4, "qux");
 
             assert( map[1] == "foo" ); assert( map[2] == "bar" );
             assert( map[3] == "baz" ); assert( map[4] == "qux" );
             //]
         }
         {
- //[tutorial_option
- typedef array<int, 10> C; C alternating;
- alternating[0] = -1; alternating[1] = +1;
- alternating[2] = -2;
+ //[tutorial_modifier
+ typedef array<int, 10> C; C series;
+ series[0] = -1; series[1] = +1;
+ series[2] = -2;
 
             C::size_type index = 3;
- (
- put( alternating ) % ( _iterate = lambda::var( index )++ )
- )( +2 )( -3 )( +3 )( -4 )( +4 )( -5 )( +5 );
+ csv_put(
+ series
+ , _iterate = lambda::var( index )++
+ , +2, -3, +3, -4, +4, -5 , +5
+ );
 
             assert(
                 range::equal(
- alternating,
+ series,
                     csv_deque( -1, +1, -2, +2, -3, +3, -4, +4, -5, +5 )
                 )
             );


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