Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r55669 - in sandbox/SOC/2009/fusion: . boost/fusion boost/fusion/algorithm/query/detail boost/fusion/algorithm/transformation boost/fusion/algorithm/transformation/detail boost/fusion/container/list/detail/cons boost/fusion/container/vector/detail boost/fusion/include boost/fusion/iterator boost/fusion/iterator/detail boost/fusion/mpl boost/fusion/sequence/io/detail boost/fusion/support boost/fusion/support/internal boost/fusion/view boost/fusion/view/filter_view/detail boost/fusion/view/iterator_range boost/fusion/view/joint_view/detail boost/fusion/view/repetitive_view boost/fusion/view/repetitive_view/detail boost/fusion/view/reverse_view boost/fusion/view/reverse_view/detail boost/fusion/view/transform_view boost/fusion/view/transform_view/detail boost/fusion/view/zip_view libs/fusion libs/fusion/doc libs/fusion/example/test libs/fusion/test libs/fusion/test/algorithm libs/fusion/test/compile_time libs/fusion/test/sequence
From: mr.chr.schmidt_at_[hidden]
Date: 2009-08-19 18:35:03


Author: cschmidt
Date: 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
New Revision: 55669
URL: http://svn.boost.org/trac/boost/changeset/55669

Log:
repetitive_view
Added:
   sandbox/SOC/2009/fusion/boost/fusion/include/repetetive_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/deref_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/key_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/value_of_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/CMakeLists.txt (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Makefile (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp (contents, props changed)
Removed:
   sandbox/SOC/2009/fusion/libs/fusion/test/CMakeLists.txt
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp | 50 +++++++++++-----------
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp | 8 +--
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp | 90 ++++++++++++++++++++--------------------
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp | 22 ++++++---
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/build_cons.hpp | 22 ++++----
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/iterator/advance.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/advance.hpp | 3
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/distance.hpp | 16 +++---
   sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp | 30 ++++++------
   sandbox/SOC/2009/fusion/boost/fusion/mpl/erase.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/mpl/fusion_iterator.hpp | 6 +-
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/in.hpp | 20 ++++----
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/out.hpp | 20 ++++----
   sandbox/SOC/2009/fusion/boost/fusion/support/category_of.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/as_fusion_element.hpp | 15 +++++
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/result_of.hpp | 32 +++++++++----
   sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_data_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/equal_to_impl.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/filter_view_iterator.hpp | 16 +++---
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/key_of_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/next_impl.hpp | 9 +--
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp | 20 ++++----
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp | 8 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_data_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/equal_to_impl.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/joint_view_iterator.hpp | 22 ++++----
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/key_of_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/next_impl.hpp | 12 ++--
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/advance_impl.hpp | 8 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_impl.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/distance_impl.hpp | 10 ++--
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/equal_to_impl.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/key_of_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/next_impl.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/prior_impl.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/reverse_view_iterator.hpp | 14 +++---
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_impl.hpp | 2
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp | 3 -
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/advance_impl.hpp | 27 ++++--------
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp | 12 ++---
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/distance_impl.hpp | 18 +++----
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/equal_to_impl.hpp | 8 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/next_impl.hpp | 14 +++---
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/prior_impl.hpp | 14 +++---
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_iterator.hpp | 52 +++++++++++------------
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp | 6 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp | 5 +
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp | 22 ++-------
   sandbox/SOC/2009/fusion/build.bat | 30 ++++++++----
   sandbox/SOC/2009/fusion/libs/fusion/doc/support.qbk | 2
   sandbox/SOC/2009/fusion/libs/fusion/example/test/main.cpp | 60 ++++----------------------
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase_key.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_assoc_struct.cpp | 20 ++++----
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_struct.cpp | 10 +--
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_map.cpp | 1
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_set.cpp | 7 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/boost_tuple.cpp | 14 ++---
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/map.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/reverse_view.cpp | 6 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/set.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/std_pair.cpp | 10 +--
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/transform_view.cpp | 6 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_n.cpp | 39 ++++++++--------
   sandbox/SOC/2009/fusion/project-root.jam | 2
   76 files changed, 433 insertions(+), 482 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -27,42 +27,42 @@
 
     namespace detail
     {
- template <typename First, typename Last, typename Pred>
+ template <typename Begin, typename End, typename Pred>
         struct main_find_if;
 
- template <typename First, typename Last, typename Pred>
+ template <typename Begin, typename End, typename Pred>
         struct recursive_find_if
         {
             typedef typename
                 main_find_if<
- typename result_of::next<First>::type
- , Last
+ typename result_of::next<Begin>::type
+ , End
                   , Pred
>::type
             type;
         };
 
- template <typename First, typename Last, typename Pred>
+ template <typename Begin, typename End, typename Pred>
         struct main_find_if
         {
             typedef typename
                 mpl::eval_if<
                     mpl::or_<
- result_of::equal_to<First, Last>
- , mpl::apply1<Pred,First>
+ result_of::equal_to<Begin, End>
+ , mpl::apply1<Pred,Begin>
>
- , mpl::identity<First>
- , recursive_find_if<First, Last, Pred>
+ , mpl::identity<Begin>
+ , recursive_find_if<Begin, End, Pred>
>::type
             type;
         };
 
- template<typename First, typename Last, typename Pred, bool>
+ template<typename Begin, typename End, typename Pred, bool>
         struct choose_find_if;
 
- template<typename First, typename Last, typename Pred>
- struct choose_find_if<First, Last, Pred, false>
- : main_find_if<First, Last, Pred>
+ template<typename Begin, typename End, typename Pred>
+ struct choose_find_if<Begin, End, Pred, false>
+ : main_find_if<Begin, End, Pred>
         {};
 
         template<typename It, typename Pred, int N>
@@ -170,27 +170,27 @@
             typedef It type;
         };
 
- template<typename First, typename Last, typename Pred>
- struct choose_find_if<First, Last, Pred, true>
+ template<typename Begin, typename End, typename Pred>
+ struct choose_find_if<Begin, End, Pred, true>
         {
             typedef typename
                 unrolled_find_if<
- First
+ Begin
                   , Pred
- , result_of::distance<First, Last>::value
+ , result_of::distance<Begin, End>::value
>::type
             type;
         };
 
- template <typename First, typename Last, typename Pred>
+ template <typename Begin, typename End, typename Pred>
         struct static_find_if
         {
             typedef typename
                 choose_find_if<
- First
- , Last
+ Begin
+ , End
                   , Pred
- , traits::is_random_access<First>::type::value
+ , traits::is_random_access<Begin>::type::value
>::type
             type;
 
@@ -205,15 +205,15 @@
             }
         };
 
- template <typename First, typename Last, typename Pred>
+ template <typename Begin, typename End, typename Pred>
         struct static_seq_find_if
- : static_find_if<First, Last, Pred>
+ : static_find_if<Begin, End, Pred>
         {
             template <typename Seq>
- static typename static_find_if<First, Last, Pred>::type
+ static typename static_find_if<Begin, End, Pred>::type
             call(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
             {
- return static_find_if<First, Last, Pred>::call(
+ return static_find_if<Begin, End, Pred>::call(
                         fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
             }
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -10,8 +10,6 @@
 
 #include <boost/fusion/support/internal/result_of.hpp>
 
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/eval_if.hpp>
 #include <boost/type_traits/is_convertible.hpp>
 #include <boost/type_traits/remove_const.hpp>
 
@@ -20,7 +18,7 @@
     template <typename F, typename NewValue>
     struct replace_if_helper
     {
- template<typename Params>
+ template<typename Sig>
         struct result;
 
         template<typename Self, typename U>
@@ -54,14 +52,14 @@
 
         template <typename U>
         U&
- call_impl(U& x, mpl::false_) const
+ call_impl(U& x, mpl::false_ /*is_convertible*/) const
         {
             return x;
         }
 
         template <typename U>
         U&
- call_impl(U& x, mpl::true_) const
+ call_impl(U& x, mpl::true_ /*is_convertible*/) const
         {
             if(f(x))
             {

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -25,36 +25,36 @@
 {
     namespace detail
     {
- template <typename Seq, typename FirstRef>
+ template <typename Seq, typename BeginRef>
         struct compute_erase_last
         {
- typedef typename result_of::end<Seq>::type last_type;
+ typedef typename result_of::end<Seq>::type end_type;
 
             typedef typename
                 mpl::eval_if<
- result_of::equal_to<FirstRef, last_type>
- , mpl::identity<FirstRef>
- , result_of::next<FirstRef>
+ result_of::equal_to<BeginRef, end_type>
+ , mpl::identity<BeginRef>
+ , result_of::next<BeginRef>
>::type
             type;
 
             static type
- call(FirstRef first, mpl::false_)
+ call(BeginRef begin, mpl::false_)
             {
- return fusion::next(first);
+ return fusion::next(begin);
             }
 
             static type
- call(FirstRef first, mpl::true_)
+ call(BeginRef begin, mpl::true_)
             {
- return first;
+ return begin;
             }
 
             static type
- call(FirstRef first)
+ call(BeginRef begin)
             {
- return call(first,
- result_of::equal_to<FirstRef, last_type>());
+ return call(begin,
+ result_of::equal_to<BeginRef, end_type>());
             }
         };
     }
@@ -63,39 +63,39 @@
     {
         template <
             typename Seq
- , typename First
- , typename Last =
+ , typename Begin
+ , typename End =
                 typename detail::compute_erase_last<
                     Seq
- , typename detail::add_lref<First>::type
+ , typename detail::add_lref<Begin>::type
>::type
>
         struct erase
         {
             BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
             BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
- BOOST_FUSION_MPL_ASSERT((traits::is_iterator<First>));
- BOOST_FUSION_MPL_ASSERT((detail::is_in_seq<First, Seq>));
- BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Last>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Begin>));
+ BOOST_FUSION_MPL_ASSERT((detail::is_in_seq<Begin, Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<End>));
             BOOST_FUSION_MPL_ASSERT((
                 detail::is_in_range<
- Last
- , First
+ End
+ , Begin
                   , typename result_of::end<Seq>::type
>));
 
- typedef typename begin<Seq>::type seq_first_type;
- typedef typename end<Seq>::type seq_last_type;
+ typedef typename begin<Seq>::type seq_begin_type;
+ typedef typename end<Seq>::type seq_end_type;
             typedef
                 iterator_range<
- seq_first_type
- , typename detail::identity<First>::type
+ seq_begin_type
+ , typename detail::identity<Begin>::type
>
             left_type;
             typedef
                 iterator_range<
- typename detail::identity<Last>::type
- , seq_last_type
+ typename detail::identity<End>::type
+ , seq_end_type
>
             right_type;
 
@@ -105,21 +105,21 @@
         };
     }
 
- template <typename Seq, typename First, typename Last>
+ template <typename Seq, typename Begin, typename End>
     typename result_of::erase<
         BOOST_FUSION_R_ELSE_CLREF(Seq)
- , First const&
- , Last const&
+ , Begin const&
+ , End const&
>::type
     erase(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
- First const& first,
- Last const& last)
+ Begin const& first,
+ End const& last)
     {
         typedef
             result_of::erase<
                 BOOST_FUSION_R_ELSE_CLREF(Seq)
- , First const&
- , Last const&
+ , Begin const&
+ , End const&
>
         result;
         typedef typename result::left_type left_type;
@@ -137,25 +137,25 @@
                 ));
     }
 
- template <typename Seq, typename First>
- typename result_of::erase<BOOST_FUSION_R_ELSE_CLREF(Seq), First const&>::type
- erase(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, First const& first)
+ template <typename Seq, typename Begin>
+ typename result_of::erase<BOOST_FUSION_R_ELSE_CLREF(Seq), Begin const&>::type
+ erase(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, Begin const& first)
     {
         return erase(
                 BOOST_FUSION_FORWARD(Seq,seq)
               , first
               , detail::compute_erase_last<
                     BOOST_FUSION_R_ELSE_CLREF(Seq)
- , First const&
+ , Begin const&
>::call(first));
     }
 
 #ifdef BOOST_NO_RVALUE_REFERENCES
- template <typename Seq, typename First, typename Last>
- typename result_of::erase<Seq&, First const&, Last const&>::type
- erase(Seq& seq,First const& first,Last const& last)
+ template <typename Seq, typename Begin, typename End>
+ typename result_of::erase<Seq&, Begin const&, End const&>::type
+ erase(Seq& seq,Begin const& first,End const& last)
     {
- typedef result_of::erase<Seq&, First const&, Last const&> result;
+ typedef result_of::erase<Seq&, Begin const&, End const&> result;
         typedef typename result::left_type left_type;
         typedef typename result::right_type right_type;
         typedef typename result::type result_type;
@@ -171,14 +171,14 @@
                 ));
     }
 
- template <typename Seq, typename First>
- typename result_of::erase<Seq&, First const&>::type
- erase(Seq& seq, First const& first)
+ template <typename Seq, typename Begin>
+ typename result_of::erase<Seq&, Begin const&>::type
+ erase(Seq& seq, Begin const& first)
     {
         return erase(
                 seq
               , first
- , detail::compute_erase_last<Seq&, First const&>::call(first));
+ , detail::compute_erase_last<Seq&, Begin const&>::call(first));
     }
 #endif
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -1,3 +1,4 @@
+
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -11,6 +11,7 @@
 #include <boost/fusion/view/transform_view/transform_view.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
 
 #include <boost/preprocessor/empty.hpp>
 
@@ -28,7 +29,13 @@
             BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
             BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
 
- typedef transform_view<Seq1,Seq2,F> type;
+ typedef
+ transform_view<
+ Seq1
+ , Seq2
+ , typename detail::as_fusion_element<F>::type
+ >
+ type;
         };
 
         template <typename Seq, typename F>
