|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r71125 - in sandbox/assign_v2: boost/assign/v2/conversion boost/assign/v2/deque boost/assign/v2/detail boost/assign/v2/detail/traits boost/assign/v2/interpreter boost/assign/v2/option boost/assign/v2/option/modifier boost/assign/v2/put boost/assign/v2/ref/wrapper libs/assign/v2 libs/assign/v2/test libs/assign/v2/test/put libs/assign/v2/test/ref
From: erwann.rogard_at_[hidden]
Date: 2011-04-08 16:51:09
Author: e_r
Date: 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
New Revision: 71125
URL: http://svn.boost.org/trac/boost/changeset/71125
Log:
upd assign_v2
Text files modified:
sandbox/assign_v2/boost/assign/v2/conversion/convert.hpp | 15 +++---
sandbox/assign_v2/boost/assign/v2/conversion/converter.hpp | 11 ++--
sandbox/assign_v2/boost/assign/v2/deque/csv_deque.hpp | 21 ++++----
sandbox/assign_v2/boost/assign/v2/deque/deque.hpp | 93 +++++++++++++++++++++------------------
sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp | 4
sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp | 19 ++++++++
sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp | 4
sandbox/assign_v2/boost/assign/v2/interpreter/data.hpp | 2
sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp | 8 +-
sandbox/assign_v2/boost/assign/v2/option/data.hpp | 16 +++---
sandbox/assign_v2/boost/assign/v2/option/modifier/framework.hpp | 4
sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp | 4
sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp | 88 ++++++++++++++++++-------------------
sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp | 5 +
sandbox/assign_v2/libs/assign/v2/test/conversion.cpp | 20 --------
sandbox/assign_v2/libs/assign/v2/test/deque.cpp | 87 ++++++++++++++++++++++++++-----------
sandbox/assign_v2/libs/assign/v2/test/put/ptr.cpp | 6 +-
sandbox/assign_v2/libs/assign/v2/test/put/put.cpp | 2
sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp | 11 ++++
sandbox/assign_v2/libs/assign/v2/tutorial.cpp | 4
20 files changed, 238 insertions(+), 186 deletions(-)
Modified: sandbox/assign_v2/boost/assign/v2/conversion/convert.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/conversion/convert.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/conversion/convert.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -97,22 +97,23 @@
struct convert/*<-*/
: conversion_aux::convert<C, Arg>
{
-
+//<-
typedef conversion_aux::convert<C> super_t;
+//->
- convert()/*<-*/{}/*->*/
- convert(Arg const& arg)
+ convert()/*<-*/{}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+ convert(Arg const& arg)/*<-*/
: super_t( arg )
- {}
+ {}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
template<typename Arg1>
convert<C, Arg1>
- operator+=(Arg1 const& arg1)
+ operator^(Arg1 const& arg1)/*<-*/
{
return convert<C, Arg1>( arg1 );
- }
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
- }/*->*/;
+ };
//]
}// v2
Modified: sandbox/assign_v2/boost/assign/v2/conversion/converter.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/conversion/converter.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/conversion/converter.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -28,11 +28,11 @@
class converter
{
- typedef boost::iterator_range<
+ /*<-*/typedef boost::iterator_range<
typename boost::range_iterator<
typename boost::add_const<R>::type
>::type
- > source_type;
+ > source_type;/*->*/
public:
@@ -47,14 +47,15 @@
: source_( boost::make_iterator_range( source ) )
{}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+ // Implicit conversion
template<typename C>
- operator C () const/*<-*/
+ operator C() const/*<-*/
{
return this->type<C>();
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
- template<typename C>
- C type()const/*<-*/
+ // Explicit converion
+ template<typename C> C type()const/*<-*/
{
typedef convert<C, Arg> convert_;
return this->source_ | convert_( this->arg_ );
Modified: sandbox/assign_v2/boost/assign/v2/deque/csv_deque.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/deque/csv_deque.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/deque/csv_deque.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -44,16 +44,17 @@
>
{}/*->*/;
- template<typename Os, typename T>
+ template<typename O, typename T>
struct csv_deque_option/*<-*/
: modulo_result<
typename result_of::csv_deque<T>::type,
- Os
+ O
>
{}/*->*/;
}// result_of
+ // Empty
template<typename T>
typename result_of::csv_deque<T>::type
csv_deque()/*<-*/{
@@ -64,10 +65,10 @@
#if BOOST_ASSIGN_V2_ENABLE_CPP0X
//->
template<typename T, typename... Args>
- typename boost::lazy_disable_if<
+ typename /*<-*/boost::lazy_disable_if<
is_option_crtp_cpp0x<T>,
- result_of::csv_deque<T>
- >::type
+ /*->*/result_of::csv_deque<T>/*<-*/
+ >/*->*/::type
csv_deque(T&& t, Args&& ... args)/*<-*/
{
typename result_of::csv_deque<T>::type result;
@@ -76,10 +77,10 @@
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
template<typename T, typename O, typename... Args>
- typename boost::lazy_enable_if<
+ typename /*<-*/boost::lazy_enable_if<
is_option_crtp<O>,
- result_of::csv_deque_option<O, T>
- >::type
+ /*->*/result_of::csv_deque_option<O, T>/*<-*/
+ >/*->*/::type
csv_deque(O const& options, T&& t, Args&& ... args)/*<-*/
{
typedef typename result_of::csv_deque<T>::type before_op_;
@@ -110,9 +111,9 @@
: interpreter_aux::result_of::csv_deque<T>
{}/*->*/;
- template<typename Os, typename T>
+ template<typename O, typename T>
struct csv_deque_option/*<-*/
- : interpreter_aux::result_of::csv_deque_option<Os, T>
+ : interpreter_aux::result_of::csv_deque_option<O, T>
{}/*->*/;
}// result_of
Modified: sandbox/assign_v2/boost/assign/v2/deque/deque.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/deque/deque.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/deque/deque.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -36,38 +36,47 @@
template<typename T>
struct deque_impl{
- typedef /*<-*/std::deque<T>
- BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/
- type;
+ typedef std::deque<T> type;
};
- template<typename T, typename F, typename ModifierTag>
+ template<typename T, typename F, typename MTag>
class deque_interpreter
: public interpreter_crtp<
- typename deque_impl<T>::type, F, ModifierTag, data_tag::value,
- deque_interpreter<T, F, ModifierTag>
+ typename deque_impl<T>::type, F, MTag, data_tag::value,
+ deque_interpreter<T, F, MTag>
>
{
-//<-
typedef typename deque_impl<T>::type impl_;
+ typedef interpreter_aux::interpreter_modifier<MTag> modifier_;
+//<-
typedef impl_ const cimpl_;
typedef interpreter_crtp<
- impl_, F, ModifierTag, data_tag::value, deque_interpreter
+ impl_, F, MTag, data_tag::value, deque_interpreter
> put_crtp_;
-
- typedef interpreter_aux::interpreter_modifier<ModifierTag> modifier_;
//->
+
public:
typedef T value_type;
- typedef /*<-*/typename boost::range_size<impl_>::type BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/size_type;
- typedef /*<-*/typename boost::range_iterator<impl_>::type BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/iterator;
- typedef /*<-*/typename boost::range_iterator<cimpl_>::type BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/const_iterator;
+ typedef /*<-*/typename boost::range_size<impl_>::type
+ BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/size_type;
+ typedef /*<-*/typename boost::range_iterator<impl_>::type
+ BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/iterator;
+ typedef /*<-*/typename boost::range_iterator<cimpl_>::type
+ BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/const_iterator;
+ typedef /*<-*/typename impl_::reference
+ BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/reference;
+ typedef /*<-*/typename impl_::const_reference
+ BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/const_reference;
+ typedef /*<-*/typename impl_::difference_type
+ BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/difference_type;
- // Construct
+ // Constructor
deque_interpreter()/*<-*/
{}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
- explicit deque_interpreter( impl_ const& cont, F const& f, modifier_ const& m )/*<-*/
+ explicit deque_interpreter(
+ impl_ const& cont, F const& f, modifier_ const& m
+ )/*<-*/
: put_crtp_( f, m ), impl( cont )
{}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
@@ -85,10 +94,6 @@
return boost::end( this->impl );
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
- typedef /*<-*/typename impl_::reference BOOST_ASSIGN_V2_IGNORE(/*->*/ unspecified /*<-*/)reference;
- typedef /*<-*/typename impl_::const_reference BOOST_ASSIGN_V2_IGNORE(/*->*/ unspecified /*<-*/)const_reference;
- typedef /*<-*/typename impl_::difference_type BOOST_ASSIGN_V2_IGNORE(/*->*/ unspecified /*<-*/)difference_type;
-
size_type size()const/*<-*/{
return this->container().size();
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
@@ -135,42 +140,41 @@
//->
};
- template<typename T, typename F, typename ModifierTag>
- struct replace_data_generator< deque_interpreter<T, F, ModifierTag> >
+ template<typename T, typename F, typename MTag>
+ struct replace_data_generator< deque_interpreter<T, F, MTag> >
{
template<typename F1>
struct apply{
- typedef /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)deque_interpreter<T, F1, ModifierTag>/*->*/ type;
+ typedef /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)
+ deque_interpreter<T, F1, MTag>/*->*/ type;
};
};
- template<typename T, typename F, typename ModifierTag>
- struct replace_modifier_tag< deque_interpreter<T, F, ModifierTag> >
+ template<typename T, typename F, typename MTag>
+ struct replace_modifier_tag< deque_interpreter<T, F, MTag> >
{
- template<typename ModifierTag1>
+ template<typename MTag1>
struct apply{
- /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)typedef deque_interpreter<T, F, ModifierTag1>/*->*/ type;
+ /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)typedef
+ deque_interpreter<T, F, MTag1>/*->*/ type;
};
};
-//<-
namespace result_of{
template<typename T>
- struct deque
+ struct deque/*<-*/
{
typedef typename boost::remove_cv<T>::type t_;
typedef typename deque_impl<t_>::type impl_;
typedef typename deduce_data_generator<impl_>::type f_;
typedef typename deduce_modifier_tag<impl_>::type modifier_tag_;
typedef deque_interpreter<t_, f_, modifier_tag_> type;
- };
+ }/*->*/;
}// result_of
-}// interpreter_aux
-namespace interpreter_aux{
-//->
+ // Empty
template<typename T>
typename result_of::deque<T>::type
deque( nil_ )/*<-*/
@@ -178,19 +182,9 @@
return typename result_of::deque<T>::type();
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
-}// interpreter_aux
-namespace result_of{
-
- template<typename T>
- struct deque/*<-*/
- : interpreter_aux::result_of::deque<T>
- {}/*->*/;
-
-}// result_of
//<-
#if BOOST_ASSIGN_V2_ENABLE_CPP0X
//->
-namespace interpreter_aux{
template<typename T, typename...Args>
typename result_of::deque<T>::type
@@ -199,11 +193,24 @@
return deque<T>( v2::_nil )( std::forward<Args>(args)... );
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+//<-
+#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
+//->
+
}// interpreter_aux
+
using interpreter_aux::deque;
+
+namespace result_of{
+
+ template<typename T>
+ struct deque/*<-*/
+ : interpreter_aux::result_of::deque<T>
+ {}/*->*/;
+
+}// result_of
//]
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
}// v2
}// assign
}// boost
Modified: sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -28,13 +28,13 @@
struct value/*<-*/{}/*->*/;
}//keyword_aux
- typedef keyword_aux::ignore ignore_;
+ typedef keyword_aux::ignore ignore_;
typedef keyword_aux::element element_;
typedef keyword_aux::key key_;
typedef keyword_aux::map map_;
typedef keyword_aux::nil nil_;
typedef keyword_aux::use_default use_default_;
- typedef keyword_aux::value value_;
+ typedef keyword_aux::value value_;
/*<-*/namespace{/*->*/
const ignore_ _ignore/*<-*/ = ignore_()/*->*/;
const element_ _element/*<-*/ = element_()/*->*/;
Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -26,6 +26,8 @@
namespace boost{
namespace assign{
namespace v2{
+//[syntax_detail_traits_container
+/*<-*/
namespace container_aux{
// HELPER
@@ -98,12 +100,29 @@
{};
}// container_aux
+/*->*/
+
+ template<typename C>
+ struct value_container_element/*<-*/
+ : container_aux::element<C>{}
+ /*->*/;
+
+ template<typename C>
+ struct value_container_key/*<-*/
+ : container_aux::key<C>{}
+ /*->*/;
+
+ template<typename C>
+ struct value_container_mapped/*<-*/
+ : container_aux::mapped<C>{}
+ /*->*/;
template<typename C>
struct value_container_value/*<-*/
: container_aux::value<C>{}
/*->*/;
+//]
}// v2
}// assign
}// boost
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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -136,8 +136,8 @@
template<
typename C // Container,
, typename F // Data generator
- , typename MTag // Modifier tag
- , typename DTag // Data tag
+ , typename MTag // Modifier tag
+ , typename DTag // Data tag
, typename D // Derived
>
class interpreter_crtp
Modified: sandbox/assign_v2/boost/assign/v2/interpreter/data.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/data.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/data.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -19,7 +19,7 @@
namespace boost{
namespace assign{
namespace v2{
-//[syntax_interpreter_data_generator
+//[syntax_interpreter_data
namespace switch_tag{
struct data_generator{};
}// switch_tag
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-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -36,23 +36,23 @@
namespace interpreter_aux{
- template<typename ModifierTag>
+ template<typename MTag>
struct interpreter_modifier
{
// Specialize on Tag to model ConceptModifier
};
- template<typename ModifierTag, typename DataTag, typename C, typename T>
+ template<typename MTag, typename DTag, typename C, typename T>
struct ConceptModifier
{
BOOST_CONCEPT_USAGE(ConceptModifier)
{
- m.impl( cont, t, DataTag() );
+ m.impl( cont, t, DTag() );
}
private:
- static interpreter_aux::interpreter_modifier<ModifierTag>& m;
+ static interpreter_aux::interpreter_modifier<MTag>& m;
static C& cont;
static T t;
};
Modified: sandbox/assign_v2/boost/assign/v2/option/data.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/data.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option/data.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -26,7 +26,7 @@
namespace interpreter_aux{
template<
- typename C // Value or pointer-container
+ typename C // Value or pointer-container
, typename F // Functor or keyword
>
struct data_generator/*<-*/
@@ -85,11 +85,11 @@
}// result_of
// F is a functor or either of the keywors:
- // element_
+ // element_
// key_
// map_
- // use_default_
- // value_
+ // use_default_
+ // value_
template<typename F = ignore_>
struct option_data/*<-*/
: option_crtp<
@@ -158,14 +158,14 @@
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
struct keyword_data
- /*<-*/{
+ {
template<typename F>
- option_data<F> operator=(F const& f)const{
+ option_data<F> operator=(F const& f)const/*<-*/{
return option_data<F>( f );
- }
+ }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
- }/*->*/;
+ };
}// interpreter_aux
namespace{
Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/framework.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/framework.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/framework.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -80,11 +80,11 @@
}// result_of
- template<typename C, typename F, typename ModifierTag, typename DataTag, typename D,
+ template<typename C, typename F, typename MTag, typename DTag, typename D,
typename Keyword, typename Arg>
typename result_of::option_modifier<D, Keyword, Arg>::type
operator%(
- interpreter_crtp<C, F, ModifierTag, DataTag, D> const& lhs,
+ interpreter_crtp<C, F, MTag, DTag, D> const& lhs,
option_modifier<Keyword, Arg> const& rhs
)/*<-*/
{
Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -54,8 +54,8 @@
#define BOOST_ASSIGN_V2_forward t
#endif
//->
- template<typename C, typename T, typename DataTag>
- void impl(C& cont, BOOST_ASSIGN_V2_arg, DataTag tag )const
+ template<typename C, typename T, typename DTag>
+ void impl(C& cont, BOOST_ASSIGN_V2_arg, DTag tag )const
{
size_type m = this->size();\
while(m--) this->inner_.impl( cont, BOOST_ASSIGN_V2_forward, tag );
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-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -28,47 +28,46 @@
namespace v2{
//[syntax_csv_put
namespace interpreter_aux{
-
+/*<-*/
template<typename F>
- struct csv_ready/*<-*/
+ struct csv_ready
: ::boost::mpl::true_
- {}/*->*/;
+ {};
template<typename T, typename K, typename M>
struct csv_ready<
functor_aux::pair<T, K, M>
- > /*<-*/
+ >
: ::boost::mpl::false_
- {}/*->*/;
+ {};
namespace result_of{
template<typename C, typename F, typename MTag, typename DTag>
- struct if_csv_ready/*<-*/
+ struct if_csv_ready
: ::boost::mpl::identity<
put_interpreter<C, F, MTag, DTag>
>
- {}/*->*/;
+ {};
template<typename C, typename F, typename MTag, typename DTag>
- struct else_csv_ready/*<-*/
+ struct else_csv_ready
: result_of::option_data<
put_interpreter<C, F, MTag, DTag>, C, value_
>
- {}/*->*/;
+ {};
template<typename C, typename F, typename MTag, typename DTag>
- struct make_csv_ready/*<-*/
+ struct make_csv_ready
: ::boost::mpl::eval_if<
csv_ready<F>,
if_csv_ready<C, F, MTag, DTag>,
else_csv_ready<C, F, MTag, DTag>
>
- {}/*->*/;
+ {};
}// result_of
-/*<-*/
template<typename C, typename F, typename MTag, typename DTag>
typename result_of::if_csv_ready<C, F, MTag, DTag>::type
make_csv_ready(
@@ -88,30 +87,31 @@
{
return interpreter % ( _data = _value );
}
-/*->*/
+
template<typename C, typename F, typename MTag, typename DTag>
typename result_of::make_csv_ready<C, F, MTag, DTag>::type
make_csv_ready( put_interpreter<C, F, MTag, DTag> const& interpreter)
- /*->*/{
+ {
return make_csv_ready(
interpreter,
typename csv_ready<F>::type()
);
- }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+ }
+/*->*/
//<-
#if BOOST_ASSIGN_V2_ENABLE_CPP0X
//->
template<typename C, typename O, bool is, typename... Args>
- typename boost::enable_if<
+ /*<-*/typename boost::enable_if<
is_option_crtp<O>
- >::type csv_put(
+ >::type BOOST_ASSIGN_V2_IGNORE(/*->*/void /*<-*/)
+ /*->*/csv_put(
C& cont,
option_crtp<O, is> const& crtp,
Args&&... args
- )
- /*<-*/
+ )/*<-*/
{
O const& options = static_cast<O const&>( crtp );
csv(
@@ -123,9 +123,10 @@
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
template<typename C, typename T, typename... Args>
- typename boost::disable_if<
+ /*<-*/typename boost::disable_if<
is_option_crtp_cpp0x<T>
- >::type csv_put( C& cont, T&& t, Args&&... args)/*<-*/
+ >::type BOOST_ASSIGN_V2_IGNORE(/*->*/void /*<-*/)
+ /*->*/csv_put( C& cont, T&& t, Args&&... args)/*<-*/
{
csv(
make_csv_ready( put( cont ) ),
@@ -135,7 +136,7 @@
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
template<typename C>
- void csv_put( C& cont)/*<-*/
+ void csv_put( C& cont )/*<-*/
{
csv(
make_csv_ready( put( cont ) )
@@ -145,21 +146,19 @@
//<-
#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
//->
-
-
- template<typename R, typename Os = empty_list_option>
+ template<typename R, typename O = empty_list_option>
struct delayed_csv_put/*<-*/
- : Os, as_arg_list_adapter<R>
+ : O, as_arg_list_adapter<R>
{
- typedef Os super1_t;
+ typedef O 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)
+ explicit delayed_csv_put(O options, R& r)
: super1_t( options ), super2_t( r )
{}
@@ -178,8 +177,8 @@
}/*->*/;
- template<typename C, typename R, typename Os>
- C& operator|(C& cont, delayed_csv_put<R, Os> const& rhs)/*<-*/
+ template<typename C, typename R, typename O>
+ C& operator|(C& cont, delayed_csv_put<R, O> const& rhs)/*<-*/
{
return rhs.apply( cont );
@@ -187,13 +186,12 @@
namespace result_of{
- template<typename R, typename Os = empty_list_option>
+ template<typename R, typename O = empty_list_option>
struct delay_csv_put/*<-*/
{
- typedef delayed_csv_put<R, Os> type;
+ typedef delayed_csv_put<R, O> type;
}/*->*/;
-
}// result_of
template<typename R>
@@ -203,13 +201,12 @@
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)/*<-*/
+ template<typename O, typename R>
+ typename result_of::delay_csv_put<R const, O>::type
+ delay_csv_put(option_crtp<O> const& options, R const& range)/*<-*/
{
- return delayed_csv_put<R const, Os>(
- static_cast<Os const&>( options ), range
+ return delayed_csv_put<R const, O>(
+ static_cast<O const&>( options ), range
);
}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
@@ -217,19 +214,18 @@
//<-
#if BOOST_ASSIGN_V2_ENABLE_CPP0X
//->
-using interpreter_aux::csv_put;
+ using interpreter_aux::csv_put;
//<-
#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
//->
-
- using interpreter_aux::delay_csv_put;
+ 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>
- {};
+ template<typename R, typename O = empty_list_option_>
+ struct delay_csv_put/*<-*/
+ : interpreter_aux::result_of::delay_csv_put<R, O>
+ {}/*->*/;
}// result_of
//]
Modified: sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -30,9 +30,10 @@
:
public ref::wrapper_crtp< wrapper<ref::assign_tag::copy, T>, T>
{
- typedef T type;
+
+ typedef T type;/*<-*/
- /*<-*/BOOST_STATIC_CONSTANT( bool, is_const = boost::is_const<T>::value );/*->*/
+ BOOST_STATIC_CONSTANT( bool, is_const = boost::is_const<T>::value );/*->*/
wrapper()/*<-*/
{/*TODO or null pointer?*/}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
Modified: sandbox/assign_v2/libs/assign/v2/test/conversion.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/conversion.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/conversion.cpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -43,7 +43,7 @@
// External containers (fully qualified)
{
- //[tutorial_convert
+ //[test_convert
typedef std::stack<int> C;
C lifo; lifo.push( 3 ); lifo.push( 2 ); lifo.push( 1 );
@@ -117,24 +117,6 @@
}
// Boost.Assign.2.0 containers - name lookup
{
- //[test_converter_from_deque
- typedef array<int, 5> C; C const& ar = /*<<Notice unqualified>>*/converter(
- as2::csv_deque( 1, 2, 3, 4, 5 )
- );
-
- BOOST_ASSIGN_V2_CHECK(
- range::equal( ar, as2::csv_deque( 1, 2, 3, 4, 5 ) )
- );
- //]
- }
- {
- //[test_converter_from_ref_array
- std::queue<int> fifo = /*<<Notice unqualified>>*/converter( as2::ref::csv_array( 1, 2, 3, 4, 5 ) );
-
- BOOST_ASSIGN_V2_CHECK( fifo.front() == 1 );
- //]
- }
- {
//[test_converter_multi_array
typedef boost::multi_array<int, 2> array2_;
typedef array2_::size_type size_;
Modified: sandbox/assign_v2/libs/assign/v2/test/deque.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/deque.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/deque.cpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -10,9 +10,11 @@
#include <deque>
#include <string>
#include <utility>
+#include <boost/array.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/assign/v2/detail/config/check.hpp>
+#include <boost/assign/v2/deque/conversion.hpp>
#include <boost/assign/v2/include/csv_deque.hpp>
#include <boost/assign/v2/include/deque.hpp>
#include <boost/range/algorithm/equal.hpp>
@@ -41,37 +43,60 @@
//]
}
{
- //[test_deque_pair
- typedef std::string code_; typedef std::string name_;
- typedef std::pair<code_, name_> T;
- typedef as2::result_of::deque<T>::type C;
-
- C airports1 = as2::deque<T>( as2::_nil );
- BOOST_ASSIGN_V2_CHECK( airports1.empty() );
- airports1("AUH", "Abu Dhabi")("JFK", "New York")("LHR", "London")("PEK", "Beijing");
-
- std::deque<T> benchmark;
- benchmark.push_back( T("AUH", "Abu Dhabi") );
- benchmark.push_back( T("JFK", "New York") );
- benchmark.push_back( T("LHR", "London") );
- benchmark.push_back( T("PEK", "Beijing") );
- BOOST_ASSIGN_V2_CHECK(
- range::equal( benchmark, airports1 )
- );
+ //[test_deque_variadic
+ typedef std::string word_;
+ const char x[] = "foo";
+ const char y[4] = { 'b', 'a', 'r', '\0' };
+ word_ z = "***baz";
+
+ std::deque<word_> benchmark;
+ benchmark.push_back( word_( x, 3 ) );
+ benchmark.push_back( word_( y ) );
+ benchmark.push_back( word_( z, 3, 3 ) );
+ benchmark.push_back( word_( "qux" ) );
+
+ typedef as2::result_of::deque<word_>::type C;
+ C cont1 = as2::deque<word_>( as2::_nil );
+
+ BOOST_ASSIGN_V2_CHECK( cont1.empty() );
+
+ cont1( x, 3 )( y )( z, 3, 3 )( "qux" );
- C airports2 = as2::deque<T>("AUH", "Abu Dhabi")("JFK", "New York")("LHR", "London")("PEK", "Beijing");
- BOOST_ASSIGN_V2_CHECK(
- range::equal( benchmark, airports2 )
- );
+ BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, cont1 ) );
+
+ C cont2 = as2::deque<word_>( x, 3 )( y )( z, 3, 3 )( "qux" );
+
+ BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, cont2 ) );
//]
}
- {
+ {
//[test_csv_deque_str_literal
- typedef as2::result_of::csv_deque<const char[2]>::type C;
+ typedef as2::result_of::csv_deque<const char[2]>::type C1;
+ typedef as2::result_of::csv_deque<std::string>::type C2;
+
+ BOOST_MPL_ASSERT(( is_same<C1, as2::result_of::deque<char*>::type> ));
+ BOOST_MPL_ASSERT(( is_same<C2, as2::result_of::deque<std::string>::type> ));
+
+ C1 deque1 = as2::csv_deque( "x", "y", "z" );
+ C2 deque2 = as2::csv_deque<std::string>( "x", "y", "z" );
+
+ std::deque<std::string> benchmark;
+ benchmark.push_back( "x" );
+ benchmark.push_back( "y" );
+ benchmark.push_back( "z" );
+
+ BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, deque1 ) );
+ BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, deque2 ) );
+ //]
+ }
+ {
+ //[test_csv_deque_str
+ typedef std::string T;
+ typedef as2::result_of::csv_deque<T>::type C;
- BOOST_MPL_ASSERT(( is_same<C, as2::result_of::deque<char*>::type> ));
+ BOOST_MPL_ASSERT(( is_same<C, as2::result_of::deque<std::string>::type> ));
- C deque = as2::csv_deque( "x", "y", "z" );
+ C deque = as2::csv_deque<T>( "x", "y", "z" );
std::deque<std::string> benchmark;
benchmark.push_back( "x" );
@@ -81,7 +106,6 @@
BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, deque ) );
//]
}
-
{
//[test_csv_deque_ints
typedef as2::result_of::csv_deque<int>::type C;
@@ -106,6 +130,17 @@
BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, series2 ) );
//]
}
+ {
+ //[test_csv_deque_converter
+ typedef array<int, 5> C; C const& ar = /*<<Notice unqualified>>*/converter(
+ as2::csv_deque( 1, 2, 3, 4, 5 )
+ );
+
+ BOOST_ASSIGN_V2_CHECK(
+ range::equal( ar, as2::csv_deque( 1, 2, 3, 4, 5 ) )
+ );
+ //]
+ }
}
}// xxx_deque
Modified: sandbox/assign_v2/libs/assign/v2/test/put/ptr.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/ptr.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/ptr.cpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -93,17 +93,17 @@
// SET
{
// Shows that x, y, z can be variadic
- //[test_put_ptr_set
+ //[test_csv_put_ptr_set
typedef std::string T; boost::ptr_set<T> assoc;
T x = "isomer", y = "ephemeral", z = "prosaic";
- /*<<Calls `assoc.insert( new T( t ) )` for `t` [^=] `x`, `y`, and `z`>>*/as2::csv_put( assoc, x, z, y );
+ as2::csv_put( assoc, x, z, y );
BOOST_ASSIGN_V2_CHECK( assoc.count( x ) == 1 );
BOOST_ASSIGN_V2_CHECK( assoc.count( z ) == 1 );
//]
}
{
- //[test_put_ptr_unordered_set
+ //[test_csv_put_ptr_unordered_set
boost::ptr_unordered_set<std::string> set;
as2::csv_put( set, "foo", "bar", "baz" );
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-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -262,7 +262,7 @@
}
// OTHER
{
- //test_csv_put_cb
+ //[test_csv_put_cb
boost::circular_buffer<int> cb(3);
as2::csv_put( cb, 1, 2, 3 );
Modified: sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -7,11 +7,13 @@
// 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 <queue>
#include <vector>
#include <boost/range/begin.hpp>
#include <boost/range/algorithm/copy.hpp>
#include <boost/typeof/typeof.hpp>
#include <boost/assign/v2/detail/config/check.hpp>
+#include <boost/assign/v2/ref/array/conversion.hpp>
#include <boost/assign/v2/include/ref/csv_array.hpp>
#include <boost/assign/v2/ref/wrapper.hpp>
#include <libs/assign/v2/test/ref/csv_array.h>
@@ -36,7 +38,7 @@
as2::ref::csv_array( 1, 10, 100 ),
ar
)
- )/*<<Temporaries destroyed past semicolon>>*/;
+ );
//]
}
{
@@ -90,6 +92,13 @@
BOOST_ASSIGN_V2_CHECK( z == -1 );
//]
}
+ {
+ //[test_ref_csv_array_converter
+ std::queue<int> fifo = /*<<Notice unqualified>>*/converter( as2::ref::csv_array( 1, 2, 3, 4, 5 ) );
+
+ BOOST_ASSIGN_V2_CHECK( fifo.front() == 1 );
+ //]
+ }
}
}// xxx_csv_array
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-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -61,10 +61,10 @@
);
//]
}
- {
+ {
//[tutorial_empty_deque
assert( deque<int>( _nil ).size() == 0 ); // Functor form
- assert( csv_deque<int>().size() == 0 ); // Csv form
+ assert( csv_deque<int>().size() == 0 ); // Csv form
//]
}
{
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