Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r57340 - in sandbox/SOC/2009/fusion/libs/fusion: example/cookbook example/extension example/extension/detail example/performance test test/algorithm test/compile_time test/functional test/sequence
From: mr.chr.schmidt_at_[hidden]
Date: 2009-11-03 13:27:56


Author: cschmidt
Date: 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
New Revision: 57340
URL: http://svn.boost.org/trac/boost/changeset/57340

Log:
cleanup
Added:
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_value_at.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make_list.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make_vector.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/repetitive_view.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/test_deduce_sequence.cpp (contents, props changed)
Text files modified:
   sandbox/SOC/2009/fusion/libs/fusion/example/cookbook/do_the_bind.cpp | 22 +++++-----
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/advance_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_key_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/begin_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/category_of_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/deref_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/distance_impl.hpp | 16 +++++--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/end_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/equal_to_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/has_key_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_sequence_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_view_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/next_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/prior_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/size_impl.hpp | 9 ++--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_key_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_of_impl.hpp | 7 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct.hpp | 5 +-
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_iterator.hpp | 6 +-
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_type.hpp | 5 +-
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/tag_of.hpp | 5 +-
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple.cpp | 10 +++--
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/Jamfile | 2
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/accumulate.cpp | 19 +++++----
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/functional.cpp | 42 +++++++++++----------
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product.cpp | 12 +++---
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product2.cpp | 18 ++++----
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/measure.hpp | 12 ++----
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/sequence_efficiency.cpp | 23 +++++------
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/zip_efficiency.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile | 54 +++++++++++++++-------------
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/clear.cpp | 5 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase.cpp | 18 ++++----
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase_key.cpp | 15 +++++--
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find.cpp | 5 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find_if.cpp | 4 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp | 53 +++++++++++++++++++---------
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert.cpp | 12 +++--
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert_range.cpp | 12 +++--
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/replace_if.cpp | 6 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/transform.cpp | 30 +++++++++++----
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Makefile | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp | 4 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp | 13 ------
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused.cpp | 11 ++---
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_function_object.cpp | 19 ++++-----
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_procedure.cpp | 11 ++---
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke.cpp | 33 +++++++++--------
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_function_object.cpp | 18 ++++----
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_procedure.cpp | 28 +++++++-------
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused.cpp | 9 +---
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_function_object.cpp | 9 +---
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_procedure.cpp | 9 +---
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_unfused.cpp | 8 ++--
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused.cpp | 9 ++--
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused_typed.cpp | 18 ++++----
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_assoc_struct.cpp | 11 +----
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_struct.cpp | 5 --
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_list.cpp | 6 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_map.cpp | 4 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_set.cpp | 4 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_vector.cpp | 8 ++--
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/boost_tuple.cpp | 11 +++++
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/cons.cpp | 8 ++--
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/copy.hpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deduce_sequence.cpp | 68 ++++++++++++++----------------------
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/filter_view.cpp | 36 +++++++++++++++----
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator.hpp | 30 ++++++---------
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator_range.cpp | 74 +++++++++++++++++++++++++++++++--------
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/joint_view.cpp | 48 ++++++++++++++++++++++++-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_iterator.cpp | 6 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_misc.cpp | 1
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/map.cpp | 18 ++++++++-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp | 26 +++++++------
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/mutate.hpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/reverse_view.cpp | 12 +++---
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/set.cpp | 18 +++++++++
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/std_pair.cpp | 2 -
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tie.hpp | 15 ++++---
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tr1_tuple_auto_conv.cpp | 16 ++-----
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/transform_view.cpp | 30 +++++++++++----
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/value_at.hpp | 5 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_n.cpp | 39 ++++++++------------
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_tie.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/zip_view2.cpp | 3 +
   91 files changed, 690 insertions(+), 563 deletions(-)

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/cookbook/do_the_bind.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/cookbook/do_the_bind.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/cookbook/do_the_bind.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -65,9 +65,9 @@
     // A traits class to find out whether T is a placeholeder
     template <typename T> struct is_placeholder : mpl::false_ { };
     template <int I> struct is_placeholder< placeholder<I> > : mpl::true_ { };
- template <int I> struct is_placeholder< placeholder<I>& > : mpl::true_ { };
+ template <int I> struct is_placeholder< placeholder<I> & > : mpl::true_ { };
     template <int I> struct is_placeholder< placeholder<I> const > : mpl::true_ { };
- template <int I> struct is_placeholder< placeholder<I> const& > : mpl::true_ { };
+ template <int I> struct is_placeholder< placeholder<I> const & > : mpl::true_ { };
 
     // This class template provides a Polymorphic Function Object to be used
     // with fusion::transform. It is applied to the sequence of arguments that
@@ -75,17 +75,17 @@
     // from the final call.
     template<class FinalArgs> struct argument_transform
     {
- FinalArgs const& ref_final_args;
+ FinalArgs const & ref_final_args;
     public:
 
- explicit argument_transform(FinalArgs const& final_args)
+ explicit argument_transform(FinalArgs const & final_args)
             : ref_final_args(final_args)
         { }
 
         // A placeholder? Replace it with an argument from the final call...
         template <int Index>
         inline typename result_of::at_c<FinalArgs const, Index>::type
- operator()(placeholder<Index> const&) const
+ operator()(placeholder<Index> const &) const
         {
             return fusion::at_c<Index>(this->ref_final_args);
         }
@@ -117,7 +117,7 @@
         bound_args fsq_bind_args;
     public:
 
- fused_bound_function(BindArgs const& bind_args)
+ fused_bound_function(BindArgs const & bind_args)
           : fsq_bind_args(bind_args)
         { }
 
@@ -141,7 +141,7 @@
 
         template <class FinalArgs>
         inline typename result_impl<FinalArgs>::type
- operator()(FinalArgs const& final_args) const
+ operator()(FinalArgs const & final_args) const
         {
             return fusion::invoke( fusion::front(this->fsq_bind_args),
                 fusion::transform( fusion::pop_front(this->fsq_bind_args),
@@ -231,17 +231,17 @@
     }
 
     template <typename A>
- inline int operator()(A const& a) const
+ inline int operator()(A const & a) const
     {
- std::cout << "operator()(A const& a)" << std::endl;
+ std::cout << "operator()(A const & a)" << std::endl;
         std::cout << " a = " << a << " A = " << typeid(A).name() << std::endl;
         return 1;
     }
 
     template <typename A, typename B>
- inline int operator()(A const& a, B & b) const
+ inline int operator()(A const & a, B & b) const
     {
- std::cout << "operator()(A const& a, B & b)" << std::endl;
+ std::cout << "operator()(A const & a, B & b)" << std::endl;
         std::cout << " a = " << a << " A = " << typeid(A).name() << std::endl;
         std::cout << " b = " << b << " B = " << typeid(B).name() << std::endl;
         return 2;

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/advance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/advance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/advance_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_ADVANCE_IMPL_20060222_2150)
+#define BOOST_FUSION_ADVANCE_IMPL_20060222_2150
 
 namespace example
 {
@@ -21,7 +20,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct advance_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_AT_IMPL_20060223_2017)
+#define BOOST_FUSION_AT_IMPL_20060223_2017
 
 #include <string>
 #include <boost/mpl/if.hpp>
@@ -23,7 +22,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct at_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_key_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_AT_KEY_IMPL_20060223_2017)
+#define BOOST_FUSION_AT_KEY_IMPL_20060223_2017
 
 #include <string>
 #include <boost/mpl/if.hpp>
@@ -28,7 +27,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct at_key_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/begin_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_BEGIN_IMPL_20060222_2042)
+#define BOOST_FUSION_BEGIN_IMPL_20060222_2042
 
 #include "../example_struct_iterator.hpp"
 
@@ -20,7 +19,7 @@
     
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct begin_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/category_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/category_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/category_of_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037)
+#define BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037
 
 #include <boost/fusion/support/category_of.hpp>
 
@@ -26,7 +25,7 @@
             template<typename Sequence>
             struct apply
             {
- struct type : random_access_traversal_tag, associative_sequence_tag {};
+ struct type : random_access_traversal_tag, associative_tag {};
             };
         };
     }

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/deref_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_DEREF_IMPL_20060222_1952)
+#define BOOST_FUSION_DEREF_IMPL_20060222_1952
 
 #include <boost/static_assert.hpp>
 #include <boost/type_traits/is_const.hpp>
@@ -27,7 +26,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct deref_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/distance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/distance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/distance_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -2,12 +2,11 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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
-#define
+#if !defined(BOOST_FUSION_DISTANCE_IMPL_20060223_0814)
+#define BOOST_FUSION_DISTANCE_IMPL_20060223_0814
 
 #include <boost/mpl/minus.hpp>
 
@@ -20,7 +19,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct distance_impl;
 
         template<>
@@ -30,6 +29,13 @@
             struct apply
                 : mpl::minus<typename Last::index, typename First::index>
             {
+ typedef apply<First, Last> self;
+
+ static typename self::type
+ call(First const& first, Last const& last)
+ {
+ return typename self::type();
+ }
             };
         };
     }

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/end_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_END_IMPL_20060222_2042)
+#define BOOST_FUSION_END_IMPL_20060222_2042
 
 #include "../example_struct_iterator.hpp"
 
@@ -20,7 +19,7 @@
     
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct end_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/equal_to_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/equal_to_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/equal_to_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941)
+#define BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941
 
 #include <boost/mpl/equal_to.hpp>
 
@@ -20,7 +19,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct equal_to_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/has_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/has_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/has_key_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_HAS_KEY_IMPL_20060223_2156)
+#define BOOST_FUSION_HAS_KEY_IMPL_20060223_2156
 
 #include <boost/type_traits/is_same.hpp>
 #include <boost/mpl/or.hpp>
@@ -27,7 +26,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct has_key_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_sequence_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_sequence_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_sequence_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946)
+#define BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946
 
 #include <boost/mpl/bool.hpp>
 
@@ -20,7 +19,7 @@
 {
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct is_sequence_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_view_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_view_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_view_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_IS_VIEW_IMPL_200604227_2150)
+#define BOOST_FUSION_IS_VIEW_IMPL_200604227_2150
 
 #include <boost/mpl/bool.hpp>
 
@@ -20,7 +19,7 @@
 {
   namespace extension
   {
- template<typename>
+ template<typename Tag>
     struct is_view_impl;
 
     template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/next_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_NEXT_IMPL_20060222_1859)
+#define BOOST_FUSION_NEXT_IMPL_20060222_1859
 
 namespace example
 {
@@ -21,7 +20,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct next_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/prior_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/prior_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/prior_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_PRIOR_IMPL_20060222_1944)
+#define BOOST_FUSION_PRIOR_IMPL_20060222_1944
 
 namespace example
 {
@@ -21,7 +20,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct prior_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/size_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/size_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/size_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_SIZE_IMPL_20060223_2033)
+#define BOOST_FUSION_SIZE_IMPL_20060223_2033
 
 #include <boost/mpl/int.hpp>
 
@@ -20,7 +19,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct size_impl;
 
         template<>
@@ -28,7 +27,7 @@
         {
             template<typename Sequence>
             struct apply
- : mpl::int_<2>
+ : mpl::int_<2>
             {};
         };
     }

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_VALUE_AT_IMPL_20060223_2025)
+#define BOOST_FUSION_VALUE_AT_IMPL_20060223_2025
 
 namespace example
 {
@@ -18,7 +17,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct value_at_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_key_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025)
+#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025
 
 namespace fields
 {
@@ -24,7 +23,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct value_at_key_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_of_impl.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_VALUE_OF_IMPL_20060223_1905)
+#define BOOST_FUSION_VALUE_OF_IMPL_20060223_1905
 
 #include <string>
 
@@ -23,7 +22,7 @@
 
     namespace extension
     {
- template<typename>
+ template<typename Tag>
         struct value_of_impl;
 
         template<>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_EXAMPLE_STRUCT)
+#define BOOST_FUSION_EXAMPLE_STRUCT
 
 #include "./tag_of.hpp"
 #include "./example_struct_iterator.hpp"

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_iterator.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,13 +5,13 @@
     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
-#define
+#if !defined(BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR)
+#define BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR
 
 #include <boost/fusion/support/iterator_base.hpp>
 #include <boost/fusion/support/tag_of_fwd.hpp>
 #include <boost/mpl/int.hpp>
+#include <boost/type_traits/add_const.hpp>
 #include <boost/static_assert.hpp>
 
 #include "./detail/next_impl.hpp"

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_type.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_type.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_type.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_EXAMPLE_STRUCT_TYPE)
+#define BOOST_FUSION_EXAMPLE_STRUCT_TYPE
 
 #include <string>
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/tag_of.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,9 +5,8 @@
     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
-#define
+#if !defined(BOOST_FUSION_TAG_OF_20060222_2052)
+#define BOOST_FUSION_TAG_OF_20060222_2052
 
 #include <boost/fusion/support/tag_of_fwd.hpp>
 #include "./example_struct_type.hpp"

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -17,8 +17,10 @@
 
 #include <boost/fusion/sequence/sequence_facade.hpp>
 #include <boost/fusion/iterator/iterator_facade.hpp>
+
 #include <boost/fusion/sequence/intrinsic.hpp>
 #include <boost/fusion/iterator.hpp>
+
 #include <boost/fusion/support/category_of.hpp>
 
 #include <boost/mpl/int.hpp>