@@ -41,7 +48,9 @@
             BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
             BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
 
- typedef transform_view<Seq, F> type;
+ typedef
+ transform_view<Seq, typename detail::as_fusion_element<F>::type>
+ type;
         };
     }
 
@@ -51,7 +60,8 @@
             BOOST_FUSION_R_ELSE_CLREF(Seq)
           , BOOST_FUSION_R_ELSE_CLREF(F)
>::type
- transform(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ transform(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
     {
         return typename
             result_of::transform<
@@ -84,8 +94,7 @@
           , Seq2 SEQ2_CV_REF_MODIFIER\
           , BOOST_FUSION_R_ELSE_CLREF(F)\
>::type\
- transform(\
- Seq1 SEQ1_CV_REF_MODIFIER seq1\
+ transform(Seq1 SEQ1_CV_REF_MODIFIER seq1\
           , Seq2 SEQ2_CV_REF_MODIFIER seq2\
           , BOOST_FUSION_R_ELSE_CLREF(F) f)\
     {\
@@ -94,8 +103,7 @@
                 Seq1 SEQ1_CV_REF_MODIFIER\
               , Seq2 SEQ2_CV_REF_MODIFIER\
               , BOOST_FUSION_R_ELSE_CLREF(F)\
- >::type(\
- BOOST_FUSION_FORWARD(Seq1 SEQ1_CV_REF_MODIFIER,seq1)\
+ >::type(BOOST_FUSION_FORWARD(Seq1 SEQ1_CV_REF_MODIFIER,seq1)\
                   , BOOST_FUSION_FORWARD(Seq2 SEQ2_CV_REF_MODIFIER,seq2)\
                   , BOOST_FUSION_FORWARD(F,f));\
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/build_cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/build_cons.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/build_cons.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -16,39 +16,39 @@
 namespace boost { namespace fusion { namespace detail
 {
     template <
- typename First
- , typename Last
- , bool is_empty = result_of::equal_to<First, Last>::value>
+ typename Begin
+ , typename End
+ , bool is_empty = result_of::equal_to<Begin, End>::value>
     struct build_cons;
 
- template <typename First, typename Last>
- struct build_cons<First, Last, true>
+ template <typename Begin, typename End>
+ struct build_cons<Begin, End, true>
     {
         typedef nil type;
 
         static nil
- call(First const&, Last const&)
+ call(Begin const&, End const&)
         {
             return nil();
         }
     };
 
- template <typename First, typename Last>
- struct build_cons<First, Last, false>
+ template <typename Begin, typename End>
+ struct build_cons<Begin, End, false>
     {
         typedef
- build_cons<typename result_of::next<First>::type, Last>
+ build_cons<typename result_of::next<Begin>::type, End>
         next_build_cons;
 
         typedef
             cons<
- typename result_of::value_of<First>::type
+ typename result_of::value_of<Begin>::type
               , typename next_build_cons::type
>
         type;
 
         static type
- call(First const& f, Last const& l)
+ call(Begin const& f, End const& l)
         {
             return type(
                     fusion::deref(f),

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -9,7 +9,6 @@
 #define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_AT_IMPL_HPP
 
 #include <boost/mpl/at.hpp>
-#include <boost/mpl/eval_if.hpp>
 
 namespace boost { namespace fusion { namespace extension
 {

Added: sandbox/SOC/2009/fusion/boost/fusion/include/repetetive_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/repetetive_view.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ 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_FUSION_INCLUDE_REPETITIVE_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_REPETITIVE_VIEW_HPP
+
+#include <boost/fusion/view/repetitive_view.hpp>
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/iterator/advance.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/iterator/advance.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/advance.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -26,8 +26,8 @@
             struct apply
               : mpl::if_c<
                     (N::value > 0)
- , advance_detail::forward<ItRef, N::value>
- , advance_detail::backward<ItRef, N::value>
+ , detail::forward<ItRef, N::value>
+ , detail::backward<ItRef, N::value>
>::type
             {};
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/advance.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/advance.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/advance.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -15,7 +15,7 @@
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/identity.hpp>
 
-namespace boost { namespace fusion { namespace advance_detail
+namespace boost { namespace fusion { namespace detail
 {
     // Default advance implementation, perform next(it)
     // or prior(it) N times.
@@ -97,7 +97,6 @@
             return call(fusion::prior(it));
         }
     };
-
 }}}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/distance.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/distance.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/distance.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -20,30 +20,30 @@
 namespace boost { namespace fusion { namespace distance_detail
 {
     // Default distance implementation, linear
- // search for the Last iterator.
+ // search for the End iterator.
 
- template <typename First, typename Last>
+ template <typename Begin, typename End>
     struct linear_distance;
 
- template <typename First, typename Last>
+ template <typename Begin, typename End>
     struct next_distance
     {
         typedef typename
             mpl::next<
                 typename linear_distance<
- typename result_of::next<First>::type
- , Last
+ typename result_of::next<Begin>::type
+ , End
>::type
>::type
         type;
     };
 
- template <typename First, typename Last>
+ template <typename Begin, typename End>
     struct linear_distance
       : mpl::eval_if<
- result_of::equal_to<First, Last>
+ result_of::equal_to<Begin, End>
           , mpl::identity<mpl::int_<0> >
- , next_distance<First, Last>
+ , next_distance<Begin, End>
>::type
     {};
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -22,43 +22,43 @@
         template <typename Tag>
         struct distance_impl
         {
- template <typename FirstRef, typename LastRef>
+ template <typename BeginRef, typename EndRef>
             struct apply
- : distance_detail::linear_distance<FirstRef, LastRef>
+ : distance_detail::linear_distance<BeginRef, EndRef>
             {};
         };
 
         template <>
         struct distance_impl<iterator_facade_tag>
         {
- template <typename FirstRef, typename LastRef>
+ template <typename BeginRef, typename EndRef>
             struct apply
- : detail::remove_reference<FirstRef>::type::
- template distance<FirstRef, LastRef>
+ : detail::remove_reference<BeginRef>::type::
+ template distance<BeginRef, EndRef>
             {};
         };
     }
 
     namespace result_of
     {
- template <typename First, typename Last>
+ template <typename Begin, typename End>
         struct distance
- : extension::distance_impl<typename traits::tag_of<First>::type>::
+ : extension::distance_impl<typename traits::tag_of<Begin>::type>::
                 template apply<
- typename detail::add_lref<First>::type
- , typename detail::add_lref<Last>::type
+ typename detail::add_lref<Begin>::type
+ , typename detail::add_lref<End>::type
>::type
         {
- BOOST_FUSION_MPL_ASSERT((traits::is_iterator<First>));
- BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Last>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Begin>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<End>));
         };
     }
 
- template <typename First, typename Last>
- inline typename result_of::distance<First const&, Last const&>::type
- distance(First const& a, Last const& b)
+ template <typename Begin, typename End>
+ inline typename result_of::distance<Begin const&, End const&>::type
+ distance(Begin const& a, End const& b)
     {
- return typename result_of::distance<First const&, Last const&>::type();
+ return typename result_of::distance<Begin const&, End const&>::type();
     }
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/mpl/erase.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/mpl/erase.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/erase.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -20,13 +20,13 @@
     template <>
     struct erase_impl<fusion::fusion_sequence_tag>
     {
- template <typename Seq, typename First, typename Last>
+ template <typename Seq, typename Begin, typename End>
         struct apply
         {
             typedef typename
                 fusion::result_of::convert<
                     typename fusion::traits::tag_of<Seq>::type
- , typename fusion::result_of::erase<Seq, First, Last>::type
+ , typename fusion::result_of::erase<Seq, Begin, End>::type
>::type
             type;
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/mpl/fusion_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/mpl/fusion_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/fusion_iterator.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -55,9 +55,9 @@
         type;
     };
 
- template <typename First, typename Last>
- struct distance<fusion_iterator<First>, fusion_iterator<Last> >
- : fusion::result_of::distance<First, Last>
+ template <typename Begin, typename End>
+ struct distance<fusion_iterator<Begin>, fusion_iterator<End> >
+ : fusion::result_of::distance<Begin, End>
     {};
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/in.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/in.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/in.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -44,20 +44,20 @@
 
     struct read_sequence_loop
     {
- template <typename IS, typename First, typename Last>
+ template <typename IS, typename Begin, typename End>
         static void
- call(IS& is, First const&, Last const&, mpl::true_)
+ call(IS& is, Begin const&, End const&, mpl::true_)
         {
         }
 
- template <typename IS, typename First, typename Last>
+ template <typename IS, typename Begin, typename End>
         static void
- call(IS& is, First const& first, Last const& last, mpl::false_)
+ call(IS& is, Begin const& first, End const& last, mpl::false_)
         {
             typedef typename
                 result_of::equal_to<
- typename result_of::next<First>::type
- , Last
+ typename result_of::next<Begin>::type
+ , End
>::type
             is_last;
 
@@ -66,16 +66,16 @@
             call(is, fusion::next(first), last, is_last());
         }
 
- template <typename IS, typename First, typename Last>
+ template <typename IS, typename Begin, typename End>
         static void
- call(IS& is, First const& first, Last const& last)
+ call(IS& is, Begin const& first, End const& last)
         {
             call(is,
                     first,
                     last,
                     typename result_of::equal_to<
- First const&
- , Last const&
+ Begin const&
+ , End const&
>::type());
         }
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/out.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/out.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/out.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -43,20 +43,20 @@
 
     struct print_sequence_loop
     {
- template <typename OS, typename First, typename Last>
+ template <typename OS, typename Begin, typename End>
         static void
- call(OS& os, First const&, Last const&, mpl::true_)
+ call(OS& os, Begin const&, End const&, mpl::true_)
         {
         }
 
- template <typename OS, typename First, typename Last>
+ template <typename OS, typename Begin, typename End>
         static void
- call(OS& os, First const& first, Last const& last, mpl::false_)
+ call(OS& os, Begin const& first, End const& last, mpl::false_)
         {
             typedef typename
                 result_of::equal_to<
- typename result_of::next<First>::type
- , Last
+ typename result_of::next<Begin>::type
+ , End
>::type
             is_last;
 
@@ -65,16 +65,16 @@
             call(os, fusion::next(first), last, is_last());
         }
 
- template <typename OS, typename First, typename Last>
+ template <typename OS, typename Begin, typename End>
         static void
- call(OS& os, First const& first, Last const& last)
+ call(OS& os, Begin const& first, End const& last)
         {
             call(os,
                     first,
                     last,
                     typename result_of::equal_to<
- First const&
- , Last const&
+ Begin const&
+ , End const&
>::type());
         }
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/category_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/category_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/category_of.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -17,6 +17,7 @@
 
 namespace boost { namespace fusion
 {
+ //TODO necessary?
     struct incrementable_traversal_tag
     {};
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/internal/as_fusion_element.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/internal/as_fusion_element.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/as_fusion_element.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -11,8 +11,11 @@
 
 //TODO cschmidt: rref
 
+#include <boost/fusion/support/internal/result_of.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -32,11 +35,19 @@
         typedef T& type;
     };
 
+ //TODO preserve rvalues?
 #define BOOST_FUSION_CV_REF_SPECIALIZATION(COMBINATION,_)\
     template <typename T>\
     struct as_fusion_element<T COMBINATION>\
- : as_fusion_element<T>\
- {};\
+ {\
+ typedef typename\
+ mpl::eval_if<\
+ detail::is_po_callable<T COMBINATION>\
+ , mpl::identity<T COMBINATION>\
+ , as_fusion_element<T>\
+ >::type\
+ type;\
+ };\
     \
     template <typename T>\
     struct as_fusion_element<reference_wrapper<T> COMBINATION>\

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/internal/result_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/internal/result_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/result_of.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -27,16 +27,6 @@
 
 namespace boost { namespace fusion { namespace detail
 {
-//cschmidt: a pp implementation won't be worth the effort
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
- template<typename FRef>
- struct is_preevaluable
- : mpl::false_
- {};
-
- template<typename FRef>
- struct preevaluate;
-#else
     //cschmidt: These metafunction needs to handle
     //T()
     //T(&)()
@@ -59,7 +49,7 @@
     //& -> &&
 
     template<typename FRef>
- struct is_preevaluable
+ struct is_po_callable_impl
     {
          typedef typename
              remove_pointer<
@@ -76,6 +66,26 @@
     };
 
     template<typename FRef>
+ struct is_po_callable
+ : is_po_callable_impl<FRef>::type
+ {};
+
+//cschmidt: a pp implementation won't be worth the effort
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ template<typename FRef>
+ struct is_preevaluable
+ : mpl::false_
+ {};
+
+ template<typename FRef>
+ struct preevaluate;
+#else
+ template<typename FRef>
+ struct is_preevaluable
+ : is_po_callable<FRef>
+ {};
+
+ template<typename FRef>
     struct preevaluate_impl;
 
     template<typename Result,typename... Args>

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -93,7 +93,7 @@
         template<typename Pair>
         struct first
         {
- typedef typename Pair::first_type type;
+ typedef typename Pair::begin_type type;
         };
 
         template<typename Pair>

Modified: sandbox/SOC/2009/fusion/boost/fusion/view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -11,6 +11,7 @@
 #include <boost/fusion/view/filter_view.hpp>
 #include <boost/fusion/view/iterator_range.hpp>
 #include <boost/fusion/view/joint_view.hpp>
+#include <boost/fusion/view/repetitive_view.hpp>
 #include <boost/fusion/view/reverse_view.hpp>
 #include <boost/fusion/view/single_view.hpp>
 #include <boost/fusion/view/transform_view.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_data_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_data_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -21,7 +21,7 @@
         {
             typedef typename
                 result_of::deref_data<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::begin_type
>::type
             type;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -25,7 +25,7 @@
                 result_of::deref<
                     typename detail::remove_reference<
                         ItRef
- >::type::first_type
+ >::type::begin_type
>::type
             type;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/equal_to_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/equal_to_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/equal_to_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -20,8 +20,8 @@
         template<typename It1Ref, typename It2Ref>
         struct apply
           : result_of::equal_to<
- typename detail::remove_reference<It1Ref>::type::first_type
- , typename detail::remove_reference<It2Ref>::type::first_type
+ typename detail::remove_reference<It1Ref>::type::begin_type
+ , typename detail::remove_reference<It2Ref>::type::begin_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/filter_view_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/filter_view_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/filter_view_iterator.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -22,23 +22,23 @@
     struct filter_view_iterator_tag;
     struct forward_traversal_tag;
 
- template <typename First, typename Last, typename Pred>
+ template <typename Begin, typename End, typename Pred>
     struct filter_iterator
- : iterator_base<filter_iterator<First, Last, Pred> >
+ : iterator_base<filter_iterator<Begin, End, Pred> >
     {
         typedef Pred pred_type;
         typedef
             detail::static_find_if<
- First
- , Last
+ Begin
+ , End
               , mpl::bind1<
                     typename mpl::lambda<Pred>::type
                   , mpl::bind1<mpl::quote1<result_of::value_of>,mpl::_1>
>
>
         filter;
- typedef typename filter::type first_type;
- typedef Last last_type;
+ typedef typename filter::type begin_type;
+ typedef End end_type;
 
         typedef filter_view_iterator_tag fusion_tag;
         typedef forward_traversal_tag category;
@@ -48,7 +48,7 @@
           : first(BOOST_FUSION_FORWARD(OtherIt,it).first)
         {}
 
- filter_iterator(First const& first,int)
+ filter_iterator(Begin const& first,int)
           : first(filter::call(first))
         {}
 
@@ -60,7 +60,7 @@
             return *this;
         }
 
- first_type first;
+ begin_type first;
     };
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/key_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/key_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/key_of_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -19,7 +19,7 @@
         template <typename ItRef>
         struct apply
           : result_of::key_of<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::begin_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/next_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -10,9 +10,6 @@
 
 #include <boost/fusion/algorithm/query/detail/find_if.hpp>
 
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-
 namespace boost { namespace fusion { namespace extension
 {
     template <typename Tag>
@@ -27,8 +24,8 @@
             typedef typename detail::remove_reference<ItRef>::type it;
             typedef typename
                 detail::static_find_if<
- typename result_of::next<typename it::first_type>::type
- , typename it::last_type
+ typename result_of::next<typename it::begin_type>::type
+ , typename it::end_type
                   , mpl::bind1<
                         typename mpl::lambda<typename it::pred_type>::type
                       , mpl::bind1<mpl::quote1<result_of::value_of>,mpl::_1>
@@ -39,7 +36,7 @@
             typedef
                 filter_iterator<
                     typename filter::type
- , typename it::last_type
+ , typename it::end_type
                   , typename it::pred_type
>
             type;

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -19,7 +19,7 @@
         template <typename ItRef>
         struct apply
           : result_of::value_of_data<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::begin_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -21,7 +21,7 @@
         template <typename ItRef>
         struct apply
           : result_of::value_of<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::begin_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -33,19 +33,19 @@
     struct iterator_range_tag;
     struct fusion_sequence_tag;
 
- template <typename First, typename Last>
+ template <typename Begin, typename End>
     struct iterator_range
- : sequence_base<iterator_range<First, Last> >
+ : sequence_base<iterator_range<Begin, End> >
     {
- BOOST_FUSION_MPL_ASSERT((traits::is_iterator<First>));
- BOOST_FUSION_MPL_ASSERT((traits::is_forward<First>));
- BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Last>));
- BOOST_FUSION_MPL_ASSERT((traits::is_forward<Last>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Begin>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Begin>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<End>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<End>));
 
- typedef First begin_type;
- typedef Last end_type;
+ typedef Begin begin_type;
+ typedef End end_type;
 
- typedef typename traits::category_of<First>::type category;
+ typedef typename traits::category_of<Begin>::type category;
         typedef typename result_of::distance<begin_type, end_type>::type size;
         typedef iterator_range_tag fusion_tag;
         typedef fusion_sequence_tag tag;
@@ -57,7 +57,7 @@
           , last(range.last)
         {}
 
- iterator_range(First const& first, Last const& last)
+ iterator_range(Begin const& first, End const& last)
           : first(first)
           , last(last)
         {}

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -28,22 +28,22 @@
             typedef typename detail::remove_reference<SeqRef>::type seq;
             typedef typename
                 result_of::begin<typename seq::seq1_type>::type
- first_type;
+ begin_type;
             typedef typename
                 result_of::end<typename seq::seq1_type>::type
- last_type;
+ end_type;
             typedef typename
                 result_of::begin<typename seq::seq2_type>::type
             concat_type;
             typedef typename
- result_of::equal_to<first_type, last_type>::type
+ result_of::equal_to<begin_type, end_type>::type
             equal_to;
 
             typedef typename
                 mpl::if_<
                     equal_to
                   , concat_iterator<concat_type>
- , joint_view_iterator<first_type, last_type, concat_type>
+ , joint_view_iterator<begin_type, end_type, concat_type>
>::type
             type;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_data_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_data_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -21,7 +21,7 @@
         {
             typedef typename
                 result_of::deref_data<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::begin_type
>::type
             type;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -25,7 +25,7 @@
                 result_of::deref<
                     typename detail::remove_reference<
                         ItRef
- >::type::first_type
+ >::type::begin_type
>::type
             type;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/equal_to_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/equal_to_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/equal_to_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -21,8 +21,8 @@
         template<typename It1, typename It2>
         struct same_joint_view_iterator
           : result_of::equal_to<
- typename It1::first_type
- , typename It2::first_type
+ typename It1::begin_type
+ , typename It2::begin_type
>
         {
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/joint_view_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/joint_view_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/joint_view_iterator.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -17,41 +17,41 @@
     struct concat_iterator_tag;
     struct forward_traversal_tag;
 
- template <typename First, typename Last, typename Concat>
+ template <typename Begin, typename End, typename Concat>
     struct joint_view_iterator
- : iterator_base<joint_view_iterator<First, Last, Concat> >
+ : iterator_base<joint_view_iterator<Begin, End, Concat> >
     {
         typedef joint_view_iterator_tag fusion_tag;
         typedef forward_traversal_tag category;
 
- typedef First first_type;
- typedef Last last_type;
+ typedef Begin begin_type;
+ typedef End end_type;
         typedef Concat concat_type;
 
- joint_view_iterator(First const& first, Concat const& concat)
+ joint_view_iterator(Begin const& first, Concat const& concat)
           : first(first)
           , concat(concat)
         {}
 
- first_type first;
+ begin_type first;
         concat_type concat;
     };
 
- template <typename First>
+ template <typename Begin>
     struct concat_iterator
- : iterator_base<concat_iterator<First> >
+ : iterator_base<concat_iterator<Begin> >
     {
- typedef First first_type;
+ typedef Begin begin_type;
 
         typedef concat_iterator_tag fusion_tag;
         typedef forward_traversal_tag category;
 
         explicit
- concat_iterator(First const& first)
+ concat_iterator(Begin const& first)
           : first(first)
         {}
 
- first_type first;
+ begin_type first;
     };
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/key_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/key_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/key_of_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -19,7 +19,7 @@
         template <typename ItRef>
         struct apply
           : result_of::key_of<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::begin_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/next_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -25,19 +25,19 @@
         {
             typedef typename detail::remove_reference<ItRef>::type it;
 
- typedef typename it::first_type first_type;
- typedef typename it::last_type last_type;
+ typedef typename it::begin_type begin_type;
+ typedef typename it::end_type end_type;
             typedef typename it::concat_type concat_type;
- typedef typename result_of::next<first_type>::type next_type;
+ typedef typename result_of::next<begin_type>::type next_type;
             typedef typename
- result_of::equal_to<next_type, last_type>::type
+ result_of::equal_to<next_type, end_type>::type
             equal_to;
 
             typedef typename
                 mpl::if_<
                     equal_to
                   , concat_iterator<concat_type>
- , joint_view_iterator<next_type, last_type, concat_type>
+ , joint_view_iterator<next_type, end_type, concat_type>
>::type
             type;
 
@@ -72,7 +72,7 @@
                     typename result_of::next<
                         typename detail::remove_reference<
                             ItRef
- >::type::first_type
+ >::type::begin_type
>::type
>
             type;

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -19,7 +19,7 @@
         template <typename ItRef>
         struct apply
           : result_of::value_of_data<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::begin_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -21,7 +21,7 @@
         template <typename ItRef>
         struct apply
           : result_of::value_of<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::begin_type
>
         {};
     };

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ Copyright (c) 2007 Tobias Schwinger
+
+ 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_FUSION_VIEW_REPETITIVE_VIEW_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_HPP
+
+#include <boost/fusion/view/repetitive_view/repetitive_view.hpp>
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/advance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/advance_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,105 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_ADVANCE_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_ADVANCE_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/advance.hpp>
+
+#include <boost/mpl/modulus.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/mpl/or.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template<
+ typename ItRef
+ , typename It
+ , typename N
+ , bool /*ReuseOldIterator*/=
+ mpl::or_<
+ result_of::empty<typename It::seq_type>
+ , mpl::less<
+ mpl::plus<typename It::index, N>
+ , result_of::size<typename It::seq_type>
+ >
+ >::value /*true*/
+ >
+ struct get_cyclic_next_iterator
+ {
+ typedef typename
+ result_of::advance<typename It::it_type, N>::type
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return fusion::advance<N>(it.it);
+ }
+ };
+
+ template<typename ItRef, typename It, typename N>
+ struct get_cyclic_next_iterator<ItRef,It,N,/*ReuseOldIterator*/false>
+ {
+ typedef
+ mpl::modulus<
+ mpl::plus<typename It::index, N>
+ , result_of::size<typename It::seq_type>
+ >
+ real_n;
+
+ typedef typename
+ result_of::advance<
+ typename result_of::begin<typename It::seq_type>::type
+ , real_n
+ >::type
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return fusion::advance<real_n>(begin(it.seq));
+ }
+ };
+ }
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct advance_impl;
+
+ template<>
+ struct advance_impl<repetitive_view_iterator_tag>
+ {
+ template<typename ItRef, typename N>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+ typedef detail::get_cyclic_next_iterator<ItRef, it, N> gen;
+
+ typedef
+ repetitive_view_iterator<
+ typename it::seq_type
+ , typename gen::type
+ , mpl::plus<typename it::index, N>::value
+ >
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return type(it.seq,gen::call(it));
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,41 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_BEGIN_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<repetitive_view_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<SeqRef>::type seq;
+
+ typedef
+ repetitive_view_iterator<
+ typename seq::seq_type
+ , typename result_of::begin<seq>::type
+ , 0
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(fusion::begin(seq.seq.get()));
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/deref_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/deref_data_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,37 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_DEREF_DATA_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_DEREF_DATA_IMPL_HPP
+
+#include <boost/fusion/iterator/deref_data.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_data_impl;
+
+ template <>
+ struct deref_data_impl<repetitive_view_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename
+ result_of::deref_data<
+ typename detail::remove_reference<ItRef>::type::it_type
+ >::type
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return deref_data(it.first);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/deref_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,42 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_DEREF_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_DEREF_IMPL_HPP
+
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<repetitive_view_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename
+ result_of::deref<
+ typename result_of::prior<
+ typename detail::remove_reference<
+ ItRef
+ >::type::it_type
+ >::type
+ >::type
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return fusion::deref(fusion::prior(it.first));
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/distance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/distance_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,36 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_DISTANCE_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_DISTANCE_IMPL_HPP
+
+#include <boost/mpl/minus.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct distance_impl;
+
+ template<>
+ struct distance_impl<repetitive_view_iterator_tag>
+ {
+ template<typename BeginRef, typename EndRef>
+ struct apply
+ {
+ typedef
+ mpl::minus<
+ typename detail::remove_reference<
+ BeginRef
+ >::type::index
+ , typename detail::remove_reference<
+ EndRef
+ >::type::index
+ >
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,124 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_END_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/iterator/detail/advance.hpp>
+
+#include <boost/mpl/modulus.hpp>
+#include <boost/mpl/negate.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/not.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template<
+ typename SeqRef
+ , typename MaxIndex
+ , bool /*IsEmptyOrForwardOnly*/=
+ mpl::or_<
+ result_of::empty<SeqRef>
+ , mpl::not_<traits::is_bidirectional<SeqRef> >
+ >::type/*false*/
+ >
+ struct get_real_end_it
+ {
+ typedef typename result_of::end<SeqRef>::type seq_end;
+ typedef
+ mpl::modulus<MaxIndex, result_of::size<SeqRef> >
+ backwards_n;
+
+ typedef typename
+ mpl::eval_if<
+ traits::is_random_access<SeqRef>
+ , result_of::advance<seq_end, mpl::negate<backwards_n> >
+ , detail::backward<seq_end, backwards_n::value>
+ >::type
+ type;
+
+ static type
+ call_impl(SeqRef seq, mpl::true_ /*is_random_access*/)
+ {
+ return fusion::advance<mpl::negate<backwards_n> >(
+ fusion::end(seq));
+ }
+
+ static type
+ call_impl(SeqRef seq, mpl::false_ /*is_random_access*/)
+ {
+ return detail::backward<seq_end, backwards_n::value>::call(
+ fusion::end(seq));
+ }
+
+ static type
+ call(SeqRef seq)
+ {
+ return call_impl(seq,
+ typename traits::is_random_access<SeqRef>::type());
+ }
+ };
+
+ template<typename SeqRef, typename MaxIndex>
+ struct get_real_end_it<SeqRef, MaxIndex, /*IsEmptyOrForwardOnly*/true>
+ {
+ typedef typename
+ result_of::end<
+ typename detail::remove_reference<SeqRef>::type::seq_type
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return fusion::end(seq);
+ }
+ };
+ }
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<repetitive_view_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<SeqRef>::type seq;
+ typedef
+ detail::get_real_end_it<
+ typename seq::seq_type
+ , typename seq::size
+ >
+ gen;
+
+ typedef
+ repetitive_view_iterator<
+ typename seq::seq_type
+ , typename gen::type
+ , seq::size::value
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(gen::call(seq.seq.get()));
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/equal_to_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/equal_to_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,29 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_EQUAL_TO_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_EQUAL_TO_IMPL_HPP
+
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct equal_to_impl;
+
+ template<>
+ struct equal_to_impl<repetitive_view_iterator_tag>
+ {
+ template<typename It1Ref, typename It2Ref>
+ struct apply
+ : is_same<
+ typename detail::remove_reference<It1Ref>::type::it_type
+ , typename detail::remove_reference<It2Ref>::type::it_type
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/key_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/key_of_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,28 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_KEY_OF_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_KEY_OF_IMPL_HPP
+
+#include <boost/fusion/iterator/key_of.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct key_of_impl;
+
+ template <>
+ struct key_of_impl<repetitive_view_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : result_of::key_of<
+ typename detail::remove_reference<ItRef>::type::it_type
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,69 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_NEXT_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_NEXT_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/next.hpp>
+#include <boost/mpl/equal_to.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <>
+ struct next_impl<repetitive_view_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+ typedef typename
+ detail::remove_reference<typename it::seq_type>::seq_type
+ real_seq_type;
+ typedef
+ mpl::equal_to<
+ mpl::next<typename it::index>
+ , result_of::size<real_seq_type>
+ >
+ need_begin_it;
+
+ typedef
+ repetitive_view_iterator<
+ typename it::seq_type
+ , typename mpl::eval_if<
+ need_begin_it
+ , result_of::begin<real_seq_type>
+ , result_of::prior<typename it::it>
+ >::type
+ , mpl::next<typename it::index>::value
+ >
+ type;
+
+ static type
+ call_impl(ItRef it, mpl::true_ /*need_begin_it*/)
+ {
+ return type(it.seq,fusion::begin(it.seq.seq.get()));
+ }
+
+ static type
+ call_impl(ItRef it, mpl::false_ /*need_begin_it*/)
+ {
+ return type(it.seq,fusion::next(it.it));
+ }
+
+ static type
+ call(ItRef it)
+ {
+ return call_impl(it,typename need_begin_it::type());
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,62 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_PRIOR_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_PRIOR_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/next.hpp>
+#include <boost/mpl/equal_to.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <>
+ struct prior_impl<repetitive_view_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+ typedef typename
+ detail::remove_reference<typename it::seq_type>::seq_type
+ real_seq_type;
+
+ typedef
+ repetitive_view_iterator<
+ typename it::seq_type
+ , typename mpl::eval_if<
+ typename it::index
+ , result_of::prior<typename it::it>
+ , result_of::end<real_seq_type>
+ >::type
+ , mpl::next<typename it::index>::value
+ >
+ type;
+
+ static type
+ call_impl(ItRef it, mpl::true_ /*need_end_it*/)
+ {
+ return type(it.seq,fusion::end(it.seq.seq.get()));
+ }
+
+ static type
+ call_impl(ItRef it, mpl::false_ /*need_end_it*/)
+ {
+ return type(it.seq,fusion::prior(it.it));
+ }
+
+ static type
+ call(ItRef it)
+ {
+ return call_impl(it,mpl::bool_<it::index::value>());
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_fwd.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,14 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_REPETITIVE_VIEW_FWD_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_REPETITIVE_VIEW_FWD_HPP
+
+namespace boost { namespace fusion
+{
+ struct repetitive_view_tag;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,41 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_REPETITIVE_VIEW_ITERATOR_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_REPETITIVE_VIEW_ITERATOR_HPP
+
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ struct repetitive_view_iterator_tag;
+
+ template<
+ typename SeqRef
+ , typename It
+ , int Index
+ >
+ struct repetitive_view_iterator
+ : iterator_base<repetitive_view_iterator<SeqRef, It, Index> >
+ {
+ typedef SeqRef seq_type;
+ typedef It it_type;
+ typedef mpl::int_<Index> index;
+
+ typedef repetitive_view_iterator_tag fusion_tag;
+ typedef typename traits::category_of<It>::type category;
+
+ repetitive_view_iterator(It const& it)
+ : it(it)
+ {}
+
+ It it;
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/value_of_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/value_of_data_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,28 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP
+
+#include <boost/fusion/iterator/value_of_data.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_data_impl;
+
+ template <>
+ struct value_of_data_impl<repetitive_view_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : result_of::value_of_data<
+ typename detail::remove_reference<ItRef>::type::it_type
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,36 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_VALUE_OF_IMPL_HPP
+
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<repetitive_view_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename
+ result_of::value_of<
+ typename result_of::prior<
+ typename detail::remove_reference<
+ ItRef
+ >::type::it_type
+ >::type
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,92 @@
+// Copyright Christopher Schmidt 2009.
+// 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_FUSION_VIEW_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP
+#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP
+
+//TODO doc/testcase/zip_view testcase
+
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/view/detail/view_storage.hpp>
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/integer_traits.hpp>
+
+#include <boost/fusion/view/repetitive_view/detail/repetitive_view_fwd.hpp>
+#include <boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp>
+#include <boost/fusion/view/repetitive_view/detail/begin_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/end_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/deref_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/next_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/prior_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/advance_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/distance_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/value_of_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/equal_to_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/deref_data_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/key_of_impl.hpp>
+#include <boost/fusion/view/repetitive_view/detail/value_of_data_impl.hpp>
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+
+ template<typename Seq>
+ struct repetitive_view
+ : sequence_base<repetitive_view<Seq> >
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+
+ typedef detail::view_storage<Seq> storage_type;
+ typedef typename storage_type::type seq_type;
+
+ typedef typename traits::category_of<seq_type>::type category;
+ typedef mpl::int_<integer_traits<int>::const_max> size;
+ typedef reverse_view_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::true_ is_view;
+
+#define BOOST_FUSION_REPETITIVE_VIEW_CTOR(COMBINATION,_)\
+ template<typename OtherSeq>\
+ repetitive_view(repetitive_view<OtherSeq> COMBINATION view)\
+ : seq(BOOST_FUSION_FORWARD(\
+ repetitive_view<OtherSeq> COMBINATION,view).seq)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_REPETITIVE_VIEW_CTOR,_)
+
+#undef BOOST_FUSION_REPETITIVE_VIEW_CTOR
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ explicit
+ repetitive_view(typename storage_type::call_param seq)
+ : seq(seq)
+ {}
+#else
+ template<typename OtherSeq>
+ explicit
+ repetitive_view(OtherSeq&& seq)
+ : seq(std::forward<OtherSeq>(seq))
+ {}
+#endif
+
+ template<typename OtherRepetitiveView>
+ repetitive_view&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherRepetitiveView) other_view)
+ {
+ seq=BOOST_FUSION_FORWARD(OtherRepetitiveView,other_view).seq;
+ return *this;
+ }
+
+ detail::view_storage<Seq> seq;
+ };
+
+}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/advance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/advance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/advance_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -20,17 +20,17 @@
     template<>
     struct advance_impl<reverse_view_iterator_tag>
     {
- template<typename ItRef, typename Dist>
+ template<typename ItRef, typename N>
         struct apply
         {
- typedef typename mpl::negate<Dist>::type neg_dist;
+ typedef typename mpl::negate<N>::type neg_dist;
 
             typedef
                 reverse_view_iterator<
                     typename result_of::advance<
                         typename detail::remove_reference<
                             ItRef
- >::type::first_type
+ >::type::it_type
                       , neg_dist
>::type
>
@@ -39,7 +39,7 @@
             static type
             call(ItRef it)
             {
- return type(boost::fusion::advance<neg_dist>(it.first));
+ return type(fusion::advance<neg_dist>(it.it));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -21,7 +21,7 @@
         {
             typedef typename
                 result_of::deref_data<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::it_type
>::type
             type;
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -27,7 +27,7 @@
                     typename result_of::prior<
                         typename detail::remove_reference<
                             ItRef
- >::type::first_type
+ >::type::it_type
>::type
>::type
             type;
@@ -35,7 +35,7 @@
             static type
             call(ItRef it)
             {
- return fusion::deref(fusion::prior(it.first));
+ return fusion::deref(fusion::prior(it.it));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/distance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/distance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/distance_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -19,17 +19,17 @@
     template<>
     struct distance_impl<reverse_view_iterator_tag>
     {
- template<typename FirstRef, typename LastRef>
+ template<typename BeginRef, typename EndRef>
         struct apply
         {
             typedef typename
                 result_of::distance<
                     typename detail::remove_reference<
- FirstRef
- >::type::first_type
+ BeginRef
+ >::type::it_type
                   , typename detail::remove_reference<
- LastRef
- >::type::first_type
+ EndRef
+ >::type::it_type
>::type
             type;
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/equal_to_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/equal_to_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/equal_to_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -22,8 +22,8 @@
         template<typename It1Ref, typename It2Ref>
         struct apply
           : is_same<
- typename detail::remove_reference<It1Ref>::type::first_type
- , typename detail::remove_reference<It2Ref>::type::first_type
+ typename detail::remove_reference<It1Ref>::type::it_type
+ , typename detail::remove_reference<It2Ref>::type::it_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/key_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/key_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/key_of_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -19,7 +19,7 @@
         template <typename ItRef>
         struct apply
           : result_of::key_of<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::it_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/next_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -23,7 +23,7 @@
                     typename result_of::prior<
                         typename detail::remove_reference<
                             ItRef
- >::type::first_type
+ >::type::it_type
>::type
>
             type;
@@ -31,7 +31,7 @@
             static type
             call(ItRef it)
             {
- return type(fusion::prior(it.first));
+ return type(fusion::prior(it.it));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/prior_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/prior_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/prior_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -23,7 +23,7 @@
                     typename result_of::next<
                         typename detail::remove_reference<
                             ItRef
- >::type::first_type
+ >::type::it_type
>::type
>
             type;
@@ -31,7 +31,7 @@
             static type
             call(ItRef it)
             {
- return type(next(it.first));
+ return type(fusion::next(it.it));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/reverse_view_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/reverse_view_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/reverse_view_iterator.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -15,20 +15,20 @@
 {
     struct reverse_view_iterator_tag;
 
- template <typename First>
+ template <typename It>
     struct reverse_view_iterator
- : iterator_base<reverse_view_iterator<First> >
+ : iterator_base<reverse_view_iterator<It> >
     {
- typedef First first_type;
+ typedef It it_type;
 
         typedef reverse_view_iterator_tag fusion_tag;
- typedef typename traits::category_of<first_type>::type category;
+ typedef typename traits::category_of<it_type>::type category;
 
- reverse_view_iterator(First const& first)
- : first(first)
+ reverse_view_iterator(It const& it)
+ : it(it)
         {}
 
- first_type first;
+ it_type it;
     };
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -19,7 +19,7 @@
         template <typename ItRef>
         struct apply
           : result_of::value_of_data<
- typename detail::remove_reference<ItRef>::type::first_type
+ typename detail::remove_reference<ItRef>::type::it_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -27,7 +27,7 @@
                     typename result_of::prior<
                         typename detail::remove_reference<
                             ItRef
- >::type::first_type
+ >::type::it_type
>::type
>::type
             type;

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -8,13 +8,10 @@
 #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_REVERSE_VIEW_HPP
 #define BOOST_FUSION_VIEW_REVERSE_VIEW_REVERSE_VIEW_HPP
 
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/category_of.hpp>
 #include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/category_of.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
 #include <boost/fusion/view/detail/view_storage.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/advance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/advance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/advance_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -20,7 +20,7 @@
     template<>
     struct advance_impl<transform_view_iterator_tag>
     {
- template<typename ItRef, typename Dist>
+ template<typename ItRef, typename N>
         struct apply
         {
             typedef typename
@@ -29,10 +29,7 @@
 
             typedef
                 transform_view_iterator<
- typename result_of::advance<
- typename it::first_type
- , Dist
- >::type
+ typename result_of::advance<typename it::it_type, N>::type
                   , typename it::transform_type
>
             type;
@@ -40,7 +37,7 @@
             static type
             call(ItRef it)
             {
- return type(boost::fusion::advance<Dist>(it.first), *it.f);
+ return type(boost::fusion::advance<N>(it.it), *it.f);
             }
         };
     };
@@ -49,7 +46,7 @@
     template<>
     struct advance_impl<transform_view_iterator2_tag>
     {
- template<typename ItRef, typename Dist>
+ template<typename ItRef, typename N>
         struct apply
         {
             typedef typename
@@ -58,14 +55,8 @@
 
             typedef
                 transform_view_iterator2<
- typename result_of::advance<
- typename it::first1_type
- , Dist
- >::type
- , typename result_of::advance<
- typename it::first2_type
- , Dist
- >::type
+ typename result_of::advance<typename it::it1_type, N>::type
+ , typename result_of::advance<typename it::it2_type, N>::type
                   , typename it::transform_type
>
             type;
@@ -73,9 +64,9 @@
             static type
             call(ItRef it)
             {
- return type(boost::fusion::advance<Dist>(it.first1)
- , boost::fusion::advance<Dist>(it.first2)
- , it.f);
+ return type(boost::fusion::advance<N>(it.it1),
+ boost::fusion::advance<N>(it.it2),
+ it.f);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -33,7 +33,7 @@
                     typename detail::get_func_base<
                         typename it::transform_type
>::type(
- typename result_of::deref<typename it::first_type>::type
+ typename result_of::deref<typename it::it_type>::type
                     )
>::type
             type;
@@ -41,7 +41,7 @@
             static type
             call(ItRef it)
             {
- return (*it.f)(fusion::deref(it.first));
+ return (*it.f)(fusion::deref(it.it));
             }
         };
     };
@@ -60,17 +60,15 @@
                     typename detail::get_func_base<
                         typename it::transform_type
>::type(
- typename result_of::deref<typename it::first1_type>::type
- , typename result_of::deref<typename it::first2_type>::type)
+ typename result_of::deref<typename it::it1_type>::type
+ , typename result_of::deref<typename it::it2_type>::type)
>::type
             type;
 
             static type
             call(ItRef it)
             {
- return (*it.f)(
- fusion::deref(it.first1)
- , fusion::deref(it.first2));
+ return (*it.f)(fusion::deref(it.it1), fusion::deref(it.it2));
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/distance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/distance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/distance_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -20,28 +20,26 @@
     template<>
     struct distance_impl<transform_view_iterator_tag>
     {
- template<typename First, typename Last>
+ template<typename Begin, typename End>
         struct apply
           : result_of::distance<
- typename detail::remove_reference<First>::type::first_type
- , typename detail::remove_reference<Last>::type::first_type
+ typename detail::remove_reference<Begin>::type::it_type
+ , typename detail::remove_reference<End>::type::it_type
>
- {
- };
+ {};
     };
 
     // Binary Version
     template<>
     struct distance_impl<transform_view_iterator2_tag>
     {
- template<typename First, typename Last>
+ template<typename Begin, typename End>
         struct apply
           : result_of::distance<
- typename detail::remove_reference<First>::type::first1_type
- , typename detail::remove_reference<Last>::type::first1_type
+ typename detail::remove_reference<Begin>::type::it1_type
+ , typename detail::remove_reference<End>::type::it1_type
>
- {
- };
+ {};
     };
 }}}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/equal_to_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/equal_to_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/equal_to_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -21,8 +21,8 @@
         template<typename ItRef1, typename ItRef2>
         struct apply
           : result_of::equal_to<
- typename detail::remove_reference<ItRef1>::type::first_type
- , typename detail::remove_reference<ItRef2>::type::first_type
+ typename detail::remove_reference<ItRef1>::type::it_type
+ , typename detail::remove_reference<ItRef2>::type::it_type
>
         {};
     };
@@ -33,8 +33,8 @@
         template<typename ItRef1, typename ItRef2>
         struct apply
           : result_of::equal_to<
- typename detail::remove_reference<ItRef1>::type::first1_type
- , typename detail::remove_reference<ItRef2>::type::first1_type
+ typename detail::remove_reference<ItRef1>::type::it1_type
+ , typename detail::remove_reference<ItRef2>::type::it1_type
>
         {};
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/next_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -27,7 +27,7 @@
             typedef
                 transform_view_iterator<
                     typename result_of::next<
- typename it::first_type
+ typename it::it_type
>::type
                   , typename it::transform_type
>
@@ -36,7 +36,7 @@
             static type
             call(ItRef it)
             {
- return type(fusion::next(it.first), *it.f);
+ return type(fusion::next(it.it), *it.f);
             }
         };
     };
@@ -53,10 +53,10 @@
             typedef
                 transform_view_iterator2<
                     typename result_of::next<
- typename it::first1_type
+ typename it::it1_type
>::type
                   , typename result_of::next<
- typename it::first2_type
+ typename it::it2_type
>::type
                   , typename it::transform_type
>
@@ -65,9 +65,9 @@
             static type
             call(ItRef it)
             {
- return type(fusion::next(it.first1),
- fusion::next(it.first2),
- *it.f);
+ return type(fusion::next(it.it1),
+ fusion::next(it.it2),
+ *it.f);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/prior_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/prior_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/prior_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -28,7 +28,7 @@
             typedef
                 transform_view_iterator<
                     typename result_of::prior<
- typename it::first_type
+ typename it::it_type
>::type
                   , typename it::transform_type
>
@@ -37,7 +37,7 @@
             static type
             call(ItRef it)
             {
- return type(fusion::prior(it.first), *it.f);
+ return type(fusion::prior(it.it), *it.f);
             }
         };
     };
@@ -56,10 +56,10 @@
             typedef
                 transform_view_iterator2<
                     typename result_of::prior<
- typename it::first1_type
+ typename it::it1_type
>::type
                   , typename result_of::prior<
- typename it::first2_type
+ typename it::it2_type
>::type
                   , typename it::transform_type
>
@@ -68,9 +68,9 @@
             static type
             call(ItRef it)
             {
- return type(fusion::prior(it.first1),
- fusion::prior(it.first2),
- it.f);
+ return type(fusion::prior(it.it1),
+ fusion::prior(it.it2),
+ it.f);
             }
         };
     };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_iterator.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -16,67 +16,65 @@
     // Unary Version
     struct transform_view_iterator_tag;
 
- template <typename First, typename FRef>
+ template <typename It, typename FRef>
     struct transform_view_iterator
- : iterator_base<transform_view_iterator<First, FRef> >
+ : iterator_base<transform_view_iterator<It, FRef> >
     {
         typedef FRef transform_type;
- typedef First first_type;
+ typedef It it_type;
 
         typedef transform_view_iterator_tag fusion_tag;
- typedef typename traits::category_of<first_type>::type category;
+ typedef typename traits::category_of<it_type>::type category;
 
         template<typename OtherIt>
         transform_view_iterator(BOOST_FUSION_R_ELSE_CLREF(OtherIt) it)
- : first(BOOST_FUSION_FORWARD(OtherIt,it).first)
+ : it(BOOST_FUSION_FORWARD(OtherIt,it).it)
           , f(BOOST_FUSION_FORWARD(OtherIt,it).f)
         {}
 
- transform_view_iterator(First const& first, transform_type f)
- : first(first)
+ transform_view_iterator(It const& it, transform_type f)
+ : it(it)
           , f(&f)
         {}
 
         template<typename OtherIt>
         transform_view_iterator&
- operator=(BOOST_FUSION_R_ELSE_CLREF(OtherIt) it)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherIt) it_)
         {
- first=BOOST_FUSION_FORWARD(OtherIt,it).first;
- f=BOOST_FUSION_FORWARD(OtherIt,it).f;
+ it=BOOST_FUSION_FORWARD(OtherIt,it_).it;
+ f=BOOST_FUSION_FORWARD(OtherIt,it_).f;
             return *this;
         }
 
- first_type first;
+ it_type it;
         typename detail::remove_reference<transform_type>::type* f;
     };
 
     // Binary Version
     struct transform_view_iterator2_tag;
 
- template <typename First1, typename First2, typename FRef>
+ template <typename It1, typename It2, typename FRef>
     struct transform_view_iterator2
- : iterator_base<transform_view_iterator2<First1, First2, FRef> >
+ : iterator_base<transform_view_iterator2<It1, It2, FRef> >
     {
- typedef First1 first1_type;
- typedef First2 first2_type;
+ typedef It1 it1_type;
+ typedef It2 it2_type;
         typedef FRef transform_type;
 
         typedef transform_view_iterator2_tag fusion_tag;
- typedef typename traits::category_of<first1_type>::type category;
+ typedef typename traits::category_of<it1_type>::type category;
 
         template<typename OtherIt>
         transform_view_iterator2(
                 BOOST_FUSION_R_ELSE_CLREF(OtherIt) it)
- : first1(BOOST_FUSION_FORWARD(OtherIt,it).first1)
- , first2(BOOST_FUSION_FORWARD(OtherIt,it).first2)
+ : it1(BOOST_FUSION_FORWARD(OtherIt,it).it1)
+ , it2(BOOST_FUSION_FORWARD(OtherIt,it).it2)
           , f(BOOST_FUSION_FORWARD(OtherIt,it).f)
         {}
 
- transform_view_iterator2(First1 const& first1,
- First2 const& first2,
- FRef f)
- : first1(first1)
- , first2(first2)
+ transform_view_iterator2(It1 const& it1,It2 const& it2,transform_type f)
+ : it1(it1)
+ , it2(it2)
           , f(&f)
         {}
 
@@ -84,14 +82,14 @@
         transform_view_iterator2&
         operator=(BOOST_FUSION_R_ELSE_CLREF(OtherIt) it)
         {
- first1=BOOST_FUSION_FORWARD(OtherIt,it).first1;
- first2=BOOST_FUSION_FORWARD(OtherIt,it).first2;
+ it1=BOOST_FUSION_FORWARD(OtherIt,it).it1;
+ it2=BOOST_FUSION_FORWARD(OtherIt,it).it2;
             f=BOOST_FUSION_FORWARD(OtherIt,it).f;
             return *this;
         }
 
- first1_type first1;
- first2_type first2;
+ it1_type it1;
+ it2_type it2;
         typename detail::remove_reference<transform_type>::type* f;
     };
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -30,7 +30,7 @@
                     typename detail::get_func_base<
                         typename it::transform_type
>::type(
- typename result_of::value_of<typename it::first_type>::type)
+ typename result_of::value_of<typename it::it_type>::type)
>::type
             type;
         };
@@ -50,8 +50,8 @@
                     typename detail::get_func_base<
                         typename it::transform_type
>::type(
- typename result_of::value_of<typename it::first1_type>::type
- , typename result_of::value_of<typename it::first2_type>::type)
+ typename result_of::value_of<typename it::it1_type>::type
+ , typename result_of::value_of<typename it::it2_type>::type)
>::type
             type;
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -55,6 +55,8 @@
     struct transform_view2_tag;
     struct fusion_sequence_tag;
 
+ //TODO IsAssociative
+
     // Binary Version
     template <typename Seq1, typename Seq2, typename F, typename IsAssociative>
     struct transform_view
@@ -65,7 +67,7 @@
         BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
         BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
         BOOST_FUSION_MPL_ASSERT((
- mpl::equal_to<result_of::size<Seq1>,result_of::size<Seq1> >));
+ mpl::equal_to<result_of::size<Seq1>,result_of::size<Seq2> >));
 
         typedef detail::view_storage<Seq1> storage1_type;
         typedef typename storage1_type::type seq1_type;
@@ -85,7 +87,6 @@
         typedef transform_view2_tag fusion_tag;
         typedef fusion_sequence_tag tag;
         typedef mpl::true_ is_view;
- //TODO implement IsAssociative
         typedef typename
             mpl::eval_if<
                 IsAssociative

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -17,6 +17,7 @@
 #include <boost/fusion/algorithm/transformation/remove.hpp>
 #include <boost/fusion/support/sequence_base.hpp>
 #include <boost/fusion/support/unused.hpp>
+#include <boost/fusion/support/tag_of.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
 
@@ -29,8 +30,6 @@
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/eval_if.hpp>
 
-//#include <boost/integer_traits.hpp>
-
 #include <boost/fusion/view/detail/strictest_traversal.hpp>
 #include <boost/fusion/view/zip_view/detail/zip_view_fwd.hpp>
 #include <boost/fusion/view/zip_view/detail/size_impl.hpp>
@@ -48,8 +47,8 @@
 #include <boost/fusion/view/zip_view/detail/value_of_impl.hpp>
 #include <boost/fusion/view/zip_view/detail/equal_to_impl.hpp>
 
-namespace boost { namespace fusion {
-
+namespace boost { namespace fusion
+{
     namespace detail
     {
 #ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
@@ -80,22 +79,13 @@
 
         struct seq_size
         {
- template<typename Params>
+ template<typename Sig>
             struct result;
 
             template<typename Self,typename Seq>
             struct result<Self(Seq)>
- {
- typedef typename
- //mpl::eval_if<
- // traits::is_forward<Seq>
- /* ,*/ result_of::size<Seq>
- // , mpl::identity<
- // mpl::int_<integer_traits<int>::const_max>
- // >
- /*>*/::type
- type;
- };
+ : result_of::size<Seq>
+ {};
         };
 
         struct poly_min

Modified: sandbox/SOC/2009/fusion/build.bat
==============================================================================
--- sandbox/SOC/2009/fusion/build.bat (original)
+++ sandbox/SOC/2009/fusion/build.bat 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -9,17 +9,21 @@
 set BOOST_INCLUDES_PATH=%BOOST_ROOT%/include/boost-1_40
 
 rem call toolset specific procedure
-if "%1" == "gcc" (
- call :gcc
+if "%1" == "gcc4" (
+ call :gcc4
 ) else (
- if "%1" == "msvc" (
- call :msvc
+ if "%1" == "vc9" (
+ call :vc9
     ) else (
- if "%1" == "" (
- call :gcc
+ if "%1" == "gcc3" (
+ call :gcc3
         ) else (
- echo Unknown toolset '%1'
- goto :eof
+ if "%1" == "" (
+ call :vc9
+ ) else (
+ echo Unknown toolset '%1'
+ goto :eof
+ )
         )
     )
 )
@@ -28,13 +32,17 @@
 %BOOST_ROOT%\bjam -sHOME="z:\projekte\cl_link_frontend\util\boost" --toolset=%TOOLSET% %2 %3 %4 %5 %6 %7 %8 %9
 goto :eof
 
-:gcc
-rem set PATH=C:\Program Files (x86)\MinGWOld\bin;%PATH%
+:gcc3
+set PATH=C:\Program Files (x86)\MinGWOld\bin;%PATH%
+set TOOLSET=gcc
+goto :eof
+
+:gcc4
 set PATH=C:\Program Files (x86)\MinGW\bin;%PATH%
 set TOOLSET=gcc
 goto :eof
 
-:msvc
+:vc9
 call "%VS90COMNTOOLS%..\..\VC\vcvarsall" x86
 set TOOLSET=msvc
 goto :eof

Added: sandbox/SOC/2009/fusion/libs/fusion/CMakeLists.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/CMakeLists.txt 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,23 @@
+#----------------------------------------------------------------------------
+# This file was automatically generated from the original CMakeLists.txt file
+# Add a variable to hold the headers for the library
+set (lib_headers
+ fusion
+)
+
+# Add a library target to the build system
+boost_library_project(
+ fusion
+ # SRCDIRS
+ # TESTDIRS
+ HEADERS ${lib_headers}
+ # DOCDIRS
+ DESCRIPTION "Library for working with tuples, including various containers, algorithms, etc."
+ MODULARIZED
+ AUTHORS "Joel de Guzman <joel -at- boost-consulting.com>"
+ "Dan Marsden <danmarsden -at- yahoo.co.uk>"
+ "Tobias Schwinger <tschwinger -at- isonews2.com>"
+ # MAINTAINERS
+)
+
+

Modified: sandbox/SOC/2009/fusion/libs/fusion/doc/support.qbk
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/doc/support.qbk (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/doc/support.qbk 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -407,7 +407,7 @@
 
 [table
     [[Expression] [Semantics]]
- [[`P::first_type`] [The type of the first template parameter, `F`, equivalent to
+ [[`P::begin_type`] [The type of the first template parameter, `F`, equivalent to
                         `result_of::first<P>::type`. ]]
     [[`P::second_type`] [The type of the second template parameter, `S`, equivalent to
                         `result_of::second<P>::type`. ]]

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/test/main.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/test/main.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/test/main.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -3,10 +3,6 @@
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#include <type_traits>
-#include <utility>
-#include <iostream>
-
 #include <boost/fusion/sequence.hpp>
 #include <boost/fusion/iterator.hpp>
 #include <boost/fusion/algorithm.hpp>
@@ -21,6 +17,14 @@
 
 namespace fusion=boost::fusion;
 
+#if defined(BOOST_NO_RVALUE_REFERENCES) || defined(BOOST_NO_VARIADIC_TEMPLATES)
+int main()
+{}
+#else
+#include <type_traits>
+#include <utility>
+#include <iostream>
+
 struct moveable
 {
     moveable(int){};
@@ -116,9 +120,6 @@
     }
 };
 
-template<class>
-class C;
-
 int main()
 {
     {
@@ -163,48 +164,7 @@
         seq_test(zip_view<vector<vector<int>&&, vector<int>&&> >(vector_tie(vector<int>(),vector<int>())));
         seq_test(transform_view<vector<int>&&,identity_int>(vector<int>(),identity_int()));
         seq_test(reverse_view<vector<int>&&>(vector<int>()));
+ seq_test(repetitive_view<vector<int>&&>(vector<int>()));
     }
 }
-
-/*#include <boost/mpl/transform.hpp>
-#include <boost/mpl/vector.hpp>
-#include <boost/mpl/equal.hpp>
-
-#include <utility>
-
-namespace mpl=boost::mpl;
-
-struct my_make_pair {
- template<typename T1, typename T2>
- struct apply {
- typedef std::pair<T1,T2> type;
- };
-};
-
-
-
-int main(int argc, char *argv[])
-{
- {
- typedef mpl::vector<int,long> seq1;
- typedef mpl::vector<float,double> seq2;
- typedef mpl::vector<std::pair<int,float>,std::pair<long,double> > pairs;
-
- typedef mpl::transform<seq1,seq2,my_make_pair>::type result;
-
- static_assert( mpl::equal<result,pairs>::type::value, "");
- }
-
- typedef fusion::vector<int,long> seq1;
-
- typedef fusion::vector<float,double> seq2;
- typedef fusion::vector<std::pair<int,float>,std::pair<long,double> >
-pairs;
-
- typedef mpl::transform<seq1,seq2,my_make_pair>::type result;
-
- static_assert( mpl::equal<result,pairs>::type::value, "");
- mpl::push_back<fusion::vector<>,int>::type z;
-
- return 0;
-}*/
+#endif

Deleted: sandbox/SOC/2009/fusion/libs/fusion/test/CMakeLists.txt
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/CMakeLists.txt 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
+++ (empty file)
@@ -1,29 +0,0 @@
-#
-# Copyright Troy D. Straszheim
-#
-# Distributed under the Boost Software License, Version 1.0.
-# See http://www.boost.org/LICENSE_1_0.txt
-#
-#----------------------------------------------------------------------------
-# This file was automatically generated from the original CMakeLists.txt file
-# Add a variable to hold the headers for the library
-set (lib_headers
- fusion
-)
-
-# Add a library target to the build system
-boost_library_project(
- fusion
- # SRCDIRS
- # TESTDIRS
- HEADERS ${lib_headers}
- # DOCDIRS
- DESCRIPTION "Library for working with tuples, including various containers, algorithms, etc."
- MODULARIZED
- AUTHORS "Joel de Guzman <joel -at- boost-consulting.com>"
- "Dan Marsden <danmarsden -at- yahoo.co.uk>"
- "Tobias Schwinger <tschwinger -at- isonews2.com>"
- # MAINTAINERS
-)
-
-

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase_key.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase_key.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase_key.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -58,8 +58,6 @@
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
- using namespace std;
     using boost::fusion::pair;
     using boost::fusion::make_pair;
 

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Makefile
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Makefile 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,29 @@
+#=============================================================================
+# Copyright (c) 2008 Dan Marsden
+#
+# 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).
+#==============================================================================
+
+CXX=g++
+CXXFLAGS=-I$(BOOST_ROOT)
+
+TEST_SRCS=\
+ vector_construction.cpp\
+ vector_iteration.cpp\
+ vector_intrinsic.cpp\
+ fold.cpp\
+ transform.cpp
+
+TEST_OBJS=$(TEST_SRCS:.cpp=.o)
+
+TEST_TARGETS=$(TEST_SRCS:.cpp=.test)
+
+all: $(TEST_TARGETS)
+
+%.test : %.cpp
+ time $(CXX) $(CXXFLAGS) $< -o $@
+
+clean:
+ rm -f $(TEST_TARGETS) $(TEST_OBJS)

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,75 @@
+/*=============================================================================
+ Copyright (c) 2008 Dan Marsden
+
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_COMPILE_TIME_DRIVER)
+#define BOOST_FUSION_COMPILE_TIME_DRIVER
+
+int main()
+{
+ test<0>();
+ test<1>();
+ test<2>();
+ test<3>();
+ test<4>();
+
+ test<5>();
+ test<6>();
+ test<7>();
+ test<8>();
+ test<9>();
+
+ test<10>();
+ test<11>();
+ test<12>();
+ test<13>();
+ test<14>();
+
+ test<15>();
+ test<16>();
+ test<17>();
+ test<18>();
+ test<19>();
+
+ test<20>();
+ test<21>();
+ test<22>();
+ test<23>();
+ test<24>();
+
+ test<25>();
+ test<26>();
+ test<27>();
+ test<28>();
+ test<29>();
+
+ test<30>();
+ test<31>();
+ test<32>();
+ test<33>();
+ test<34>();
+
+ test<35>();
+ test<36>();
+ test<37>();
+ test<38>();
+ test<39>();
+
+ test<40>();
+ test<41>();
+ test<42>();
+ test<43>();
+ test<44>();
+
+ test<45>();
+ test<46>();
+ test<47>();
+ test<48>();
+ test<49>();
+}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,42 @@
+/*=============================================================================
+ Copyright (c) 2008 Dan Marsden
+
+ 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 <boost/fusion/include/fold.hpp>
+#include <boost/fusion/include/vector.hpp>
+
+namespace fusion = boost::fusion;
+
+namespace
+{
+ template<int n, int batch>
+ struct distinct
+ {};
+
+ struct f
+ {
+ typedef int result_type;
+
+ template<int n, int batch>
+ int operator()(distinct<n, batch> const& d, int state) const
+ {
+ return state + n;
+ }
+ };
+
+ template<int batch>
+ void test()
+ {
+ fusion::vector<
+ distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
+ distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v;
+
+ fusion::fold(v, 0, f());
+ }
+}
+
+#include "./driver.hpp"

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,55 @@
+/*=============================================================================
+ Copyright (c) 2008 Dan Marsden
+
+ 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 <boost/fusion/include/transform.hpp>
+#include <boost/fusion/include/for_each.hpp>
+#include <boost/fusion/include/vector.hpp>
+
+namespace fusion = boost::fusion;
+
+namespace
+{
+ template<int n, int batch>
+ struct distinct
+ {
+ static const int value = n;
+ };
+
+ struct f
+ {
+ typedef int result_type;
+
+ template<typename T>
+ result_type operator()(T const& t) const
+ {
+ return T::value;
+ }
+ };
+
+ struct touch
+ {
+ template<typename T>
+ void operator()(T const&) const
+ {}
+ };
+
+ template<int batch>
+ void test()
+ {
+ fusion::vector<
+ distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
+ distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v;
+
+ // We're testing transform really
+ // for_each call is to force iteration through the lazy
+ // transform, otherwise very little will happen.
+ fusion::for_each(fusion::transform(v, f()), touch());
+ }
+}
+
+#include "./driver.hpp"

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,28 @@
+/*=============================================================================
+ Copyright (c) 2008 Dan Marsden
+
+ 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 <boost/fusion/include/vector.hpp>
+
+namespace fusion = boost::fusion;
+
+namespace
+{
+ template<int n, int batch>
+ struct distinct
+ {};
+
+ template<int batch>
+ void test()
+ {
+ fusion::vector<
+ distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
+ distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v;
+ }
+}
+
+#include "./driver.hpp"

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,59 @@
+/*=============================================================================
+ Copyright (c) 2008 Dan Marsden
+
+ 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 <boost/fusion/include/vector.hpp>
+#include <boost/fusion/include/intrinsic.hpp>
+
+namespace fusion = boost::fusion;
+
+namespace
+{
+ template<int n, int batch>
+ struct distinct
+ {};
+
+ template<int batch>
+ void test()
+ {
+ typedef fusion::vector<
+ distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
+ distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v_type;
+
+ v_type v;
+
+ fusion::at_c<0>(v);
+ fusion::at_c<1>(v);
+ fusion::at_c<2>(v);
+ fusion::at_c<3>(v);
+ fusion::at_c<4>(v);
+
+ fusion::at_c<5>(v);
+ fusion::at_c<6>(v);
+ fusion::at_c<7>(v);
+ fusion::at_c<8>(v);
+ fusion::at_c<9>(v);
+
+ typedef typename fusion::result_of::value_at_c<v_type, 0>::type va0;
+ typedef typename fusion::result_of::value_at_c<v_type, 1>::type va1;
+ typedef typename fusion::result_of::value_at_c<v_type, 2>::type va2;
+ typedef typename fusion::result_of::value_at_c<v_type, 3>::type va3;
+ typedef typename fusion::result_of::value_at_c<v_type, 4>::type va4;
+
+ typedef typename fusion::result_of::value_at_c<v_type, 5>::type va5;
+ typedef typename fusion::result_of::value_at_c<v_type, 6>::type va6;
+ typedef typename fusion::result_of::value_at_c<v_type, 7>::type va7;
+ typedef typename fusion::result_of::value_at_c<v_type, 8>::type va8;
+ typedef typename fusion::result_of::value_at_c<v_type, 9>::type va9;
+
+ fusion::begin(v);
+ fusion::end(v);
+ fusion::size(v);
+ }
+}
+
+#include "./driver.hpp"

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2008 Dan Marsden
+
+ 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 <boost/fusion/include/vector.hpp>
+#include <boost/fusion/include/for_each.hpp>
+
+namespace fusion = boost::fusion;
+
+namespace
+{
+ template<int n, int batch>
+ struct distinct
+ {};
+
+ struct null_op
+ {
+ template<typename T>
+ void operator()(T const& t) const
+ {}
+ };
+
+ template<int batch>
+ void test()
+ {
+ fusion::vector<
+ distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
+ distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v;
+
+ fusion::for_each(v, null_op());
+ }
+}
+
+#include "./driver.hpp"

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_assoc_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_assoc_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_assoc_struct.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -60,8 +60,6 @@
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
- using namespace std;
 
     std::cout << tuple_open('[');
     std::cout << tuple_close(']');
@@ -88,9 +86,9 @@
     }
 
     {
- fusion::vector<int, float> v1(4, 2);
+ vector<int, float> v1(4, 2);
         ns::point v2 = {5, 3};
- fusion::vector<long, double> v3(5, 4);
+ vector<long, double> v3(5, 4);
         BOOST_TEST(v1 < v2);
         BOOST_TEST(v1 <= v2);
         BOOST_TEST(v2 > v1);
@@ -104,25 +102,25 @@
     {
         // conversion from ns::point to vector
         ns::point p = {5, 3};
- fusion::vector<int, short> v(sequence_assign(p));
+ vector<int, short> v(sequence_assign(p));
         v = p;
     }
 
     {
         // conversion from ns::point to list
         ns::point p = {5, 3};
- fusion::list<int, short> l(sequence_assign(p));
+ list<int, short> l(sequence_assign(p));
         l = p;
     }
 
     {
         // assoc stuff
- BOOST_MPL_ASSERT((fusion::result_of::has_key<ns::point, ns::x_member>));
- BOOST_MPL_ASSERT((fusion::result_of::has_key<ns::point, ns::y_member>));
- BOOST_MPL_ASSERT((mpl::not_<fusion::result_of::has_key<ns::point, ns::z_member> >));
+ BOOST_MPL_ASSERT((result_of::has_key<ns::point, ns::x_member>));
+ BOOST_MPL_ASSERT((result_of::has_key<ns::point, ns::y_member>));
+ BOOST_MPL_ASSERT((boost::mpl::not_<result_of::has_key<ns::point, ns::z_member> >));
 
- BOOST_MPL_ASSERT(( boost::is_same<fusion::result_of::value_at_key<ns::point, ns::x_member>::type, int> ));
- BOOST_MPL_ASSERT(( boost::is_same<fusion::result_of::value_at_key<ns::point, ns::y_member>::type, int> ));
+ BOOST_MPL_ASSERT(( boost::is_same<result_of::value_at_key<ns::point, ns::x_member>::type, int> ));
+ BOOST_MPL_ASSERT(( boost::is_same<result_of::value_at_key<ns::point, ns::y_member>::type, int> ));
 
         ns::point p = {5, 3};
         

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_struct.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -52,8 +52,6 @@
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
- using namespace std;
 
     std::cout << tuple_open('[');
     std::cout << tuple_close(']');
@@ -80,9 +78,9 @@
     }
 
     {
- fusion::vector<int, float> v1(4, 2);
+ vector<int, float> v1(4, 2);
         ns::point v2 = {5, 3};
- fusion::vector<long, double> v3(5, 4);
+ vector<long, double> v3(5, 4);
         BOOST_TEST(v1 < v2);
         BOOST_TEST(v1 <= v2);
         BOOST_TEST(v2 > v1);
@@ -96,14 +94,14 @@
     {
         // conversion from ns::point to vector
         ns::point p = {5, 3};
- fusion::vector<int, short> v(sequence_assign(p));
+ vector<int, short> v(sequence_assign(p));
         v = p;
     }
 
     {
         // conversion from ns::point to list
         ns::point p = {5, 3};
- fusion::list<int, short> l(sequence_assign(p));
+ list<int, short> l(sequence_assign(p));
         l = p;
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_map.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_map.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_map.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -21,7 +21,6 @@
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
 
     std::cout << tuple_open('[');
     std::cout << tuple_close(']');

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_set.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_set.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_set.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -22,7 +22,6 @@
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
 
     std::cout << tuple_open('[');
     std::cout << tuple_close(']');
@@ -46,9 +45,9 @@
     }
 
     {
- std::cout << as_set(mpl::vector_c<int, 1, 2, 3, 4, 5>()) << std::endl;
- BOOST_TEST((as_list(as_set(mpl::vector_c<int, 1, 2, 3, 4, 5>()))
- == mpl::vector_c<int, 1, 2, 3, 4, 5>()));
+ std::cout << as_set(boost::mpl::vector_c<int, 1, 2, 3, 4, 5>()) << std::endl;
+ BOOST_TEST((as_list(as_set(boost::mpl::vector_c<int, 1, 2, 3, 4, 5>()))
+ == boost::mpl::vector_c<int, 1, 2, 3, 4, 5>()));
     }
 
     {

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/boost_tuple.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/boost_tuple.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/boost_tuple.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -32,8 +32,6 @@
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
- using namespace std;
 
     std::cout << tuple_open('[');
     std::cout << tuple_close(']');
@@ -60,9 +58,9 @@
     }
     
     {
- fusion::vector<int, float> v1(4, 3.3f);
+ vector<int, float> v1(4, 3.3f);
         boost::tuple<short, float> v2(5, 3.3f);
- fusion::vector<long, double> v3(5, 4.4);
+ vector<long, double> v3(5, 4.4);
         BOOST_TEST(v1 < v2);
         BOOST_TEST(v1 <= v2);
         BOOST_TEST(v2 > v1);
@@ -75,14 +73,14 @@
 
     {
         // conversion from boost tuple to vector
- fusion::vector<int, std::string> v(sequence_assign(tuples::make_tuple(123, "Hola!!!")));
- v = tuples::make_tuple(123, "Hola!!!");
+ vector<int, std::string> v(sequence_assign(boost::tuples::make_tuple(123, "Hola!!!")));
+ v = boost::tuples::make_tuple(123, "Hola!!!");
     }
 
     {
         // conversion from boost tuple to list
- fusion::list<int, std::string> l(sequence_assign(tuples::make_tuple(123, "Hola!!!")));
- l = tuples::make_tuple(123, "Hola!!!");
+ list<int, std::string> l(sequence_assign(boost::tuples::make_tuple(123, "Hola!!!")));
+ l = boost::tuples::make_tuple(123, "Hola!!!");
     }
 
     return boost::report_errors();

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/map.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/map.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/map.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -4,6 +4,7 @@
     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)
 ==============================================================================*/
+
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/fusion/container/map/map.hpp>
 #include <boost/fusion/container/generation/make_map.hpp>
@@ -18,12 +19,11 @@
 #include <iostream>
 #include <string>
 
+
 int
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
- using namespace std;
     using boost::fusion::pair;
     using boost::fusion::make_pair;
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/reverse_view.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/reverse_view.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/reverse_view.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -49,9 +49,9 @@
         std::cout << rev << std::endl;
         BOOST_TEST((rev == make_vector(s, 123456789, 'x', 123)));
 
- typedef result_of::begin<view_type>::type first_type;
- first_type first_it(begin(rev));
- typedef result_of::next<first_type>::type second_type;
+ typedef result_of::begin<view_type>::type begin_type;
+ begin_type first_it(begin(rev));
+ typedef result_of::next<begin_type>::type second_type;
         second_type second_it(next(first_it));
         BOOST_TEST((*second_it == 123456789));
         BOOST_TEST((*prior(second_it) == s));

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/set.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/set.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/set.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -22,8 +22,6 @@
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
- using namespace std;
     using boost::fusion::pair;
     using boost::fusion::make_pair;
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/std_pair.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/std_pair.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/std_pair.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -35,8 +35,6 @@
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
- using namespace std;
 
     std::cout << tuple_open('[');
     std::cout << tuple_close(']');
@@ -64,9 +62,9 @@
     }
     
     {
- fusion::vector<int, float> v1(4, 3.3f);
+ vector<int, float> v1(4, 3.3f);
         std::pair<short, float> v2(5, 3.3f);
- fusion::vector<long, double> v3(5, 4.4);
+ vector<long, double> v3(5, 4.4);
         BOOST_TEST(v1 < v2);
         BOOST_TEST(v1 <= v2);
         BOOST_TEST(v2 > v1);
@@ -79,13 +77,13 @@
 
     {
         // conversion from pair to vector
- fusion::vector<int, std::string> v(sequence_assign(std::make_pair(123, "Hola!!!")));
+ vector<int, std::string> v(sequence_assign(std::make_pair(123, "Hola!!!")));
         v = std::make_pair(123, "Hola!!!");
     }
 
     {
         // conversion from pair to list
- fusion::list<int, std::string> l(sequence_assign(std::make_pair(123, "Hola!!!")));
+ list<int, std::string> l(sequence_assign(std::make_pair(123, "Hola!!!")));
         l = std::make_pair(123, "Hola!!!");
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/transform_view.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/transform_view.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/transform_view.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -67,10 +67,10 @@
         std::cout << xform << std::endl;
         BOOST_TEST((xform == make_vector(25, 36, 49, 64)));
 
- typedef boost::fusion::result_of::begin<xform_type>::type first_type;
- first_type first_it(boost::fusion::begin(xform));
+ typedef boost::fusion::result_of::begin<xform_type>::type begin_type;
+ begin_type first_it(boost::fusion::begin(xform));
 
- typedef boost::fusion::result_of::next<first_type>::type next_type;
+ typedef boost::fusion::result_of::next<begin_type>::type next_type;
         next_type next_it(boost::fusion::next(first_it));
         BOOST_TEST((*next_it == 36));
         BOOST_TEST((*boost::fusion::prior(next_it) == 25));

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_n.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_n.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_n.cpp 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -30,7 +30,6 @@
 main()
 {
     using namespace boost::fusion;
- using namespace boost;
     using std::cout;
     using std::endl;
 
@@ -47,7 +46,7 @@
         BOOST_STATIC_ASSERT(result_of::size<type>::value == 1);
 
         BOOST_TEST(at_c<0>(vec) == 0);
- BOOST_STATIC_ASSERT((is_same<int, result_of::value_at_c<type, 0>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<int, result_of::value_at_c<type, 0>::type>::value));
 
         // prove that it is mutable
         at_c<0>(vec) = 987;
@@ -84,8 +83,8 @@
         BOOST_TEST(at_c<0>(vec) == 0);
         BOOST_TEST(at_c<1>(vec) == char());
 
- BOOST_STATIC_ASSERT((is_same<int, result_of::value_at_c<type, 0>::type>::value));
- BOOST_STATIC_ASSERT((is_same<char, result_of::value_at_c<type, 1>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<int, result_of::value_at_c<type, 0>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<char, result_of::value_at_c<type, 1>::type>::value));
     }
 
     {
@@ -111,9 +110,9 @@
         BOOST_TEST(at_c<1>(vec) == char());
         BOOST_TEST(at_c<2>(vec) == double());
 
- BOOST_STATIC_ASSERT((is_same<int, result_of::value_at_c<type, 0>::type>::value));
- BOOST_STATIC_ASSERT((is_same<char, result_of::value_at_c<type, 1>::type>::value));
- BOOST_STATIC_ASSERT((is_same<double, result_of::value_at_c<type, 2>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<int, result_of::value_at_c<type, 0>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<char, result_of::value_at_c<type, 1>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<double, result_of::value_at_c<type, 2>::type>::value));
     }
 
     {
@@ -149,13 +148,13 @@
         BOOST_TEST(at_c<5>(vec) >= 5.9 && at_c<5>(vec) <= 6.1);
         BOOST_TEST(at_c<6>(vec) >= 6.9 && at_c<6>(vec) <= 7.1);
 
- BOOST_STATIC_ASSERT((is_same<bool, result_of::value_at_c<type, 0>::type>::value));
- BOOST_STATIC_ASSERT((is_same<char, result_of::value_at_c<type, 1>::type>::value));
- BOOST_STATIC_ASSERT((is_same<short, result_of::value_at_c<type, 2>::type>::value));
- BOOST_STATIC_ASSERT((is_same<int, result_of::value_at_c<type, 3>::type>::value));
- BOOST_STATIC_ASSERT((is_same<long, result_of::value_at_c<type, 4>::type>::value));
- BOOST_STATIC_ASSERT((is_same<float, result_of::value_at_c<type, 5>::type>::value));
- BOOST_STATIC_ASSERT((is_same<double, result_of::value_at_c<type, 6>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<bool, result_of::value_at_c<type, 0>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<char, result_of::value_at_c<type, 1>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<short, result_of::value_at_c<type, 2>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<int, result_of::value_at_c<type, 3>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<long, result_of::value_at_c<type, 4>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<float, result_of::value_at_c<type, 5>::type>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<double, result_of::value_at_c<type, 6>::type>::value));
         cout << "(bool, char, short, int, long, float, double): " << sizeof(vec) << endl;
     }
 
@@ -212,11 +211,11 @@
     {
         // testing copy and assign from a view
         vector0<> empty;
- fusion::vector2<int, long> v(sequence_assign(fusion::push_back(fusion::push_back(empty, 123), 456)));
+ vector2<int, long> v(sequence_assign(push_back(push_back(empty, 123), 456)));
         cout << v << endl;
         BOOST_TEST(at_c<0>(v) == 123);
         BOOST_TEST(at_c<1>(v) == 456);
- v = fusion::push_back(fusion::push_back(empty, 123), 456); // test assign
+ v =push_back(push_back(empty, 123), 456); // test assign
         cout << v << endl;
         BOOST_TEST(at_c<0>(v) == 123);
         BOOST_TEST(at_c<1>(v) == 456);
@@ -224,12 +223,12 @@
 
     {
         // testing copy and assign from a vector_c
- mpl::vector_c<int, 123, 456> vec_c;
- fusion::vector2<int, long> v(sequence_assign(vec_c));
- cout << v << endl;
+ boost::mpl::vector_c<int, 123, 456> vec_c;
+ vector2<int, long> v(sequence_assign(vec_c));
+ std::cout << v << std::endl;
         BOOST_TEST(at_c<0>(v) == 123);
         BOOST_TEST(at_c<1>(v) == 456);
- v = mpl::vector_c<int, 123, 456>(); // test assign
+ v = boost::mpl::vector_c<int, 123, 456>(); // test assign
         cout << v << endl;
         BOOST_TEST(at_c<0>(v) == 123);
         BOOST_TEST(at_c<1>(v) == 456);

Modified: sandbox/SOC/2009/fusion/project-root.jam
==============================================================================
--- sandbox/SOC/2009/fusion/project-root.jam (original)
+++ sandbox/SOC/2009/fusion/project-root.jam 2009-08-19 18:34:54 EDT (Wed, 19 Aug 2009)
@@ -10,7 +10,7 @@
     : requirements <include>.
                    <include>$(BOOST_INCLUDES_PATH)
                    <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
- <toolset>gcc:<cxxflags>-std=c++0x
+ <toolset>gcc-4:<cxxflags>-std=c++0x
     : build-dir ../bin
     : default-build debug <link>shared <runtime-link>shared <threading>multi
     ;


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