@@ -41,7 +43,7 @@
         : fusion::iterator_facade<triple_iterator<Seq, N>, fusion::random_access_traversal_tag>
     {
         typedef mpl::int_<N> index;
- typedef Seq seq_type;
+ typedef Seq sequence_type;
 
         triple_iterator(Seq& seq)
             : seq_(seq) {}
@@ -127,7 +129,7 @@
         struct next
         {
             typedef triple_iterator<
- typename It::seq_type, It::index::value + 1> type;
+ typename It::sequence_type, It::index::value + 1> type;
 
             static type call(It const& it)
             {
@@ -139,7 +141,7 @@
         struct prior
         {
             typedef triple_iterator<
- typename It::seq_type, It::index::value - 1> type;
+ typename It::sequence_type, It::index::value - 1> type;
 
             static type call(It const& it)
             {
@@ -162,7 +164,7 @@
         struct advance
         {
             typedef triple_iterator<
- typename It::seq_type,
+ typename It::sequence_type,
                 It::index::value + M::value> type;
 
             static type call(It const& it)

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/performance/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/performance/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/performance/Jamfile 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -16,5 +16,5 @@
 
 exe sequence_efficiency : sequence_efficiency.cpp ;
 
-#exe functional : functional.cpp ;
+exe functional : functional.cpp ;
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/performance/accumulate.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/performance/accumulate.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/performance/accumulate.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -82,9 +82,9 @@
         template<typename Sig>
         struct result;
 
- template<typename Self,typename Lhs, typename Rhs>
- struct result<Self(Lhs,Rhs)>
- : boost::fusion::detail::remove_reference<Lhs>
+ template<typename Lhs, typename Rhs>
+ struct result<poly_add(Lhs,Rhs)>
+ : boost::remove_reference<Lhs>
         {};
 
         template<typename Lhs, typename Rhs>
@@ -99,9 +99,9 @@
         template<typename Sig>
         struct result;
 
- template<typename Self,typename Lhs, typename Rhs>
- struct result<Self(Lhs, Rhs)>
- : boost::fusion::detail::remove_reference<Lhs>
+ template<typename Lhs, typename Rhs>
+ struct result<poly_mult(Lhs, Rhs)>
+ : boost::remove_reference<Lhs>
         {};
 
         template<typename Lhs, typename Rhs>
@@ -249,14 +249,15 @@
     {
         template<typename Lhs, typename Rhs>
         struct result
- : boost::fusion::detail::remove_reference<Lhs>
- {};
+ {
+ typedef Lhs type;
+ };
         
         template<typename Lhs, typename Rhs>
         typename result<Lhs,Rhs>::type
         operator()(const Lhs& lhs, const Rhs& rhs) const
         {
- return rhs + boost::fusion::at_c<0>(lhs) * boost::fusion::at_c<1>(lhs);
+ return lhs + boost::fusion::at_c<0>(rhs) * boost::fusion::at_c<1>(rhs);
         }
     };
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/performance/functional.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/performance/functional.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/performance/functional.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -10,10 +10,12 @@
 #include <boost/fusion/container/list.hpp>
 #include <boost/fusion/container/vector.hpp>
 #include <boost/fusion/algorithm/iteration/fold.hpp>
-#include <boost/fusion/functional/adapter/unfused_generic.hpp>
-#include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
+#include <boost/fusion/functional/adapter/unfused.hpp>
 #include <boost/fusion/functional/adapter/fused_function_object.hpp>
 
+#include <boost/functional/forward_adapter.hpp>
+#include <boost/functional/lightweight_forward_adapter.hpp>
+
 #include <boost/utility/result_of.hpp>
 #include <boost/config.hpp>
 #include <boost/timer.hpp>
@@ -36,7 +38,7 @@
     struct fused_sum
     {
         template <typename Seq>
- int operator()(Seq const& seq) const
+ int operator()(Seq const & seq) const
         {
             int state = 0;
             return boost::fusion::fold(seq, state, sum_op());
@@ -49,13 +51,13 @@
         struct sum_op
         {
             template <typename T>
- int operator()(int value, T const& elem) const
+ int operator()(T const & elem, int value) const
             {
               return value + sizeof(T) * elem;
             }
 
             template <typename T>
- int operator()(int value, T & elem) const
+ int operator()(T & elem, int value) const
             {
               elem += sizeof(T);
               return value;
@@ -72,22 +74,22 @@
             return 0;
         }
         template<typename T0>
- inline int operator()(T0 const& a0) const
+ inline int operator()(T0 const & a0) const
         {
             return a0;
         }
         template<typename T0, typename T1>
- inline int operator()(T0 const& a0, T1 const& a1) const
+ inline int operator()(T0 const & a0, T1 const & a1) const
         {
             return a0 + a1;
         }
         template<typename T0, typename T1, typename T2>
- inline int operator()(T0 const& a0, T1 const& a1, T2 a2) const
+ inline int operator()(T0 const & a0, T1 const & a1, T2 a2) const
         {
             return a0 + a1 + a2;
         }
         template<typename T0, typename T1, typename T2, typename T3>
- inline int operator()(T0 const& a0, T1 const& a1, T2 const& a2, T3 const& a3) const
+ inline int operator()(T0 const & a0, T1 const & a1, T2 const & a2, T3 const & a3) const
         {
             return a0 + a1 + a2 + a3;
         }
@@ -96,7 +98,7 @@
     };
 
     template<typename F>
- double call_unfused(F func, int & j)
+ double call_unfused(F const & func, int & j)
     {
         boost::timer tim;
         int i = 0;
@@ -139,7 +141,7 @@
     }
 
     template<typename F>
- double call_fused_ra(F func, int & j)
+ double call_fused_ra(F const & func, int & j)
     {
         boost::timer tim;
         int i = 0;
@@ -192,7 +194,7 @@
     }
 
     template<typename F>
- double call_fused(F func, int & j)
+ double call_fused(F const & func, int & j)
     {
         boost::timer tim;
         int i = 0;
@@ -265,13 +267,13 @@
         total += res;
     }
     {
- boost::fusion::unfused_rvalue_args<F> f;
- std::cout << "unfused_rvalue_args<F> " << call_unfused(f,res) << std::endl;
+ boost::lightweight_forward_adapter< boost::fusion::unfused<F> > f;
+ std::cout << "lightweight_forward_adapter< unfused<F> > " << call_unfused(f,res) << std::endl;
         total += res;
     }
     {
- boost::fusion::unfused_generic<F> f;
- std::cout << "unfused_generic<F> " << call_unfused(f,res) << std::endl;
+ boost::forward_adapter< boost::fusion::unfused<F> > f;
+ std::cout << "forward_adapter< unfused<F> > " << call_unfused(f,res) << std::endl;
         total += res;
     }
     std::cout << std::endl << "Fused adapters:" << std::endl;
@@ -291,13 +293,13 @@
         total += res;
     }
     {
- boost::fusion::unfused_rvalue_args< boost::fusion::fused_function_object<U> > f;
- std::cout << "unfused_rvalue_args<fused_function_object<U> > " << call_unfused(f,res) << std::endl;
+ boost::lightweight_forward_adapter< boost::fusion::unfused< boost::fusion::fused_function_object<U> > > f;
+ std::cout << "lightweight_forward_adapter< unfused<fused_function_object<U> > >" << call_unfused(f,res) << std::endl;
         total += res;
     }
     {
- boost::fusion::unfused_generic< boost::fusion::fused_function_object<U> > f;
- std::cout << "unfused_generic<fused_function_object<U> > " << call_unfused(f,res) << std::endl;
+ boost::forward_adapter< boost::fusion::unfused< boost::fusion::fused_function_object<U> > > f;
+ std::cout << "forward_adapter< unfused<fused_function_object<U> > > " << call_unfused(f,res) << std::endl;
         total += res;
     }
  

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -42,9 +42,9 @@
         template<typename Sig>
         struct result;
 
- template<typename Self,typename Lhs, typename Rhs>
- struct result<Self(Lhs, Rhs)>
- : boost::fusion::detail::remove_reference<Lhs>
+ template<typename Lhs, typename Rhs>
+ struct result<poly_add(Lhs, Rhs)>
+ : boost::remove_reference<Lhs>
         {};
 
         template<typename Lhs, typename Rhs>
@@ -59,9 +59,9 @@
         template<typename Sig>
         struct result;
 
- template<typename Self,typename Lhs, typename Rhs>
- struct result<Self(Lhs, Rhs)>
- : boost::fusion::detail::remove_reference<Lhs>
+ template<typename Lhs, typename Rhs>
+ struct result<poly_mult(Lhs, Rhs)>
+ : boost::remove_reference<Lhs>
         {};
 
         template<typename Lhs, typename Rhs>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product2.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product2.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product2.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -42,9 +42,9 @@
         template<typename Sig>
         struct result;
 
- template<typename Self,typename Lhs, typename Rhs>
- struct result<Self(Lhs, Rhs)>
- : boost::fusion::detail::remove_reference<Lhs>
+ template<typename Lhs, typename Rhs>
+ struct result<poly_add(Lhs, Rhs)>
+ : boost::remove_reference<Lhs>
         {};
 
         template<typename Lhs, typename Rhs>
@@ -59,9 +59,9 @@
         template<typename Sig>
         struct result;
 
- template<typename Self,typename Lhs, typename Rhs>
- struct result<Self(Lhs, Rhs)>
- : boost::fusion::detail::remove_reference<Lhs>
+ template<typename Lhs, typename Rhs>
+ struct result<poly_mult(Lhs, Rhs)>
+ : boost::remove_reference<Lhs>
         {};
 
         template<typename Lhs, typename Rhs>
@@ -119,9 +119,9 @@
         template<typename Sig>
         struct result;
 
- template<typename Self,typename Lhs, typename Rhs>
- struct result<Self(Lhs, Rhs)>
- : boost::fusion::detail::remove_reference<Lhs>
+ template<typename Lhs, typename Rhs>
+ struct result<poly_combine(Lhs, Rhs)>
+ : boost::remove_reference<Lhs>
         {};
         
         template<typename Lhs, typename Rhs>

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/performance/measure.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/performance/measure.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/performance/measure.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,11 +1,7 @@
-/*=============================================================================
- Copyright (c) 2005 David Abrahams
- Copyright (c) 2005 Matthias Troyer
- Copyright (c) 2005 Michael Gauckler
-
- 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)
-==============================================================================*/
+// Copyright David Abrahams, Matthias Troyer, Michael Gauckler
+// 2005. 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)
 
 #if !defined(LIVE_CODE_TYPE)
 # define LIVE_CODE_TYPE int

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/performance/sequence_efficiency.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/performance/sequence_efficiency.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/performance/sequence_efficiency.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -6,7 +6,6 @@
 ==============================================================================*/
 #include "measure.hpp"
 
-//TODO: BOOST_FUSION_MAX
 #define FUSION_MAX_LIST_SIZE 30
 #define FUSION_MAX_VECTOR_SIZE 30
 
@@ -65,9 +64,9 @@
         template<typename Sig>
         struct result;
 
- template<typename Self,typename Lhs, typename Rhs>
- struct result<Self(Lhs, Rhs)>
- : boost::fusion::detail::remove_reference<Lhs>
+ template<typename Lhs, typename Rhs>
+ struct result<poly_add(Lhs, Rhs)>
+ : boost::remove_reference<Lhs>
         {};
 
         template<typename Lhs, typename Rhs>
@@ -82,7 +81,7 @@
     struct accumulator
     {
         accumulator()
- : sum()
+ : sum()
         {}
         
         template <typename Sequence>
@@ -99,7 +98,7 @@
     struct plain_accumulator
     {
         plain_accumulator()
- : sum()
+ : sum()
         {}
         
         template <typename X>
@@ -195,8 +194,8 @@
         test::hammer<accumulator<int> >(lsmall, repeats);
         test::hammer<accumulator<int> >(vmedium, repeats);
         test::hammer<accumulator<int> >(lmedium, repeats);
- //test::hammer<accumulator<int> >(vbig, repeats);
- //test::hammer<accumulator<int> >(lbig, repeats);
+ test::hammer<accumulator<int> >(vbig, repeats);
+ test::hammer<accumulator<int> >(lbig, repeats);
 
         measured = time.elapsed();
     }
@@ -221,8 +220,8 @@
     check(lsmall, "small list accumulated result: ");
     check(vmedium, "medium vector accumulated result: ");
     check(lmedium, "medium list accumulated result: ");
- //check(vbig, "big vector accumulated result: ");
- //check(lbig, "big list accumulated result: ");
+ check(vbig, "big vector accumulated result: ");
+ check(lbig, "big list accumulated result: ");
 
     std::cout
         << "-------------------------------------------------------------------"
@@ -232,8 +231,8 @@
     measure(lsmall, "small list time: ", repeats, base_time);
     measure(vmedium, "medium vector time: ", repeats, base_time);
     measure(lmedium, "medium list time: ", repeats, base_time);
- //measure(vbig, "big vector time: ", repeats, base_time);
- //measure(lbig, "big list time: ", repeats, base_time);
+ measure(vbig, "big vector time: ", repeats, base_time);
+ measure(lbig, "big list time: ", repeats, base_time);
 
     std::cout
         << "-------------------------------------------------------------------"

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/performance/zip_efficiency.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/performance/zip_efficiency.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/performance/zip_efficiency.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -30,7 +30,7 @@
         struct result
         {
             typedef typename
- fusion::detail::remove_reference<
+ boost::remove_reference<
                     typename boost::fusion::result_of::value_at_c<Lhs, 0>::type
>::type
             type;

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -14,44 +14,40 @@
     [ run algorithm/all.cpp : : : : ]
     [ run algorithm/any.cpp : : : : ]
     [ run algorithm/clear.cpp : : : : ]
- [ run algorithm/count_if.cpp : : : : ]
     [ run algorithm/count.cpp : : : : ]
- [ run algorithm/erase_key.cpp : : : : ]
+ [ run algorithm/count_if.cpp : : : : ]
     [ run algorithm/erase.cpp : : : : ]
- [ run algorithm/filter_if.cpp : : : : ]
+ [ run algorithm/erase_key.cpp : : : : ]
     [ run algorithm/filter.cpp : : : : ]
- [ run algorithm/find_if.cpp : : : : ]
+ [ run algorithm/filter_if.cpp : : : : ]
     [ run algorithm/find.cpp : : : : ]
+ [ run algorithm/find_if.cpp : : : : ]
     [ run algorithm/fold.cpp : : : : ]
     [ run algorithm/for_each.cpp : : : : ]
- [ run algorithm/insert_range.cpp : : : : ]
     [ run algorithm/insert.cpp : : : : ]
- [ run algorithm/join.cpp : : : : ]
+ [ run algorithm/insert_range.cpp : : : : ]
     [ run algorithm/none.cpp : : : : ]
     [ run algorithm/pop_back.cpp : : : : ]
     [ run algorithm/pop_front.cpp : : : : ]
     [ run algorithm/push_back.cpp : : : : ]
     [ run algorithm/push_front.cpp : : : : ]
- [ run algorithm/remove_if.cpp : : : : ]
     [ run algorithm/remove.cpp : : : : ]
- [ run algorithm/replace_if.cpp : : : : ]
+ [ run algorithm/remove_if.cpp : : : : ]
     [ run algorithm/replace.cpp : : : : ]
+ [ run algorithm/replace_if.cpp : : : : ]
     [ run algorithm/reverse.cpp : : : : ]
     [ run algorithm/transform.cpp : : : : ]
- [ run algorithm/zip_ignore.cpp : : : : ]
+ [ run algorithm/join.cpp : : : : ]
     [ run algorithm/zip.cpp : : : : ]
     [ run algorithm/zip2.cpp : : : : ]
+ [ run algorithm/zip_ignore.cpp : : : : ]
 
- [ run sequence/adapt_struct.cpp : : : : ]
- [ run sequence/adapt_assoc_struct.cpp : : : : ]
- [ run sequence/array.cpp : : : : ]
     [ run sequence/as_list.cpp : : : : ]
     [ run sequence/as_map.cpp : : : : ]
     [ run sequence/as_set.cpp : : : : ]
     [ run sequence/as_vector.cpp : : : : ]
     [ run sequence/boost_tuple.cpp : : : : ]
     [ run sequence/cons.cpp : : : : ]
- [ run sequence/deduce_sequence.cpp : : : : ]
     [ run sequence/filter_view.cpp : : : : ]
     [ run sequence/io.cpp : : : : ]
     [ run sequence/iterator_range.cpp : : : : ]
@@ -64,16 +60,17 @@
     [ run sequence/list_misc.cpp : : : : ]
     [ run sequence/list_mutate.cpp : : : : ]
     [ run sequence/list_tie.cpp : : : : ]
- [ run sequence/map_tie.cpp : : : : ]
+ [ run sequence/list_value_at.cpp : : : : ]
+ [ run sequence/make_list.cpp : : : : ]
+ [ run sequence/make_vector.cpp : : : : ]
     [ run sequence/map.cpp : : : : ]
+ [ run sequence/map_tie.cpp : : : : ]
     [ run sequence/nview.cpp : : : : ]
     [ run sequence/reverse_view.cpp : : : : ]
     [ run sequence/set.cpp : : : : ]
     [ run sequence/single_view.cpp : : : : ]
     [ run sequence/std_pair.cpp : : : : ]
- [ run sequence/swap.cpp : : : : ]
- [ run sequence/tr1_tuple_auto_conv.cpp : : : : ]
- [ run sequence/transform_view.cpp : : : : ]
+ [ run sequence/array.cpp : : : : ]
     [ run sequence/tuple_comparison.cpp : : : : ]
     [ run sequence/tuple_construction.cpp : : : : ]
     [ run sequence/tuple_copy.cpp : : : : ]
@@ -82,6 +79,8 @@
     [ run sequence/tuple_misc.cpp : : : : ]
     [ run sequence/tuple_mutate.cpp : : : : ]
     [ run sequence/tuple_tie.cpp : : : : ]
+ [ run sequence/tr1_tuple_auto_conv.cpp : : : : ]
+ [ run sequence/transform_view.cpp : : : : ]
     [ run sequence/vector_comparison.cpp : : : : ]
     [ run sequence/vector_construction.cpp : : : : ]
     [ run sequence/vector_copy.cpp : : : : ]
@@ -92,22 +91,27 @@
     [ run sequence/vector_n.cpp : : : : ]
     [ run sequence/vector_tie.cpp : : : : ]
     [ run sequence/vector_value_at.cpp : : : : ]
- [ run sequence/zip_view_ignore.cpp : : : : ]
     [ run sequence/zip_view.cpp : : : : ]
     [ run sequence/zip_view2.cpp : : : : ]
+ [ run sequence/zip_view_ignore.cpp : : : : ]
+ [ run sequence/repetitive_view.cpp : : : : ]
+ [ run sequence/deduce_sequence.cpp : : : : ]
+ [ run sequence/adapt_struct.cpp : : : : ]
+ [ run sequence/adapt_assoc_struct.cpp : : : : ]
+ [ run sequence/swap.cpp : : : : ]
 
+ [ run functional/fused.cpp : : : : ]
     [ run functional/fused_function_object.cpp : : : : ]
     [ run functional/fused_procedure.cpp : : : : ]
- [ run functional/fused.cpp : : : : ]
- [ run functional/invoke_function_object.cpp : : : : ]
- [ run functional/invoke_procedure.cpp : : : : ]
- [ run functional/invoke.cpp : : : : ]
+ [ run functional/unfused.cpp : : : : ]
+ [ run functional/unfused_typed.cpp : : : : ]
+ [ run functional/make_fused.cpp : : : : ]
     [ run functional/make_fused_function_object.cpp : : : : ]
     [ run functional/make_fused_procedure.cpp : : : : ]
- [ run functional/make_fused.cpp : : : : ]
     [ run functional/make_unfused.cpp : : : : ]
- [ run functional/unfused_typed.cpp : : : : ]
- [ run functional/unfused.cpp : : : : ]
+ [ run functional/invoke.cpp : : : : ]
+ [ run functional/invoke_function_object.cpp : : : : ]
+ [ run functional/invoke_procedure.cpp : : : : ]
 
 # [ compile-fail xxx.cpp : : : : ]
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/clear.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/clear.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/clear.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -5,8 +5,7 @@
     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/adapted/mpl.hpp>
-#include <boost/fusion/container/vector.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 #include <boost/fusion/container/generation/make_vector.hpp>
@@ -22,6 +21,8 @@
     std::cout << tuple_close(']');
     std::cout << tuple_delimiter(", ");
 
+/// Testing pop_back
+
     {
         char const* s = "Ruby";
         typedef vector<int, char, double, char const*> vector_type;

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,19 +1,18 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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/vector/vector.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/adapted/mpl.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/container/generation/make_vector.hpp>
 #include <boost/fusion/algorithm/transformation/erase.hpp>
-
 #include <boost/mpl/vector_c.hpp>
 #include <boost/mpl/begin_end.hpp>
 #include <boost/mpl/advance.hpp>
@@ -38,10 +37,10 @@
     {
         typedef vector<int, char, double, char const*> vector_type;
         vector_type t1(1, 'x', 3.3, "Ruby");
- typedef
- result_of::advance_c<result_of::begin<vector_type>::type,2>::type
- it;
- it pos(advance_c<2>(boost::fusion::begin(t1)));
+ //TODO
+ //vector_iterator<vector_type, 2> pos(t1);
+ result_of::advance_c<result_of::begin<vector_type>::type,2>::type
+ pos=advance_c<2>(boost::fusion::begin(t1));
 
         std::cout << erase(t1, pos) << std::endl;
         BOOST_TEST((erase(t1, pos) == make_vector(1, 'x', std::string("Ruby"))));
@@ -57,7 +56,8 @@
         typedef boost::mpl::next<n2>::type n3;
 
         BOOST_STATIC_ASSERT((boost::is_same<mpl_vec_at3, n3>::value));
-
+
+
         std::cout << erase(mpl_vec(), mpl_vec_at3()) << std::endl;
         BOOST_TEST((erase(mpl_vec(), mpl_vec_at3())
             == make_vector(1, 2, 3, 5)));

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -29,7 +29,7 @@
 {
     using namespace boost::fusion;
     std::cout << set << std::endl;
-
+
     BOOST_STATIC_ASSERT(result_of::size<Set>::value == 3);
     BOOST_TEST((*find<int>(set) == 1));
     BOOST_TEST((*find<double>(set) == 1.5));
@@ -40,24 +40,29 @@
 typedef boost::mpl::int_<2> _2;
 typedef boost::mpl::int_<3> _3;
 typedef boost::mpl::int_<4> _4;
-
+
 template <typename Map>
 void test_map(Map const& map)
 {
     using namespace boost::fusion;
     std::cout << map << std::endl;
-
+
     BOOST_STATIC_ASSERT(result_of::size<Map>::value == 3);
- //TODO!!!
+ //TODO
     //BOOST_TEST(((*find<_1>(map)).second == 1));
     //BOOST_TEST(((*find<_3>(map)).second == 1.5));
     //BOOST_TEST(((*find<_4>(map)).second == std::string("hello")));
+ BOOST_TEST(((*find_key<_1>(map)).second == 1));
+ BOOST_TEST(((*find_key<_3>(map)).second == 1.5));
+ BOOST_TEST(((*find_key<_4>(map)).second == std::string("hello")));
 }
 
 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/algorithm/find.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -11,7 +11,6 @@
 #include <boost/fusion/container/map/map.hpp>
 #include <boost/fusion/algorithm/query/find.hpp>
 #include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/sequence/io/out.hpp>
 #include <boost/mpl/vector.hpp>
 #include <string>
 
@@ -61,8 +60,8 @@
         map_type seq(
             make_pair<int>('X')
           , make_pair<double>("Men"));
-
- //TODO!!!
+
+ //TODO
         //std::cout << *boost::fusion::find<int>(seq) << std::endl;
         //std::cout << *boost::fusion::find<double>(seq) << std::endl;
         //BOOST_TEST((*boost::fusion::find<int>(seq)).second == 'X');

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find_if.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find_if.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find_if.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -50,7 +50,7 @@
         using boost::mpl::_;
 
         typedef vector<int, char, X, double> mpl_vec;
- BOOST_TEST((*boost::fusion::find_if<is_same<_, X> >(mpl_vec()) == 12345));
+ BOOST_TEST((*find_if<is_same<_, X> >(mpl_vec()) == 12345));
     }
 
     {
@@ -61,7 +61,7 @@
         using boost::mpl::_;
 
         typedef vector_c<int, 1, 2, 3, 4> mpl_vec;
- BOOST_TEST((*boost::fusion::find_if<less<_, int_<3> > >(mpl_vec()) == 1));
+ BOOST_TEST((*find_if<less<_, int_<3> > >(mpl_vec()) == 1));
     }
 
     return boost::report_errors();

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -2,7 +2,7 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -34,18 +34,15 @@
     template<typename T>
     struct result;
 
- template <typename Self,typename State,typename T>
- struct result<Self(State,T)>
+ template <typename State, typename T>
+ struct result<add_ints_only(State, T)>
     {
- //TODO cschmidt: remove_reference does not support rvalue refs yet,
- //therefore we use the internal function of fusion!
- typedef typename boost::fusion::detail::identity<T>::type type;
- //typedef typename boost::remove_const<
- // typename boost::remove_reference<State>::type>::type type;
+ typedef typename boost::remove_const<
+ typename boost::remove_reference<State>::type>::type type;
     };
 
     template <typename State, typename T>
- State const&
+ State
     operator()(State const& state, T const& x) const
     {
         return state;
@@ -63,15 +60,13 @@
     template<typename T>
     struct result;
 
- template <typename Self,typename CountT,typename T>
- struct result<Self(CountT, T)>
+ template <typename CountT, typename T>
+ struct result<count_ints(CountT, T)>
     {
- typedef typename boost::fusion::detail::identity<T>::type elem;
- typedef typename boost::fusion::detail::identity<CountT>::type state;
- //typedef typename boost::remove_const<
- // typename boost::remove_reference<T>::type>::type elem;
- //typedef typename boost::remove_const<
- // typename boost::remove_reference<CountT>::type>::type state;
+ typedef typename boost::remove_const<
+ typename boost::remove_reference<CountT>::type>::type state;
+ typedef typename boost::remove_const<
+ typename boost::remove_reference<T>::type>::type elem;
 
         typedef typename
             if_<
@@ -101,6 +96,25 @@
     }
 };
 
+struct lvalue_adder
+{
+ template<typename Sig>
+ struct result;
+
+ template<typename T0, typename T1>
+ struct result<lvalue_adder(T0, T1&)>
+ {
+ // Second argument still needs to support rvalues - see definition of fusion::fold
+ typedef T1 type;
+ };
+
+ template<typename T0, typename T1>
+ T1 operator()(T0 const& lhs, T1& rhs) const
+ {
+ return lhs + rhs;
+ }
+};
+
 int add(int lhs, int rhs)
 {
     return lhs + rhs;
@@ -152,6 +166,11 @@
 
     {
         vector<int, int> vec(1,2);
+ BOOST_TEST(fusion::fold(vec, 0, lvalue_adder()) == 3);
+ }
+
+ {
+ vector<int, int> vec(1,2);
         BOOST_TEST(fusion::fold(vec, 0, add) == 3);
     }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -9,6 +9,8 @@
 #include <boost/fusion/adapted/mpl.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/container/generation/make_vector.hpp>
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 #include <boost/mpl/vector_c.hpp>
@@ -37,10 +39,10 @@
         char const* s = "Ruby";
         typedef vector<int, char, double, char const*> vector_type;
         vector_type t1(1, 'x', 3.3, s);
- typedef
- result_of::advance_c<result_of::begin<vector_type>::type,2>::type
- it;
- it pos(advance_c<2>(boost::fusion::begin(t1)));
+ //TODO
+ //vector_iterator<vector_type, 2> pos(t1);
+ result_of::advance_c<result_of::begin<vector_type>::type,2>::type
+ pos=advance_c<2>(fusion::begin(t1));
 
         std::cout << insert(t1, pos, 123456) << std::endl;
         BOOST_TEST((insert(t1, pos, 123456)

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert_range.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert_range.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert_range.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -9,6 +9,8 @@
 #include <boost/fusion/adapted/mpl.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/container/generation/make_vector.hpp>
 #include <boost/fusion/algorithm/transformation/insert_range.hpp>
 #include <boost/mpl/vector_c.hpp>
@@ -37,10 +39,10 @@
         char const* s = "Ruby";
         typedef vector<int, char, double, char const*> vector_type;
         vector_type t1(1, 'x', 3.3, s);
- typedef
- result_of::advance_c<result_of::begin<vector_type>::type,2>::type
- it;
- it pos(advance_c<2>(boost::fusion::begin(t1)));
+ //TODO
+ //vector_iterator<vector_type, 2> pos(t1);
+ result_of::advance_c<result_of::begin<vector_type>::type,2>::type
+ pos=advance_c<2>(fusion::begin(t1));
 
         typedef vector<int, char> vector_type2;
         vector_type2 t2(999, 'z');

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/replace_if.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/replace_if.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/replace_if.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -41,8 +41,8 @@
         vector_type t1(1, 2, 3.3, 4, s, 5.5);
 
         {
- std::cout << replace_if(t1, gt3(), -456) << std::endl;
- //TODO!!!
+ //TODO
+ //std::cout << replace_if(t1, gt3(), -456) << std::endl;
             //BOOST_TEST((replace_if(t1, gt3(), -456)
             // == make_vector(1, 2, -456, -456, s, -456)));
         }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/transform.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/transform.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/transform.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -19,7 +19,14 @@
 
 struct square
 {
- typedef int result_type;
+ template<typename Sig>
+ struct result;
+
+ template <typename T>
+ struct result<square(T)>
+ {
+ typedef int type;
+ };
 
     template <typename T>
     int operator()(T x) const
@@ -30,7 +37,14 @@
 
 struct add
 {
- typedef int result_type;
+ template<typename Sig>
+ struct result;
+
+ template <typename A, typename B>
+ struct result<add(A, B)>
+ {
+ typedef int type;
+ };
 
     template <typename A, typename B>
     int operator()(A a, B b) const
@@ -44,8 +58,8 @@
     template<typename Sig>
     struct result;
 
- template<typename Self,typename T>
- struct result<Self(T&)>
+ template<typename T>
+ struct result<unary_lvalue_transform(T&)>
     {
         typedef T* type;
     };
@@ -67,8 +81,8 @@
     template<typename Sig>
     struct result;
 
- template<typename Self,typename T0, typename T1>
- struct result<Self(T0&,T1&)>
+ template<typename T0, typename T1>
+ struct result<binary_lvalue_transform(T0&,T1&)>
     {
         typedef T0* type;
     };
@@ -93,8 +107,8 @@
 /// Testing the transform
 
     {
- typedef range_c<int, 5, 9> seq_type;
- seq_type sequence;
+ typedef range_c<int, 5, 9> sequence_type;
+ sequence_type sequence;
         std::cout << transform(sequence, square()) << std::endl;
         BOOST_TEST((transform(sequence, square()) == make_vector(25, 36, 49, 64)));
     }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Makefile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Makefile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Makefile 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,6 +1,6 @@
 #=============================================================================
 # 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).

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,12 +1,12 @@
 /*=============================================================================
     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).
 ==============================================================================*/
 
-#ifndef BOOST_FUSION_COMPILE_TIME_DRIVER
+#if !defined(BOOST_FUSION_COMPILE_TIME_DRIVER)
 #define BOOST_FUSION_COMPILE_TIME_DRIVER
 
 int main()

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,6 +1,6 @@
 /*=============================================================================
     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).
@@ -19,18 +19,7 @@
 
   struct f
   {
-#ifdef NO_PREEVALUATE
- template<typename Sig>
- struct result;
-
- template<typename Self, typename State, typename D>
- struct result<Self(State, D)>
- {
- typedef int type;
- };
-#else
     typedef int result_type;
-#endif
 
     template<int n, int batch>
     int operator()(int state, distinct<n, batch> const& d) const

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,6 +1,6 @@
 /*=============================================================================
     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).

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,6 +1,6 @@
 /*=============================================================================
     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).

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,6 +1,6 @@
 /*=============================================================================
     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).

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,6 +1,6 @@
 /*=============================================================================
     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).

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -28,13 +28,13 @@
     typedef int result_type;
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y) const
+ int operator()(T0 const & x, T1 const & y) const
     {
         return 1+x-y;
     }
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y)
+ int operator()(T0 const & x, T1 const & y)
     {
         return 2+x-y;
     }
@@ -59,7 +59,7 @@
     typedef fusion::fused< test_func<> > ff;
     ff fused_func;
 
- typedef fusion::fused< test_func<noncopyable>& > ffr;
+ typedef fusion::fused< test_func<noncopyable> & > ffr;
     ffr fused_func_ref(f);
 
     typedef fusion::fused< test_func<> const > ffc;
@@ -68,7 +68,7 @@
     typedef fusion::fused< test_func<> > const ffc2;
     ffc2 fused_func_c2;
 
- typedef fusion::fused< test_func<noncopyable> const& > ffcr;
+ typedef fusion::fused< test_func<noncopyable> const & > ffcr;
     ffcr fused_func_c_ref(f);
 
     typedef fusion::vector<int,char> vec;
@@ -84,14 +84,11 @@
     BOOST_MPL_ASSERT((boost::is_same<boost::result_of<ffcr(vec)>::type, int>));
     BOOST_TEST(fused_func_c_ref(lv_vec) == 0);
 
- //TODO!!!
- /*
     BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1);
     BOOST_TEST(fused_func_c(fusion::make_vector(2,'\003')) == 0);
     BOOST_TEST(fused_func_c2(fusion::make_vector(2,'\003')) == 0);
     BOOST_TEST(fused_func_ref(fusion::make_vector(2,'\003')) == 1);
     BOOST_TEST(fused_func_c_ref(fusion::make_vector(2,'\003')) == 0);
- */
 
     return boost::report_errors();
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_function_object.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_function_object.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_function_object.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -32,13 +32,13 @@
     };
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y) const
+ int operator()(T0 const & x, T1 const & y) const
     {
         return 1+x-y;
     }
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y)
+ int operator()(T0 const & x, T1 const & y)
     {
         return 2+x-y;
     }
@@ -60,10 +60,10 @@
 {
     test_func<noncopyable> f;
     fusion::fused_function_object< test_func<> > fused_func;
- fusion::fused_function_object< test_func<noncopyable>& > fused_func_ref(f);
+ fusion::fused_function_object< test_func<noncopyable> & > fused_func_ref(f);
     fusion::fused_function_object< test_func<> const > fused_func_c;
     fusion::fused_function_object< test_func<> > const fused_func_c2;
- fusion::fused_function_object< test_func<noncopyable> const& > fused_func_c_ref(f);
+ fusion::fused_function_object< test_func<noncopyable> const & > fused_func_c_ref(f);
 
     fusion::vector<int,char> lv_vec(1,'\004');
     BOOST_TEST(fused_func(lv_vec) == 1);
@@ -72,12 +72,11 @@
     BOOST_TEST(fused_func_ref(lv_vec) == 1);
     BOOST_TEST(fused_func_c_ref(lv_vec) == 0);
 
- //TODO!!!
- //BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1);
- //BOOST_TEST(fused_func_c(fusion::make_vector(2,'\003')) == 0);
- //BOOST_TEST(fused_func_c2(fusion::make_vector(2,'\003')) == 0);
- //BOOST_TEST(fused_func_ref(fusion::make_vector(2,'\003')) == 1);
- //BOOST_TEST(fused_func_c_ref(fusion::make_vector(2,'\003')) == 0);
+ BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1);
+ BOOST_TEST(fused_func_c(fusion::make_vector(2,'\003')) == 0);
+ BOOST_TEST(fused_func_c2(fusion::make_vector(2,'\003')) == 0);
+ BOOST_TEST(fused_func_ref(fusion::make_vector(2,'\003')) == 1);
+ BOOST_TEST(fused_func_c_ref(fusion::make_vector(2,'\003')) == 0);
 
     return boost::report_errors();
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_procedure.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_procedure.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_procedure.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -31,13 +31,13 @@
     : Base
 {
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y) const
+ int operator()(T0 const & x, T1 const & y) const
     {
         return effect = 1+x-y;
     }
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y)
+ int operator()(T0 const & x, T1 const & y)
     {
         return effect = 2+x-y;
     }
@@ -59,10 +59,10 @@
 {
     test_func<noncopyable> f;
     fusion::fused_procedure< test_func<> > fused_proc;
- fusion::fused_procedure< test_func<noncopyable>& > fused_proc_ref(f);
+ fusion::fused_procedure< test_func<noncopyable> & > fused_proc_ref(f);
     fusion::fused_procedure< test_func<> const > fused_proc_c;
     fusion::fused_procedure< test_func<> > const fused_proc_c2;
- fusion::fused_procedure< test_func<noncopyable> const& > fused_proc_c_ref(f);
+ fusion::fused_procedure< test_func<noncopyable> const & > fused_proc_c_ref(f);
 
     fusion::vector<int,char> lv_vec(1,'\004');
     CHECK_EFFECT(fused_proc(lv_vec), 1);
@@ -71,14 +71,11 @@
     CHECK_EFFECT(fused_proc_ref(lv_vec), 1);
     CHECK_EFFECT(fused_proc_c_ref(lv_vec), 0);
 
- //TODO!!!
- /*
     CHECK_EFFECT(fused_proc(fusion::make_vector(2,'\003')), 1);
     CHECK_EFFECT(fused_proc_c(fusion::make_vector(2,'\003')), 0);
     CHECK_EFFECT(fused_proc_c2(fusion::make_vector(2,'\003')), 0);
     CHECK_EFFECT(fused_proc_ref(fusion::make_vector(2,'\003')), 1);
     CHECK_EFFECT(fused_proc_c_ref(fusion::make_vector(2,'\003')), 0);
- */
 
     return boost::report_errors();
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -30,7 +30,7 @@
 namespace fusion = boost::fusion;
 
 template <typename T>
-inline T const& const_(T const& t)
+inline T const & const_(T const & t)
 {
     return t;
 }
@@ -67,8 +67,8 @@
 
     int operator()(int i, object &) { return 4 + i; }
     int operator()(int i, object &) const { return 5 + i; }
- int operator()(int i, object const&) { return 6 + i; }
- int operator()(int i, object const&) const { return 7 + i; }
+ int operator()(int i, object const &) { return 6 + i; }
+ int operator()(int i, object const &) const { return 7 + i; }
 
     int operator()(int i, object &, object_nc &) { return 10 + i; }
     int operator()(int i, object &, object_nc &) const { return 11 + i; }
@@ -111,7 +111,7 @@
 int nullary() { return 16; }
 int unary(int i) { return 17 + i; }
 int binary1(int i, object &) { return 18 + i; }
-int binary2(int i, object const&) { return 19 + i; }
+int binary2(int i, object const &) { return 19 + i; }
 
 typedef int (* func_ptr)(int);
 typedef int (* const c_func_ptr)(int);
@@ -162,10 +162,10 @@
 fusion::single_view<members &> sv_ref_ctx( that);
 fusion::single_view<members *> sv_ptr_ctx(& that);
 fusion::single_view<members const > sv_obj_c_ctx( that);
-fusion::single_view<members const&> sv_ref_c_ctx( that);
+fusion::single_view<members const &> sv_ref_c_ctx( that);
 fusion::single_view<members const *> sv_ptr_c_ctx(& that);
-fusion::single_view<std::auto_ptr<members> const&> sv_spt_ctx(spt_that);
-fusion::single_view<std::auto_ptr<members const> const&> sv_spt_c_ctx(spt_that_c);
+fusion::single_view<std::auto_ptr<members> const &> sv_spt_ctx(spt_that);
+fusion::single_view< std::auto_ptr<members const> const &> sv_spt_c_ctx(spt_that_c);
 
 derived derived_that;
 
@@ -176,10 +176,10 @@
 fusion::single_view<derived &> sv_ref_d_ctx( derived_that);
 fusion::single_view<derived *> sv_ptr_d_ctx(& derived_that);
 fusion::single_view<derived const > sv_obj_c_d_ctx( derived_that);
-fusion::single_view<derived const&> sv_ref_c_d_ctx( derived_that);
+fusion::single_view<derived const &> sv_ref_c_d_ctx( derived_that);
 fusion::single_view<derived const *> sv_ptr_c_d_ctx(& derived_that);
-fusion::single_view<std::auto_ptr<derived> const&> sv_spt_d_ctx(spt_derived_that);
-fusion::single_view< std::auto_ptr<derived const> const&> sv_spt_c_d_ctx(spt_derived_that_c);
+fusion::single_view<std::auto_ptr<derived> const &> sv_spt_d_ctx(spt_derived_that);
+fusion::single_view< std::auto_ptr<derived const> const &> sv_spt_c_d_ctx(spt_derived_that_c);
 
 template <class Sequence>
 void test_sequence_n(Sequence & seq, mpl::int_<0>)
@@ -195,15 +195,15 @@
     // to be const with an explicit template argument. We can also request
     // the function object to be pased by reference...
     BOOST_TEST(const_(f)() == fusion::invoke<nullary_fobj const >(const_(f), seq ));
- BOOST_TEST(const_(f)() == fusion::invoke<nullary_fobj const&>(const_(f), const_(seq)));
+ BOOST_TEST(const_(f)() == fusion::invoke<nullary_fobj const &>(const_(f), const_(seq)));
 
     nullary_fobj_nc nc_f;
     // ...and we further ensure there is no copying in this case, using a
     // noncopyable function object.
     BOOST_TEST(nc_f () == fusion::invoke<nullary_fobj_nc &>(nc_f , seq ));
     BOOST_TEST(nc_f () == fusion::invoke<nullary_fobj_nc &>(nc_f , const_(seq)));
- BOOST_TEST(const_(nc_f)() == fusion::invoke<nullary_fobj_nc const&>(const_(nc_f), seq ));
- BOOST_TEST(const_(nc_f)() == fusion::invoke<nullary_fobj_nc const&>(const_(nc_f), const_(seq)));
+ BOOST_TEST(const_(nc_f)() == fusion::invoke<nullary_fobj_nc const &>(const_(nc_f), seq ));
+ BOOST_TEST(const_(nc_f)() == fusion::invoke<nullary_fobj_nc const &>(const_(nc_f), const_(seq)));
 
     // Builtin Functions
 
@@ -227,6 +227,7 @@
     BOOST_TEST(that.nullary_c() == fusion::invoke(& members::nullary_c, fusion::join(sv_spt_c_ctx,seq)));
 
     // Pointer to data member
+
     BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_obj_ctx,seq)) = that.data));
     BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ref_ctx,seq)) = that.data));
     BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ptr_ctx,seq)) = that.data));
@@ -253,13 +254,13 @@
     BOOST_TEST(f(element1) == fusion::invoke(f , seq ));
     BOOST_TEST(f(element1) == fusion::invoke(f , const_(seq)));
     BOOST_TEST(const_(f)(element1) == fusion::invoke<fobj const >(const_(f), seq ));
- BOOST_TEST(const_(f)(element1) == fusion::invoke<fobj const&>(const_(f), const_(seq)));
+ BOOST_TEST(const_(f)(element1) == fusion::invoke<fobj const &>(const_(f), const_(seq)));
 
     fobj_nc nc_f;
     BOOST_TEST(nc_f(element1) == fusion::invoke<fobj_nc &>(nc_f, seq ));
     BOOST_TEST(nc_f(element1) == fusion::invoke<fobj_nc &>(nc_f, const_(seq)));
- BOOST_TEST(const_(nc_f)(element1) == fusion::invoke<fobj_nc const&>(const_(nc_f), seq ));
- BOOST_TEST(const_(nc_f)(element1) == fusion::invoke<fobj_nc const&>(const_(nc_f), const_(seq)));
+ BOOST_TEST(const_(nc_f)(element1) == fusion::invoke<fobj_nc const &>(const_(nc_f), seq ));
+ BOOST_TEST(const_(nc_f)(element1) == fusion::invoke<fobj_nc const &>(const_(nc_f), const_(seq)));
 
     BOOST_TEST(unary(element1) == fusion::invoke<int (&)(int)>(unary, seq));
     BOOST_TEST(func_ptr1(element1) == fusion::invoke(func_ptr1, seq));

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_function_object.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_function_object.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_function_object.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -30,7 +30,7 @@
 namespace fusion = boost::fusion;
 
 template <typename T>
-inline T const& const_(T const& t)
+inline T const & const_(T const & t)
 {
     return t;
 }
@@ -70,8 +70,8 @@
 
     int operator()(int i, object &) { return 4 + i; }
     int operator()(int i, object &) const { return 5 + i; }
- int operator()(int i, object const&) { return 6 + i; }
- int operator()(int i, object const&) const { return 7 + i; }
+ int operator()(int i, object const &) { return 6 + i; }
+ int operator()(int i, object const &) const { return 7 + i; }
 
     int operator()(int i, object &, object_nc &) { return 10 + i; }
     int operator()(int i, object &, object_nc &) const { return 11 + i; }
@@ -133,15 +133,15 @@
     // to be const with an explicit template argument. We can also request
     // the function object to be pased by reference...
     BOOST_TEST(const_(f)() == fusion::invoke_function_object<nullary_fobj const >(const_(f), seq ));
- BOOST_TEST(const_(f)() == fusion::invoke_function_object<nullary_fobj const&>(const_(f), const_(seq)));
+ BOOST_TEST(const_(f)() == fusion::invoke_function_object<nullary_fobj const &>(const_(f), const_(seq)));
 
     nullary_fobj_nc nc_f;
     // ...and we further ensure there is no copying in this case, using a
     // noncopyable function object.
     BOOST_TEST(nc_f () == fusion::invoke_function_object<nullary_fobj_nc &>(nc_f , seq ));
     BOOST_TEST(nc_f () == fusion::invoke_function_object<nullary_fobj_nc &>(nc_f , const_(seq)));
- BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object<nullary_fobj_nc const&>(const_(nc_f), seq ));
- BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object<nullary_fobj_nc const&>(const_(nc_f), const_(seq)));
+ BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object<nullary_fobj_nc const &>(const_(nc_f), seq ));
+ BOOST_TEST(const_(nc_f)() == fusion::invoke_function_object<nullary_fobj_nc const &>(const_(nc_f), const_(seq)));
 }
 
 template <class Sequence>
@@ -151,13 +151,13 @@
     BOOST_TEST(f(element1) == fusion::invoke_function_object(f , seq ));
     BOOST_TEST(f(element1) == fusion::invoke_function_object(f , const_(seq)));
     BOOST_TEST(const_(f)(element1) == fusion::invoke_function_object<fobj const >(const_(f), seq ));
- BOOST_TEST(const_(f)(element1) == fusion::invoke_function_object<fobj const&>(const_(f), const_(seq)));
+ BOOST_TEST(const_(f)(element1) == fusion::invoke_function_object<fobj const &>(const_(f), const_(seq)));
 
     fobj_nc nc_f;
     BOOST_TEST(nc_f(element1) == fusion::invoke_function_object<fobj_nc &>(nc_f, seq ));
     BOOST_TEST(nc_f(element1) == fusion::invoke_function_object<fobj_nc &>(nc_f, const_(seq)));
- BOOST_TEST(const_(nc_f)(element1) == fusion::invoke_function_object<fobj_nc const&>(const_(nc_f), seq ));
- BOOST_TEST(const_(nc_f)(element1) == fusion::invoke_function_object<fobj_nc const&>(const_(nc_f), const_(seq)));
+ BOOST_TEST(const_(nc_f)(element1) == fusion::invoke_function_object<fobj_nc const &>(const_(nc_f), seq ));
+ BOOST_TEST(const_(nc_f)(element1) == fusion::invoke_function_object<fobj_nc const &>(const_(nc_f), const_(seq)));
 }
 
 template <class Sequence>

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_procedure.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_procedure.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_procedure.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -28,7 +28,7 @@
 namespace fusion = boost::fusion;
 
 template <typename T>
-inline T const& const_(T const& t)
+inline T const & const_(T const & t)
 {
     return t;
 }
@@ -69,10 +69,10 @@
 fusion::single_view<members &> sv_ref_ctx( that);
 fusion::single_view<members *> sv_ptr_ctx(& that);
 fusion::single_view<members const > sv_obj_c_ctx( that);
-fusion::single_view<members const&> sv_ref_c_ctx( that);
+fusion::single_view<members const &> sv_ref_c_ctx( that);
 fusion::single_view<members const *> sv_ptr_c_ctx(& that);
-fusion::single_view<std::auto_ptr<members> const&> sv_spt_ctx(spt_that);
-fusion::single_view< std::auto_ptr<members const> const&> sv_spt_c_ctx(spt_that_c);
+fusion::single_view<std::auto_ptr<members> const &> sv_spt_ctx(spt_that);
+fusion::single_view< std::auto_ptr<members const> const &> sv_spt_c_ctx(spt_that_c);
 
 struct fobj
 {
@@ -84,8 +84,8 @@
 
     int operator()(int & i, object &) { return i = 4; }
     int operator()(int & i, object &) const { return i = 5; }
- int operator()(int & i, object const&) { return i = 6; }
- int operator()(int & i, object const&) const { return i = 7; }
+ int operator()(int & i, object const &) { return i = 6; }
+ int operator()(int & i, object const &) const { return i = 7; }
 
     int operator()(int & i, object &, object_nc &) { return i = 10; }
     int operator()(int & i, object &, object_nc &) const { return i = 11; }
@@ -104,7 +104,7 @@
 int nullary() { return element1 = 16; }
 int unary(int & i) { return i = 17; }
 int binary1(int & i, object &) { return i = 18; }
-int binary2(int & i, object const&) { return i = 19; }
+int binary2(int & i, object const &) { return i = 19; }
 
 typedef int (* func_ptr)(int &);
 typedef int (* const c_func_ptr)(int &);
@@ -139,17 +139,17 @@
 
     // Note: The function object is taken by value, so we request the copy
     // to be const with an explicit template argument. We can also request
- // the function object to be passed by reference...
+ // the function object to be pased by reference...
     COMPARE_EFFECT(const_(f)(), fusion::invoke_procedure<fobj const >(const_(f), seq ));
- COMPARE_EFFECT(const_(f)(), fusion::invoke_procedure<fobj const&>(const_(f), const_(seq)));
+ COMPARE_EFFECT(const_(f)(), fusion::invoke_procedure<fobj const &>(const_(f), const_(seq)));
 
     fobj_nc nc_f;
     // ...and we further ensure there is no copying in this case, using a
     // noncopyable function object.
     COMPARE_EFFECT(nc_f (), fusion::invoke_procedure<fobj_nc &>(nc_f , seq ));
     COMPARE_EFFECT(nc_f (), fusion::invoke_procedure<fobj_nc &>(nc_f , const_(seq)));
- COMPARE_EFFECT(const_(nc_f)(), fusion::invoke_procedure<fobj_nc const&>(const_(nc_f), seq ));
- COMPARE_EFFECT(const_(nc_f)(), fusion::invoke_procedure<fobj_nc const&>(const_(nc_f), const_(seq)));
+ COMPARE_EFFECT(const_(nc_f)(), fusion::invoke_procedure<fobj_nc const &>(const_(nc_f), seq ));
+ COMPARE_EFFECT(const_(nc_f)(), fusion::invoke_procedure<fobj_nc const &>(const_(nc_f), const_(seq)));
 
     // Builtin Functions
 
@@ -180,13 +180,13 @@
     COMPARE_EFFECT(f(element1), fusion::invoke_procedure(f , seq ));
     COMPARE_EFFECT(f(element1), fusion::invoke_procedure(f , const_(seq)));
     COMPARE_EFFECT(const_(f)(element1), fusion::invoke_procedure<fobj const >(const_(f), seq ));
- COMPARE_EFFECT(const_(f)(element1), fusion::invoke_procedure<fobj const&>(const_(f), const_(seq)));
+ COMPARE_EFFECT(const_(f)(element1), fusion::invoke_procedure<fobj const &>(const_(f), const_(seq)));
 
     fobj_nc nc_f;
     COMPARE_EFFECT(nc_f(element1), fusion::invoke_procedure<fobj_nc &>(nc_f, seq ));
     COMPARE_EFFECT(nc_f(element1), fusion::invoke_procedure<fobj_nc &>(nc_f, const_(seq)));
- COMPARE_EFFECT(const_(nc_f)(element1), fusion::invoke_procedure<fobj_nc const&>(const_(nc_f), seq ));
- COMPARE_EFFECT(const_(nc_f)(element1), fusion::invoke_procedure<fobj_nc const&>(const_(nc_f), const_(seq)));
+ COMPARE_EFFECT(const_(nc_f)(element1), fusion::invoke_procedure<fobj_nc const &>(const_(nc_f), seq ));
+ COMPARE_EFFECT(const_(nc_f)(element1), fusion::invoke_procedure<fobj_nc const &>(const_(nc_f), const_(seq)));
 
     COMPARE_EFFECT(unary(element1), fusion::invoke_procedure<int (&)(int &)>(unary, seq));
     COMPARE_EFFECT(func_ptr1(element1), fusion::invoke_procedure(func_ptr1, seq));

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -27,13 +27,13 @@
     typedef int result_type;
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y) const
+ int operator()(T0 const & x, T1 const & y) const
     {
         return 1+x-y;
     }
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y)
+ int operator()(T0 const & x, T1 const & y)
     {
         return 2+x-y;
     }
@@ -52,7 +52,7 @@
 };
 
 template <typename T>
-inline T const& const_(T const& t)
+inline T const & const_(T const & t)
 {
     return t;
 }
@@ -72,14 +72,11 @@
     BOOST_TEST(fusion::make_fused(ref(f_nc))(lv_vec) == 1);
     BOOST_TEST(fusion::make_fused(cref(f_nc))(lv_vec) == 0);
 
- //TODO!!!
- /*
     BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1);
     BOOST_TEST(const_(fused_func)(fusion::make_vector(2,'\003')) == 0);
     BOOST_TEST(fusion::make_fused(const_(f))(fusion::make_vector(2,'\003')) == 1);
     BOOST_TEST(fusion::make_fused(ref(f_nc))(fusion::make_vector(2,'\003')) == 1);
     BOOST_TEST(fusion::make_fused(cref(f_nc))(fusion::make_vector(2,'\003')) == 0);
- */
 
     return boost::report_errors();
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_function_object.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_function_object.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_function_object.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -37,13 +37,13 @@
     };
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y) const
+ int operator()(T0 const & x, T1 const & y) const
     {
         return 1+x-y;
     }
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y)
+ int operator()(T0 const & x, T1 const & y)
     {
         return 2+x-y;
     }
@@ -62,7 +62,7 @@
 };
 
 template <typename T>
-inline T const& const_(T const& t)
+inline T const & const_(T const & t)
 {
     return t;
 }
@@ -82,14 +82,11 @@
     BOOST_TEST(fusion::make_fused_function_object(ref(f_nc))(lv_vec) == 1);
     BOOST_TEST(fusion::make_fused_function_object(cref(f_nc))(lv_vec) == 0);
 
- //TODO!!!
- /*
     BOOST_TEST(fused_func(fusion::make_vector(2,'\003')) == 1);
     BOOST_TEST(const_(fused_func)(fusion::make_vector(2,'\003')) == 0);
     BOOST_TEST(fusion::make_fused_function_object(const_(f))(fusion::make_vector(2,'\003')) == 1);
     BOOST_TEST(fusion::make_fused_function_object(ref(f_nc))(fusion::make_vector(2,'\003')) == 1);
     BOOST_TEST(fusion::make_fused_function_object(cref(f_nc))(fusion::make_vector(2,'\003')) == 0);
- */
 
     return boost::report_errors();
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_procedure.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_procedure.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_procedure.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -33,13 +33,13 @@
     : Base
 {
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y) const
+ int operator()(T0 const & x, T1 const & y) const
     {
         return effect = 1+x-y;
     }
 
     template <typename T0, typename T1>
- int operator()(T0 const& x, T1 const& y)
+ int operator()(T0 const & x, T1 const & y)
     {
         return effect = 2+x-y;
     }
@@ -58,7 +58,7 @@
 };
 
 template <typename T>
-inline T const& const_(T const& t)
+inline T const & const_(T const & t)
 {
     return t;
 }
@@ -78,14 +78,11 @@
     CHECK_EFFECT(fusion::make_fused_procedure(ref(f_nc))(lv_vec), 1);
     CHECK_EFFECT(fusion::make_fused_procedure(cref(f_nc))(lv_vec), 0);
 
- //TODO!!!
- /*
     CHECK_EFFECT(fused_func(fusion::make_vector(2,'\003')), 1);
     CHECK_EFFECT(const_(fused_func)(fusion::make_vector(2,'\003')), 0);
     CHECK_EFFECT(fusion::make_fused_procedure(const_(f))(fusion::make_vector(2,'\003')), 1);
     CHECK_EFFECT(fusion::make_fused_procedure(ref(f_nc))(fusion::make_vector(2,'\003')), 1);
     CHECK_EFFECT(fusion::make_fused_procedure(cref(f_nc))(fusion::make_vector(2,'\003')), 0);
- */
 
     return boost::report_errors();
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_unfused.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_unfused.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_unfused.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -41,20 +41,20 @@
     struct result;
 
     template <class Self, class Seq>
- struct result< Self(Seq) >
+ struct result< Self(Seq &) >
         : mpl::if_< mpl::and_< fusion::result_of::empty<Seq>, RemoveNullary >,
                     boost::blank, mpl::identity<long> >::type
     { };
 
     template <typename Seq>
- long operator()(Seq const& seq) const
+ long operator()(Seq const & seq) const
     {
         long state = 0;
         return fusion::fold(seq, state, fold_op());
     }
 
     template < typename Seq >
- long operator()(Seq const& seq)
+ long operator()(Seq const & seq)
     {
         long state = 100;
         return fusion::fold(seq, state, fold_op());
@@ -76,7 +76,7 @@
 };
 
 template <typename T>
-inline T const& const_(T const& t)
+inline T const & const_(T const & t)
 {
     return t;
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -37,20 +37,19 @@
     { };
 
     template <typename Seq>
- long operator()(Seq const& seq) const
+ long operator()(Seq const & seq) const
     {
         long state = 0;
         return fusion::fold(seq, state, fold_op());
     }
 
     template <typename Seq>
- long operator()(Seq const& seq)
+ long operator()(Seq const & seq)
     {
         long state = 100;
         return fusion::fold(seq, state, fold_op());
     }
 
-
   private:
 
     struct fold_op
@@ -81,10 +80,10 @@
 
     test_func<noncopyable> f;
     fusion::unfused< test_func<> > unfused_func;
- fusion::unfused< test_func<noncopyable>& > unfused_func_ref(f);
+ fusion::unfused< test_func<noncopyable> & > unfused_func_ref(f);
     fusion::unfused< test_func<> const > unfused_func_c;
     fusion::unfused< test_func<> > const unfused_func_c2;
- fusion::unfused< test_func<noncopyable> const& > unfused_func_c_ref(f);
+ fusion::unfused< test_func<noncopyable> const & > unfused_func_c_ref(f);
 
     BOOST_TEST(unfused_func() == 100);
     BOOST_TEST(unfused_func_ref() == 100);

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused_typed.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused_typed.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused_typed.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -43,14 +43,14 @@
     { };
 
     template <typename Seq>
- long operator()(Seq const& seq) const
+ long operator()(Seq const & seq) const
     {
         long state = 0;
         return fusion::fold(seq, state, fold_op());
     }
 
     template < typename Seq >
- long operator()(Seq const& seq)
+ long operator()(Seq const & seq)
     {
         long state = 100;
         return fusion::fold(seq, state, fold_op());
@@ -63,7 +63,7 @@
         typedef long result_type;
 
         template <typename T>
- long operator()(long value, T const& elem) const
+ long operator()(long value, T const & elem) const
         {
           return value + sizeof(T) * elem;
         }
@@ -97,10 +97,10 @@
 {
     test_func<noncopyable> f;
     fusion::unfused_typed< test_func<>, types0 > unfused_func;
- fusion::unfused_typed< test_func<noncopyable>&, types0 > unfused_func_ref(f);
+ fusion::unfused_typed< test_func<noncopyable> &, types0 > unfused_func_ref(f);
     fusion::unfused_typed< test_func<> const, types0 > unfused_func_c;
     fusion::unfused_typed< test_func<>, types0 > const unfused_func_c2;
- fusion::unfused_typed< test_func<noncopyable> const&, types0 > unfused_func_c_ref(f);
+ fusion::unfused_typed< test_func<noncopyable> const &, types0 > unfused_func_c_ref(f);
 
     BOOST_TEST(unfused_func() == 100);
     BOOST_TEST(unfused_func_ref() == 100);
@@ -113,10 +113,10 @@
 {
     test_func<noncopyable> f;
     fusion::unfused_typed< test_func<>, types1 > unfused_func;
- fusion::unfused_typed< test_func<noncopyable>&, types1 > unfused_func_ref(f);
+ fusion::unfused_typed< test_func<noncopyable> &, types1 > unfused_func_ref(f);
     fusion::unfused_typed< test_func<> const, types1 > unfused_func_c;
     fusion::unfused_typed< test_func<>, types1 > const unfused_func_c2;
- fusion::unfused_typed< test_func<noncopyable> const&, types1 > unfused_func_c_ref(f);
+ fusion::unfused_typed< test_func<noncopyable> const &, types1 > unfused_func_c_ref(f);
 
     long lvalue = 1;
     BOOST_TEST_NO_VC71(unfused_func(lvalue) == 100);
@@ -135,10 +135,10 @@
 {
     test_func<noncopyable> f;
     fusion::unfused_typed< test_func<>, types3 > unfused_func;
- fusion::unfused_typed< test_func<noncopyable>&, types3 > unfused_func_ref(f);
+ fusion::unfused_typed< test_func<noncopyable> &, types3 > unfused_func_ref(f);
     fusion::unfused_typed< test_func<> const, types3 > unfused_func_c;
     fusion::unfused_typed< test_func<>, types3 > const unfused_func_c2;
- fusion::unfused_typed< test_func<noncopyable> const&, types3 > unfused_func_c_ref(f);
+ fusion::unfused_typed< test_func<noncopyable> const &, types3 > unfused_func_c_ref(f);
 
     long lvalue = 1;
     static const long expected = 2*sizeof(int) + 7*sizeof(char);

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -16,7 +16,6 @@
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
-#include <boost/fusion/algorithm/transformation/erase_key.hpp>
 #include <boost/fusion/container/vector/vector.hpp>
 #include <boost/fusion/container/list/list.hpp>
 #include <boost/fusion/container/generation/make_vector.hpp>
@@ -28,12 +27,10 @@
 #include <boost/fusion/sequence/comparison/greater.hpp>
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 #include <boost/fusion/support/is_view.hpp>
-
 #include <boost/mpl/assert.hpp>
 #include <boost/mpl/not.hpp>
-#include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
-
+#include <boost/static_assert.hpp>
 #include <iostream>
 #include <string>
 
@@ -119,15 +116,13 @@
         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<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> ));
+ 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};
         
         BOOST_TEST(at_key<ns::x_member>(p) == 5);
         BOOST_TEST(at_key<ns::y_member>(p) == 3);
-
- erase_key<ns::x_member>(p);
     }
 
     return boost::report_errors();

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -23,10 +23,8 @@
 #include <boost/fusion/sequence/comparison/greater.hpp>
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 #include <boost/fusion/support/is_view.hpp>
-
 #include <boost/mpl/assert.hpp>
 #include <boost/static_assert.hpp>
-
 #include <iostream>
 #include <string>
 
@@ -107,12 +105,11 @@
 
     { // begin/end
         using namespace boost::fusion;
- using boost::is_same;
 
         typedef result_of::begin<s>::type b;
         typedef result_of::end<s>::type e;
         // this fails
- BOOST_MPL_ASSERT((is_same<result_of::next<b>::type, e>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::next<b>::type, e>));
     }
 
     return boost::report_errors();

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_list.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_list.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_list.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -27,7 +27,7 @@
 
     {
         vector<> empty;
- std::cout << as_list(make_vector(1, 1.23, "harru")) << std::endl;
+ std::cout << as_list(make_vector(1, 1.23, "harru")) << std::endl;
         std::cout << as_list(push_back(empty, 999)) << std::endl;
 
         BOOST_TEST(as_list(make_vector(1, 1.23, "harru")) == make_vector(1, 1.23, std::string("harru")));
@@ -36,7 +36,7 @@
 
     {
         std::cout << as_list(mpl::vector_c<int, 1, 2, 3, 4, 5>()) << std::endl;
- BOOST_TEST((as_list(mpl::vector_c<int, 1, 2, 3, 4, 5>())
+ BOOST_TEST((as_list(mpl::vector_c<int, 1, 2, 3, 4, 5>())
             == mpl::vector_c<int, 1, 2, 3, 4, 5>()));
     }
 

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -46,7 +46,7 @@
         // test conversion
         typedef map<
             pair<int, char>
- , pair<double, std::string> >
+ , pair<double, std::string> >
         map_type;
 
         map_type m(make_vector(make_pair<int>('X'), make_pair<double>("Men")));

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -31,7 +31,7 @@
         vector<> empty;
         std::cout << as_set(make_list(1, 1.23, "harru")) << std::endl;
         std::cout << as_set(push_back(empty, 999)) << std::endl;
-
+
         BOOST_TEST(as_list(as_set(make_list(1, 1.23, "harru")))
             == make_list(1, 1.23, std::string("harru")));
         BOOST_TEST(as_list(as_set(push_back(empty, 999)))

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_vector.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_vector.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_vector.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -30,17 +30,17 @@
         vector<> empty;
         std::cout << as_vector(make_list(1, 1.23, "harru")) << std::endl;
         std::cout << as_vector(push_back(empty, 999)) << std::endl;
-
+
         BOOST_TEST(as_vector(make_list(1, 1.23, "harru")) == make_list(1, 1.23, std::string("harru")));
         BOOST_TEST(as_vector(push_back(empty, 999)) == push_back(empty, 999));
     }
 
     {
         std::cout << as_vector(mpl::vector_c<int, 1, 2, 3, 4, 5>()) << std::endl;
- BOOST_TEST((as_vector(mpl::vector_c<int, 1, 2, 3, 4, 5>())
+ BOOST_TEST((as_vector(mpl::vector_c<int, 1, 2, 3, 4, 5>())
             == mpl::vector_c<int, 1, 2, 3, 4, 5>()));
     }
-
+
     {
         // test conversion
         vector<int, std::string> v(make_list(123, "harru"));

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -12,6 +12,7 @@
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 #include <boost/fusion/sequence/intrinsic/back.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
+#include <boost/fusion/iterator/distance.hpp>
 #include <boost/fusion/container/vector/vector.hpp>
 #include <boost/fusion/container/list/list.hpp>
 #include <boost/fusion/container/generation/make_vector.hpp>
@@ -82,6 +83,16 @@
         list<int, std::string> l(boost::tuples::make_tuple(123, "Hola!!!"));
         l = boost::tuples::make_tuple(123, "Hola!!!");
     }
+
+ {
+ // test from Ticket #1601, submitted by Shunsuke Sogame
+ // expanded by Stjepan Rajko
+ boost::tuple<int, char> t(3, 'a');
+
+ BOOST_TEST(0u == distance(begin(t), begin(t)));
+ BOOST_TEST(1u == distance(begin(t), next(begin(t))));
+ BOOST_TEST(2u == distance(begin(t), end(t)));
+ }
 
     return boost::report_errors();
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/cons.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/cons.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/cons.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -2,7 +2,7 @@
     Copyright (c) 2005 Joel de Guzman
     Copyright (c) 2005 Eric Niebler
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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 <string>
@@ -32,7 +32,7 @@
     std::cout << tuple_delimiter(", ");
 
 /// Testing cons
-
+
     {
         std::string hello("hello");
         cons<int, cons<std::string> > ns =
@@ -59,7 +59,7 @@
         );
 
         BOOST_TEST(
- make_cons(123, make_cons("hello")) ==
+ make_cons(123, make_cons("hello")) ==
             make_vector(123, std::string("hello"))
         );
     }
@@ -75,7 +75,7 @@
         std::cout << nf << std::endl;
         std::cout << filter_if<is_same<boost::mpl::_, int> >(nf) << std::endl;
     }
-
+
     {
         int i = 3;
         cons<int&> tie(cons_tie(i));

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/copy.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/copy.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/copy.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -2,7 +2,7 @@
     Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deduce_sequence.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deduce_sequence.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deduce_sequence.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -10,11 +10,11 @@
 #include <boost/fusion/mpl.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
-#include <boost/config.hpp>
 #include <boost/mpl/equal.hpp>
-#include <boost/static_assert.hpp>
+
 #include <boost/ref.hpp>
 
+using boost::is_same;
 using boost::reference_wrapper;
 using boost::fusion::traits::deduce;
 using boost::fusion::traits::deduce_sequence;
@@ -26,34 +26,26 @@
 {
     typename deduce_sequence<Args>::type fsq_args;
 
- test_seq_ctor(Args const& args)
- : fsq_args(args)
- {}
+ test_seq_ctor(Args const & args)
+ : fsq_args(args)
+ { }
 };
 
-#define TEST_SAME_TYPE(a,b) BOOST_STATIC_ASSERT(( boost::is_same< a, b >::value ))
-#define TEST_SAME_ELEMENTS(a,b) BOOST_STATIC_ASSERT(( boost::mpl::equal< a, b >::type::value ))
+#define TEST_SAME_TYPE(a,b) BOOST_TEST(( is_same< a, b >::value ))
+#define TEST_SAME_ELEMENTS(a,b) BOOST_TEST(( boost::mpl::equal< a, b >::type::value ))
 
-typedef fusion::vector<int, int const, int &, int const&> args1;
-#ifdef BOOST_NO_RVALUE_REFERENCES
+typedef fusion::vector<int, int const, int &, int const &> args1;
 typedef fusion::vector<int, int, int &, int> storable1;
-#else
-typedef fusion::vector<int, int, int &, int const&> storable1;
-#endif
 template struct test_seq_ctor<args1>;
 
-typedef fusion::vector< reference_wrapper<int>&, reference_wrapper<int const>&,
- reference_wrapper<int> const&, reference_wrapper<int const> const& > args2;
-typedef fusion::vector<int &, int const&, int &, int const&> storable2;
+typedef fusion::vector< reference_wrapper<int> &, reference_wrapper<int const> &,
+ reference_wrapper<int> const &, reference_wrapper<int const> const & > args2;
+typedef fusion::vector<int &, int const &, int &, int const &> storable2;
 template struct test_seq_ctor<args2>;
 
 
-typedef fusion::vector<int *, int const *, int const * const, int const * &, int const * const&> args3;
-#ifdef BOOST_NO_RVALUE_REFERENCES
+typedef fusion::vector<int *, int const *, int const * const, int const * &, int const * const &> args3;
 typedef fusion::vector<int *, int const *, int const *, int const * &, int const * > storable3;
-#else
-typedef fusion::vector<int *, int const *, int const *, int const * &, int const * const&> storable3;
-#endif
 template struct test_seq_ctor<args3>;
 
 typedef fusion::vector<int(&)[2], int const(&)[2]> args4;
@@ -62,37 +54,29 @@
 
 int main()
 {
- //TODO !!!
- /*
- TEST_SAME_TYPE(deduce<int &>::type, int &);
- TEST_SAME_TYPE(deduce<int volatile &>::type, int volatile &);
+ //TODO
+ //TEST_SAME_TYPE(deduce<int &>::type, int &);
+ //TEST_SAME_TYPE(deduce<int volatile &>::type, int volatile &);
 
     TEST_SAME_TYPE(deduce<int>::type, int);
-#ifdef BOOST_NO_RVALUE_REFERENCES
- TEST_SAME_TYPE(deduce<int const&>::type, int);
- TEST_SAME_TYPE(deduce<int const volatile&>::type, int);
-#else
- TEST_SAME_TYPE(deduce<int const&>::type, int const&);
- TEST_SAME_TYPE(deduce<int const volatile&>::type, int const volatile&);
-#endif
-
- TEST_SAME_TYPE(deduce< reference_wrapper<int>& >::type, int &);
- TEST_SAME_TYPE(deduce< reference_wrapper<int const>& >::type, int const&);
- TEST_SAME_TYPE(deduce< reference_wrapper<int> const& >::type, int &);
- TEST_SAME_TYPE(deduce< reference_wrapper<int const> const& >::type, int const&);
+ TEST_SAME_TYPE(deduce<int const &>::type, int);
+ TEST_SAME_TYPE(deduce<int const volatile &>::type, int);
+
+ TEST_SAME_TYPE(deduce< reference_wrapper<int> & >::type, int &);
+ TEST_SAME_TYPE(deduce< reference_wrapper<int const> & >::type, int const &);
+ TEST_SAME_TYPE(deduce< reference_wrapper<int> const & >::type, int &);
+ TEST_SAME_TYPE(deduce< reference_wrapper<int const> const & >::type, int const &);
 
     TEST_SAME_TYPE(deduce< int(&)[2] >::type, int(&)[2]);
     TEST_SAME_TYPE(deduce< int const (&)[2] >::type, int const (&)[2]);
     TEST_SAME_TYPE(deduce< int volatile (&)[2] >::type, int volatile (&)[2]);
     TEST_SAME_TYPE(deduce< int const volatile (&)[2] >::type, int const volatile (&)[2]);
 
- TEST_SAME_TYPE(deduce< void(*&)() >::type, void(*)());
-
- TEST_SAME_ELEMENTS(deduce_sequence<args1>::type,storable1);
- TEST_SAME_ELEMENTS(deduce_sequence<args2>::type,storable2);
- TEST_SAME_ELEMENTS(deduce_sequence<args3>::type,storable3);
+ //TODO
+ //TEST_SAME_ELEMENTS(deduce_sequence<args1>::type,storable1);
+ //TEST_SAME_ELEMENTS(deduce_sequence<args2>::type,storable2);
+ //TEST_SAME_ELEMENTS(deduce_sequence<args3>::type,storable3);
     TEST_SAME_ELEMENTS(deduce_sequence<args4>::type,storable4);
- */
 
     return boost::report_errors();
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/filter_view.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/filter_view.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/filter_view.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,29 +1,32 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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/vector/vector.hpp>
+#include <boost/fusion/adapted/mpl.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 #include <boost/fusion/view/filter_view/filter_view.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
 #include <boost/fusion/container/generation/make_vector.hpp>
-#include <boost/fusion/adapted/mpl.hpp>
 #include <boost/fusion/sequence/intrinsic/size.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-
+#include <boost/fusion/container/map.hpp>
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/iterator/value_of_data.hpp>
+#include <boost/fusion/iterator/deref_data.hpp>
 #include <boost/type_traits/is_class.hpp>
 #include <boost/type_traits/is_same.hpp>
-#include <boost/static_assert.hpp>
 #include <boost/mpl/arg.hpp>
 #include <boost/mpl/not.hpp>
 #include <boost/mpl/vector_c.hpp>
 #include <boost/mpl/less.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/assert.hpp>
+#include <boost/static_assert.hpp>
 
 struct X
 {
@@ -81,7 +84,7 @@
         // $$$ JDG $$$ For some obscure reason, EDG based compilers
         // (e.g. comeau 4.3.3, intel) have problems with this.
         // vc7.1 and g++ are ok. The errors from comeau are useless.
-
+
 #ifndef __EDG_VERSION__
         typedef vector_c<int, 5, 1, 2, 3, 6, 0, -1> vector_type;
         typedef filter_view<vector_type const, less<_, int_<3> > > filter_view_type;
@@ -102,6 +105,23 @@
         BOOST_MPL_ASSERT((result_of::equal_to<result_of::begin<filter_view_type>::type, result_of::end<filter_view_type>::type>));
     }
 
+ {
+ typedef map<pair<void, int>, pair<double, std::string> > map_type;
+ map_type m(make_pair<void>(0), make_pair<double>("Bond"));
+
+ typedef filter_view<map_type const, is_same<_, pair<double, std::string> > > filter_view_type;
+ filter_view_type f(m);
+
+ BOOST_MPL_ASSERT((result_of::has_key<filter_view_type, double>::type));
+ BOOST_MPL_ASSERT_NOT((result_of::has_key<filter_view_type, void>::type));
+
+ BOOST_MPL_ASSERT((is_same<result_of::key_of<result_of::begin<filter_view_type>::type>::type, double>));
+ BOOST_MPL_ASSERT((is_same<result_of::value_of_data<result_of::begin<filter_view_type>::type>::type, std::string>));
+
+ std::cout << deref_data(begin(f)) << std::endl;
+ BOOST_TEST((deref_data(begin(f)) == "Bond"));
+ }
+
     return boost::report_errors();
 }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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 <string>
@@ -23,7 +23,6 @@
 void test()
 {
     using namespace boost::fusion;
- using namespace boost;
 
     { // Testing deref, next, prior, begin, end
 
@@ -50,7 +49,7 @@
 
         *i = 3;
         BOOST_TEST(*i == 3);
- BOOST_TEST(&*i == &deref(begin(v)));
+ BOOST_TEST(&*i == &at_c<0>(v));
 
         // prove that it is mutable
         *i = 987;
@@ -97,7 +96,7 @@
         typedef result_of::next<begin_type>::type i1;
         typedef result_of::next<i1>::type i2;
 
- BOOST_STATIC_ASSERT((is_same<end_type, i2>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<end_type, i2>::value));
     }
 
     { // testing deref, next, prior, begin, end
@@ -113,7 +112,7 @@
         BOOST_TEST(*next(next(next(i))) == s);
 
         next(next(next(next(i)))); // end
-
+
 #ifdef FUSION_TEST_FAIL
         next(next(next(next(next(i))))); // past the end: must not compile
 #endif
@@ -130,7 +129,7 @@
 
         *i = 3;
         BOOST_TEST(*i == 3);
- BOOST_TEST(*i == *begin(t));
+ BOOST_TEST(*i == at_c<0>(t));
     }
 
     { // Testing distance
@@ -152,26 +151,22 @@
         typedef result_of::next<i0>::type i1;
         typedef result_of::next<result_of::begin<const seq_type>::type>::type i2;
 
-//value_at<>/at<>/... are valid for lists and cons!
-//#ifndef FUSION_NO_RANDOM_ACCESS_SEQUENCE
         BOOST_STATIC_ASSERT((
- is_same<result_of::value_at_c<seq_type, 0>::type, int>::value));
+ boost::is_same<result_of::value_at_c<seq_type, 0>::type, int>::value));
 
         BOOST_STATIC_ASSERT((
- is_same<result_of::value_at_c<seq_type, 1>::type, char&>::value));
-//#endif
+ boost::is_same<result_of::value_at_c<seq_type, 1>::type, char&>::value));
 
         BOOST_STATIC_ASSERT((
- is_same<traits::category_of<i0>::type, FUSION_TRAVERSAL_TAG>::value));
+ boost::is_same<traits::category_of<i0>::type, FUSION_TRAVERSAL_TAG>::value));
 
- BOOST_STATIC_ASSERT((is_same<result_of::deref<i0>::type, int&>::value));
- BOOST_STATIC_ASSERT((is_same<result_of::deref<i1>::type, char&>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::deref<i0>::type, int&>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::deref<i1>::type, char&>::value));
 
- BOOST_STATIC_ASSERT((is_same<result_of::value_of<i0>::type, int>::value));
- BOOST_STATIC_ASSERT((is_same<result_of::value_of<i1>::type, char&>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::value_of<i0>::type, int>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::value_of<i1>::type, char&>::value));
     }
 
-//#ifndef FUSION_NO_RANDOM_ACCESS_SEQUENCE
     { // Testing advance
 
         typedef FUSION_SEQUENCE<int, char, double, char const*> seq_type;
@@ -194,7 +189,6 @@
         BOOST_TEST(&*advance_c<2>(begin(t)) == &at_c<2>(t));
         BOOST_TEST(&*advance_c<3>(begin(t)) == &at_c<3>(t));
     }
-//#endif
 }
 
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator_range.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator_range.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator_range.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,21 +1,28 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/container/generation/make_vector.hpp>
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
 #include <boost/fusion/sequence/intrinsic/size.hpp>
-#include <boost/fusion/view/iterator_range/iterator_range.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/container/generation/make_vector.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/iterator/advance.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/iterator/value_of_data.hpp>
+#include <boost/fusion/iterator/deref_data.hpp>
 #include <boost/fusion/adapted/mpl.hpp>
-
 #include <boost/mpl/vector_c.hpp>
 #include <boost/mpl/begin.hpp>
 #include <boost/mpl/next.hpp>
+#include <boost/mpl/assert.hpp>
 #include <boost/static_assert.hpp>
 
 int
@@ -33,11 +40,16 @@
         vector_type vec(1, 'x', 3.3, s);
 
         {
- typedef result_of::next<result_of::begin<vector_type>::type>::type i1t;
- typedef result_of::prior<result_of::end<vector_type>::type>::type i3t;
-
- i1t i1(next(begin(vec)));
- i3t i3(prior(end(vec)));
+ //TODO
+ //typedef vector_iterator<vector_type, 1> i1t;
+ //typedef vector_iterator<vector_type, 3> i3t;
+ typedef result_of::advance_c<result_of::begin<vector_type>::type,1>::type i1t;
+ typedef result_of::advance_c<result_of::begin<vector_type>::type,3>::type i3t;
+
+ //i1t i1(vec);
+ //i3t i3(vec);
+ i1t i1=advance_c<1>(begin(vec));
+ i3t i3=advance_c<3>(begin(vec));
 
             typedef iterator_range<i1t, i3t> slice_t;
             slice_t slice(i1, i3);
@@ -47,11 +59,16 @@
         }
 
         {
- typedef result_of::begin<vector_type>::type i1t;
- typedef result_of::begin<vector_type>::type i3t;
-
- i1t i1(begin(vec));
- i3t i3(begin(vec));
+ //TODO
+ //typedef vector_iterator<vector_type, 0> i1t;
+ //typedef vector_iterator<vector_type, 0> i3t;
+ typedef result_of::advance_c<result_of::begin<vector_type>::type,0>::type i1t;
+ typedef result_of::advance_c<result_of::begin<vector_type>::type,0>::type i3t;
+
+ //i1t i1(vec);
+ //i3t i3(vec);
+ i1t i1(advance_c<0>(begin(vec)));
+ i3t i3(advance_c<0>(begin(vec)));
 
             typedef iterator_range<i1t, i3t> slice_t;
             slice_t slice(i1, i3);
@@ -70,7 +87,7 @@
 
         it1 f;
         it3 l;
-
+
         typedef iterator_range<it1, it3> slice_t;
         slice_t slice(f, l);
         std::cout << slice << std::endl;
@@ -78,6 +95,31 @@
         BOOST_STATIC_ASSERT(result_of::size<slice_t>::value == 2);
     }
 
+ {
+ typedef map<pair<void,std::string>, pair<double,char>,pair<void*, int> > map_type;
+ map_type m(make_pair<void>("foo"), make_pair<double>('x'), make_pair<void*>(2));
+
+ typedef iterator_range<
+ result_of::begin<map_type>::type
+ , result_of::advance_c<result_of::begin<map_type>::type,2>::type
+ > range_type;
+ range_type r(begin(m), advance_c<2>(begin(m)));
+
+ BOOST_MPL_ASSERT((result_of::has_key<range_type, void>::type));
+ BOOST_MPL_ASSERT((result_of::has_key<range_type, double>::type));
+
+ BOOST_MPL_ASSERT((boost::is_same<result_of::key_of<result_of::begin<range_type>::type>::type, void>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::key_of<result_of::next<result_of::begin<range_type>::type>::type>::type, double>));
+
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_of_data<result_of::begin<range_type>::type>::type, std::string>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_of_data<result_of::next<result_of::begin<range_type>::type>::type>::type, char>));
+
+ std::cout << deref_data(begin(r)) << std::endl;
+ std::cout << deref_data(boost::fusion::next(begin(r))) << std::endl;
+ BOOST_TEST((deref_data(begin(r)) == "foo"));
+ BOOST_TEST((deref_data(boost::fusion::next(begin(r))) == 'x'));
+ }
+
     return boost::report_errors();
 }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/joint_view.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/joint_view.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/joint_view.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,18 +1,26 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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.hpp>
+#include <boost/fusion/container/set.hpp>
 #include <boost/fusion/container/vector/vector.hpp>
 #include <boost/fusion/view/joint_view/joint_view.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
 #include <boost/fusion/sequence/comparison/equal_to.hpp>
 #include <boost/fusion/container/generation/make_vector.hpp>
 #include <boost/fusion/sequence/intrinsic/at.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/mpl/vector_c.hpp>
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref_data.hpp>
+#include <boost/mpl/assert.hpp>
+#include <string>
 
 struct X
 {
@@ -140,6 +148,40 @@
         }
     }
 
+ {
+ typedef map<pair<void,int> > map_type;
+ map_type m(make_pair<void>(0));
+
+ typedef set<std::string, float> set_type;
+ set_type s("foo", 1.3f);
+
+ typedef joint_view<map_type, set_type> joint_view_type;
+ joint_view_type j(m,s);
+
+ BOOST_MPL_ASSERT((result_of::has_key<joint_view_type, void>::type));
+ BOOST_MPL_ASSERT((result_of::has_key<joint_view_type, std::string>::type));
+ BOOST_MPL_ASSERT((result_of::has_key<joint_view_type, float>::type));
+
+ BOOST_MPL_ASSERT((boost::is_same<result_of::key_of<result_of::begin<joint_view_type>::type>::type, void>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::key_of<result_of::next<result_of::begin<joint_view_type>::type>::type>::type, std::string>));
+ BOOST_MPL_ASSERT((boost::is_same<
+ result_of::key_of<result_of::next<result_of::next<result_of::begin<joint_view_type>::type>::type>::type>::type
+ , float>));
+
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_of_data<result_of::begin<joint_view_type>::type>::type, int>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_of_data<result_of::next<result_of::begin<joint_view_type>::type>::type>::type, std::string>));
+ BOOST_MPL_ASSERT((boost::is_same<
+ result_of::value_of_data<result_of::next<result_of::next<result_of::begin<joint_view_type>::type>::type>::type>::type
+ , float>));
+
+ std::cout << deref_data(begin(j)) << std::endl;
+ std::cout << deref_data(boost::fusion::next(begin(j))) << std::endl;
+ std::cout << deref_data(boost::fusion::next(boost::fusion::next(begin(j)))) << std::endl;
+ BOOST_TEST((deref_data(begin(j)) == 0));
+ BOOST_TEST((deref_data(boost::fusion::next(begin(j))) == "foo"));
+ BOOST_TEST((deref_data(boost::fusion::next(boost::fusion::next(begin(j)))) == 1.3f));
+ }
+
     return boost::report_errors();
 }
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_iterator.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_iterator.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_iterator.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,14 +1,14 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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/fusion/container/list/list.hpp>
 
 #define FUSION_SEQUENCE list
-#define FUSION_NO_RANDOM_ACCESS_SEQUENCE
-#define FUSION_TRAVERSAL_TAG bidirectional_traversal_tag
+#define FUSION_NO_PRIOR
+#define FUSION_TRAVERSAL_TAG forward_traversal_tag
 #include "./iterator.hpp"
 
 int

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_misc.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_misc.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_misc.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -9,6 +9,7 @@
 #include <boost/fusion/container/list/convert.hpp>
 
 #define FUSION_SEQUENCE list
+#define FUSION_FORWARD_ONLY
 #include "misc.hpp"
 
 int

Added: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_value_at.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_value_at.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ Copyright (c) 2001-2006 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)
+==============================================================================*/
+#include <boost/fusion/container/list/list.hpp>
+
+#define FUSION_SEQUENCE list
+#include "value_at.hpp"
+
+int
+main()
+{
+ test();
+ return boost::report_errors();
+}
+

Added: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make_list.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make_list.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -0,0 +1,20 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ Copyright (c) 2001-2006 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)
+==============================================================================*/
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/container/generation/make_list.hpp>
+
+#define FUSION_SEQUENCE list
+#include "make.hpp"
+
+int
+main()
+{
+ test();
+ return boost::report_errors();
+}
+

Added: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make_vector.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make_vector.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -0,0 +1,20 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ Copyright (c) 2001-2006 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)
+==============================================================================*/
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/container/generation/make_vector.hpp>
+
+#define FUSION_SEQUENCE vector
+#include "make.hpp"
+
+int
+main()
+{
+ test();
+ 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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -4,14 +4,18 @@
     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>
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/iterator/deref_data.hpp>
+#include <boost/fusion/iterator/value_of_data.hpp>
+#include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/support/pair.hpp>
 #include <boost/fusion/support/category_of.hpp>
 #include <boost/static_assert.hpp>
@@ -19,7 +23,6 @@
 #include <iostream>
 #include <string>
 
-
 int
 main()
 {
@@ -59,6 +62,17 @@
         BOOST_STATIC_ASSERT((result_of::has_key<map_type, int>::value));
         BOOST_STATIC_ASSERT((result_of::has_key<map_type, double>::value));
         BOOST_STATIC_ASSERT((!result_of::has_key<map_type, std::string>::value));
+
+ std::cout << deref_data(begin(m)) << std::endl;
+ std::cout << deref_data(boost::fusion::next(begin(m))) << std::endl;
+
+ BOOST_TEST(deref_data(begin(m)) == 'X');
+ BOOST_TEST(deref_data(boost::fusion::next(begin(m))) == "Men");
+
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::key_of<result_of::begin<map_type>::type>::type, int>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::key_of<result_of::next<result_of::begin<map_type>::type>::type>::type, double>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::value_of_data<result_of::begin<map_type>::type>::type, char>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::value_of_data<result_of::next<result_of::begin<map_type>::type>::type>::type, std::string>::value));
     }
     
     {

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -6,27 +6,20 @@
     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/sequence/intrinsic.hpp>
 #include <boost/fusion/support/is_sequence.hpp>
 #include <boost/fusion/mpl.hpp>
-
-#include <boost/mpl/push_back.hpp>
-#include <boost/mpl/push_front.hpp>
-#include <boost/mpl/size.hpp>
-#include <boost/mpl/equal.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/back.hpp>
 #include <boost/mpl/empty.hpp>
 #include <boost/mpl/front.hpp>
 #include <boost/mpl/find.hpp>
+#include <boost/mpl/back.hpp>
 #include <boost/mpl/equal.hpp>
+#include <boost/mpl/push_back.hpp>
+#include <boost/mpl/push_front.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/integral_c.hpp>
-
-#include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
-
+#include <boost/static_assert.hpp>
 #include <string>
 
 #if !defined(FUSION_AT)
@@ -79,6 +72,8 @@
     BOOST_STATIC_ASSERT(!(boost::mpl::empty<sequence>::value));
     BOOST_STATIC_ASSERT((boost::mpl::distance<second, fourth>::value == 2));
 
+#if !defined(FUSION_FORWARD_ONLY) // list has no back/prev
+
     typedef boost::mpl::prior<last>::type fourth_;
     typedef boost::mpl::prior<fourth_>::type third_;
     typedef boost::mpl::prior<third_>::type second_;
@@ -99,12 +94,15 @@
     BOOST_STATIC_ASSERT((boost::is_same<
         boost::mpl::back<sequence>::type, char>::value));
 
+#endif
 };
 
 struct test_intrinsics2
 {
     typedef boost::fusion::FUSION_SEQUENCE<> seq0;
 
+#if !defined(FUSION_FORWARD_ONLY) // list has no back/prev
+
     typedef boost::fusion::FUSION_SEQUENCE<int> target1;
     typedef boost::mpl::push_back<seq0, int>::type seq1;
     BOOST_STATIC_ASSERT((boost::mpl::equal<seq1, target1>::value));
@@ -113,6 +111,8 @@
     typedef boost::mpl::push_back<seq1, double>::type seq2;
     BOOST_STATIC_ASSERT((boost::mpl::equal<seq2, target2>::value));
 
+#endif
+
     typedef boost::fusion::FUSION_SEQUENCE<int> target3;
     typedef boost::mpl::push_front<seq0, int>::type seq3;
     BOOST_STATIC_ASSERT((boost::mpl::equal<seq3, target3>::value));
@@ -157,10 +157,12 @@
     { // testing front & back
 
         typedef FUSION_SEQUENCE<int, float, std::string> tup;
- tup t(1, 2.2f, "Kimpo");
+ tup t(1, 2.2, "Kimpo");
 
         BOOST_TEST(front(t) == 1);
+#if !defined(FUSION_FORWARD_ONLY) // list has no back
         BOOST_TEST(back(t) == "Kimpo");
+#endif
     }
 
     { // testing is_sequence

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/mutate.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/mutate.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/mutate.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -2,7 +2,7 @@
     Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>

Added: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/repetitive_view.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/repetitive_view.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -0,0 +1,53 @@
+/*=============================================================================
+ Copyright (c) 2007 Tobias Schwinger
+
+ 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/detail/lightweight_test.hpp>
+#include <boost/fusion/view/repetitive_view.hpp>
+
+#include <boost/fusion/container/vector.hpp>
+#include <boost/fusion/view/joint_view.hpp>
+#include <boost/fusion/algorithm/transformation/zip.hpp>
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
+
+struct check_equal
+{
+ template<typename LHS, typename RHS>
+ void operator()(LHS const& lhs, RHS const& rhs) const
+ {
+ BOOST_TEST(( boost::is_same<LHS,RHS>::value ));
+ BOOST_TEST(( lhs == rhs ));
+ }
+};
+
+int main()
+{
+ using namespace boost::fusion;
+
+ typedef boost::fusion::vector<int,long,float,double> seq_t;
+ seq_t seq(1,2l,3.0f,4.0);
+
+ typedef repetitive_view<seq_t> view_t;
+ view_t view(seq);
+
+ typedef joint_view<seq_t,seq_t> seq_twice_t;
+ typedef joint_view<seq_t,seq_twice_t> seq_repeated_t;
+ seq_twice_t seq_twice(seq,seq);
+ seq_repeated_t seq_repeated(seq,seq_twice);
+
+ for_each(zip(view,seq_repeated), make_fused_procedure(check_equal()));
+
+ return boost::report_errors();
+}
+

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -36,10 +36,10 @@
         reverse_view<mpl_list1> rev(l);
 
         std::cout << rev << std::endl;
- //BOOST_TEST((rev == make_vector(8, 7, 6, 5)));
+ BOOST_TEST((rev == make_vector(8, 7, 6, 5)));
     }
 
- /*{
+ {
         char const* s = "Hi Kim";
         typedef vector<int, char, long, char const*> vector_type;
         vector_type t(123, 'x', 123456789, s);
@@ -49,15 +49,15 @@
         std::cout << rev << std::endl;
         BOOST_TEST((rev == make_vector(s, 123456789, 'x', 123)));
 
- typedef result_of::begin<view_type>::type begin_type;
- begin_type first_it(begin(rev));
- typedef result_of::next<begin_type>::type second_type;
+ typedef result_of::begin<view_type>::type first_type;
+ first_type first_it(begin(rev));
+ typedef result_of::next<first_type>::type second_type;
         second_type second_it(next(first_it));
         BOOST_TEST((*second_it == 123456789));
         BOOST_TEST((*prior(second_it) == s));
         BOOST_TEST((*advance_c<2>(first_it) == 'x'));
         BOOST_TEST((distance(first_it, second_it) == 1));
- }*/
+ }
 
     return boost::report_errors();
 }

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -10,7 +10,12 @@
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 #include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/io/out.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/iterator/deref_data.hpp>
+#include <boost/fusion/iterator/value_of_data.hpp>
+#include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/support/pair.hpp>
 #include <boost/fusion/support/category_of.hpp>
 #include <boost/static_assert.hpp>
@@ -46,12 +51,23 @@
             boost::is_same<result_of::value_at_key<set_type, int>::type, int>::value));
         BOOST_STATIC_ASSERT((
             boost::is_same<result_of::value_at_key<set_type, std::string>::type, std::string>::value));
-
+
         std::cout << m << std::endl;
 
         BOOST_STATIC_ASSERT((result_of::has_key<set_type, int>::value));
         BOOST_STATIC_ASSERT((result_of::has_key<set_type, std::string>::value));
         BOOST_STATIC_ASSERT((!result_of::has_key<set_type, double>::value));
+
+ std::cout << deref_data(begin(m)) << std::endl;
+ std::cout << deref_data(boost::fusion::next(begin(m))) << std::endl;
+
+ BOOST_TEST(deref_data(begin(m)) == 123);
+ BOOST_TEST(deref_data(boost::fusion::next(begin(m))) == "Hola");
+
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::key_of<result_of::begin<set_type>::type>::type, int>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::key_of<result_of::next<result_of::begin<set_type>::type>::type>::type, std::string>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::value_of_data<result_of::begin<set_type>::type>::type, int>::value));
+ BOOST_STATIC_ASSERT((boost::is_same<result_of::value_of_data<result_of::next<result_of::begin<set_type>::type>::type>::type, std::string>::value));
     }
     
     {

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -23,10 +23,8 @@
 #include <boost/fusion/sequence/comparison/greater.hpp>
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 #include <boost/fusion/support/is_view.hpp>
-
 #include <boost/mpl/assert.hpp>
 #include <boost/static_assert.hpp>
-
 #include <iostream>
 #include <string>
 #include <utility>

Added: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/test_deduce_sequence.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/test_deduce_sequence.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -0,0 +1,16 @@
+
+#include <boost/mpl/vector.hpp>
+#include <boost/fusion/support.hpp>
+
+typedef boost::fusion::traits::deduce_sequence <
+
+boost::mpl::vector<int, char>
+
+>::type seq1_t;
+
+
+typedef boost::fusion::traits::deduce_sequence <
+
+boost::fusion::vector<int, char>
+
+>::type seq2_t;

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tie.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tie.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -2,12 +2,15 @@
     Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+#if !defined(FUSION_AT)
+#define FUSION_AT at_c
+#endif
 
 #if !defined(FUSION_MAKE)
 #define FUSION_MAKE BOOST_PP_CAT(make_, FUSION_SEQUENCE)
@@ -72,11 +75,11 @@
 #endif
 
     dummy(ta);
-
+
     // ties cannot be rebound
     int d = 3;
     FUSION_SEQUENCE<int&> ti(a);
- BOOST_TEST(&deref(begin(ti)) == &a);
+ BOOST_TEST(&FUSION_AT<0>(ti) == &a);
     ti = FUSION_SEQUENCE<int&>(d);
- BOOST_TEST(&deref(begin(ti)) == &a);
+ BOOST_TEST(&FUSION_AT<0>(ti) == &a);
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tr1_tuple_auto_conv.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tr1_tuple_auto_conv.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tr1_tuple_auto_conv.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,17 +1,8 @@
-/*=============================================================================
- Copyright (c) 2008 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)
-==============================================================================*/
-
 #include <boost/tr1/memory.hpp>
 #include <boost/tr1/tuple.hpp>
 #include <boost/any.hpp>
 #include <iostream>
 
-//TODO cschmidt: In C++0x this won't work any more?!
-
 namespace Core
 {
     class AutoConverter
@@ -19,8 +10,8 @@
         std::tr1::shared_ptr<boost::any> t_;
 
     public:
- AutoConverter(std::tr1::shared_ptr<boost::any> const& t)
- : t_(t)
+ AutoConverter(std::tr1::shared_ptr<boost::any> const & t)
+ : t_(t)
         {}
 
         template <typename C>
@@ -46,17 +37,20 @@
         }
     };
 
+
     inline AutoConverter Demo()
     {
         std::tr1::shared_ptr<boost::any> p_result
             (new boost::any(std::tr1::make_tuple(1, 2, 3, 4)));
         return p_result;
     }
+
 } // namespace Core
 
 
 int main(int argc, char* argv[])
 {
+ //TODO
     //std::tr1::tuple<int, int, int, int> test = Core::Demo();
     return 0;
 }

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -26,7 +26,14 @@
 
 struct square
 {
- typedef int result_type;
+ template<typename T>
+ struct result;
+
+ template <typename T>
+ struct result<square(T)>
+ {
+ typedef int type;
+ };
 
     template <typename T>
     int operator()(T x) const
@@ -37,7 +44,14 @@
 
 struct add
 {
- typedef int result_type;
+ template<typename T>
+ struct result;
+
+ template <typename A, typename B>
+ struct result<add(A,B)>
+ {
+ typedef int type;
+ };
 
     template <typename A, typename B>
     int operator()(A a, B b) const
@@ -58,19 +72,19 @@
 /// Testing the transform_view
 
     {
- typedef boost::mpl::range_c<int, 5, 9> seq_type;
- seq_type sequence;
+ typedef boost::mpl::range_c<int, 5, 9> sequence_type;
+ sequence_type sequence;
         square sq;
- typedef transform_view<seq_type, square> xform_type;
+ typedef transform_view<sequence_type, square> xform_type;
         xform_type xform(sequence, sq);
 
         std::cout << xform << std::endl;
         BOOST_TEST((xform == make_vector(25, 36, 49, 64)));
 
- typedef boost::fusion::result_of::begin<xform_type>::type begin_type;
- begin_type first_it(boost::fusion::begin(xform));
+ typedef boost::fusion::result_of::begin<xform_type>::type first_type;
+ first_type first_it(boost::fusion::begin(xform));
 
- typedef boost::fusion::result_of::next<begin_type>::type next_type;
+ typedef boost::fusion::result_of::next<first_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/value_at.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/value_at.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/value_at.hpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -2,14 +2,13 @@
     Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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/sequence/intrinsic/at.hpp>
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
 #include <boost/static_assert.hpp>
-
 #include <iostream>
 
 #if !defined(FUSION_AT)
@@ -67,7 +66,7 @@
 
     ++FUSION_AT<0>(t);
     BOOST_TEST(FUSION_AT<0>(t) == 6);
-
+
     typedef FUSION_SEQUENCE<int, float> seq_type;
 
     BOOST_STATIC_ASSERT(!(

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-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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>
@@ -10,7 +10,6 @@
 #include <boost/fusion/sequence/intrinsic/size.hpp>
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 #include <boost/fusion/sequence/intrinsic/value_at.hpp>
-#include <boost/fusion/sequence/io/out.hpp>
 
 #include <boost/fusion/container/vector/vector20.hpp>
 #include <boost/fusion/container/vector/vector30.hpp>
@@ -30,14 +29,12 @@
 main()
 {
     using namespace boost::fusion;
- using std::cout;
- using std::endl;
 
     {
         vector0<> vec;
         (void) vec;
- cout << "(): " << sizeof(vec) << endl;
- cout << (boost::is_empty<vector0<> >::value ? "is empty" : "is not empty") << endl;
+ std::cout << "(): " << sizeof(vec) << std::endl;
+ std::cout << (boost::is_empty<vector0<> >::value ? "is empty" : "is not empty") << std::endl;
     }
 
     {
@@ -57,7 +54,7 @@
         typedef vector1<int> type;
         type vec(123);
         BOOST_TEST(at_c<0>(vec) == 123);
- cout << "(int): " << sizeof(vec) << endl;
+ std::cout << "(int): " << sizeof(vec) << std::endl;
     }
 
     { // testing const vector
@@ -92,7 +89,7 @@
         type vec(123, 'x');
         BOOST_TEST(at_c<0>(vec) == 123);
         BOOST_TEST(at_c<1>(vec) == 'x');
- cout << "(int, char): " << sizeof(vec) << endl;
+ std::cout << "(int, char): " << sizeof(vec) << std::endl;
     }
 
     {
@@ -121,19 +118,19 @@
         BOOST_TEST(at_c<0>(vec) == 123);
         BOOST_TEST(at_c<1>(vec) == 'x');
         BOOST_TEST(at_c<2>(vec) >= 123.455 && at_c<2>(vec) <= 123.457);
- cout << "(int, char, double): " << sizeof(vec) << endl;
+ std::cout << "(int, char, double): " << sizeof(vec) << std::endl;
     }
 
     {
         typedef vector4<int, char, double, bool> type;
         type vec(123, 'x', 123.456, true);
- cout << "(int, char, double, bool): " << sizeof(vec) << endl;
+ std::cout << "(int, char, double, bool): " << sizeof(vec) << std::endl;
     }
 
     {
         typedef vector4<int, char, bool, double> type;
         type vec(123, 'x', true, 123.456);
- cout << "(int, char, bool, double): " << sizeof(vec) << endl;
+ std::cout << "(int, char, bool, double): " << sizeof(vec) << std::endl;
     }
 
     {
@@ -155,13 +152,13 @@
         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;
+ std::cout << "(bool, char, short, int, long, float, double): " << sizeof(vec) << std::endl;
     }
 
     {
         typedef vector10<int, int, int, int, int, int, int, int, int, int> type;
         type vec; // compile check only
- cout << "vector10 of int: " << sizeof(vec) << endl;
+ std::cout << "vector10 of int: " << sizeof(vec) << std::endl;
     }
 
     {
@@ -170,7 +167,7 @@
           , int, int, int, int, int, int, int, int, int, int> type;
 
         type vec; // compile check only
- cout << "vector20 of int: " << sizeof(vec) << endl;
+ std::cout << "vector20 of int: " << sizeof(vec) << std::endl;
     }
 
     {
@@ -180,7 +177,7 @@
           , int, int, int, int, int, int, int, int, int, int> type;
 
         type vec; // compile check only
- cout << "vector30 of int: " << sizeof(vec) << endl;
+ std::cout << "vector30 of int: " << sizeof(vec) << std::endl;
     }
 
     {
@@ -191,7 +188,7 @@
           , int, int, int, int, int, int, int, int, int, int> type;
 
         type vec; // compile check only
- cout << "vector40 of int: " << sizeof(vec) << endl;
+ std::cout << "vector40 of int: " << sizeof(vec) << std::endl;
     }
 
     {
@@ -203,18 +200,16 @@
           , int, int, int, int, int, int, int, int, int, int> type;
 
         type vec; // compile check only
- cout << "vector50 of int: " << sizeof(vec) << endl;
+ std::cout << "vector50 of int: " << sizeof(vec) << std::endl;
     }
-
+
     {
         // testing copy and assign from a view
         vector0<> empty;
         vector2<int, long> v(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 =push_back(push_back(empty, 123), 456); // test assign
- cout << v << endl;
+ v = push_back(push_back(empty, 123), 456); // test assign
         BOOST_TEST(at_c<0>(v) == 123);
         BOOST_TEST(at_c<1>(v) == 456);
     }
@@ -223,11 +218,9 @@
         // testing copy and assign from a vector_c
         boost::mpl::vector_c<int, 123, 456> vec_c;
         vector2<int, long> v(vec_c);
- std::cout << v << std::endl;
         BOOST_TEST(at_c<0>(v) == 123);
         BOOST_TEST(at_c<1>(v) == 456);
         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/libs/fusion/test/sequence/vector_tie.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_tie.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_tie.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -2,7 +2,7 @@
     Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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/fusion/container/vector/vector.hpp>

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/zip_view2.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/zip_view2.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/zip_view2.cpp 2009-11-03 13:27:47 EST (Tue, 03 Nov 2009)
@@ -49,12 +49,15 @@
         seqs_type seqs(iv, cv, cl);
         view v(seqs);
 
+ BOOST_TEST(at_c<0>(v) == make_vector(1, 'a', 'y'));
+ BOOST_TEST(at_c<1>(v) == make_vector(2, 'b', 'z'));
         BOOST_TEST(front(v) == make_vector(1, 'a', 'y'));
         BOOST_TEST(*next(begin(v)) == make_vector(2, 'b', 'z'));
         BOOST_TEST(advance_c<2>(begin(v)) == end(v));
         BOOST_TEST(distance(begin(v), end(v)) == 2);
         BOOST_STATIC_ASSERT((boost::fusion::result_of::distance<boost::fusion::result_of::begin<view>::type, boost::fusion::result_of::end<view>::type>::value == 2));
 
+ BOOST_MPL_ASSERT((boost::is_same<boost::fusion::result_of::value_at_c<view,0>::type, vector<int,char,char> >));
         BOOST_MPL_ASSERT((boost::is_same<boost::fusion::result_of::value_of<boost::fusion::result_of::begin<view>::type>::type, vector<int,char,char> >));
     }
     return boost::report_errors();


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