Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r60254 - in sandbox/SOC/2009/fusion: boost/fusion/algorithm/query/detail boost/fusion/container/list boost/fusion/container/vector/detail/pp boost/fusion/container/vector/detail/variadic_templates boost/fusion/functional/invocation/detail boost/fusion/iterator boost/fusion/support boost/fusion/support/internal boost/fusion/view/single_view libs/fusion/example/extension libs/fusion/example/extension/detail libs/fusion/example/extension/struct libs/fusion/example/extension/struct/detail libs/fusion/example/extension/triple libs/fusion/example/test libs/fusion/test libs/fusion/test/compile_time libs/fusion/test/sequence
From: mr.chr.schmidt_at_[hidden]
Date: 2010-03-06 15:28:08


Author: cschmidt
Date: 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
New Revision: 60254
URL: http://svn.boost.org/trac/boost/changeset/60254

Log:
updated examples
Added:
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/Jamfile (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/deref_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/example_struct_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/has_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/key_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_of_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/example_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/example_struct_type.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/test_example.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/Jamfile (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/triple.cpp (contents, props changed)
Removed:
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/Jamfile
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct.hpp
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_iterator.hpp
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_type.hpp
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/tag_of.hpp
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/test_example.cpp
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple.cpp
   sandbox/SOC/2009/fusion/libs/fusion/example/test/
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp | 1 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp | 1 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp | 1 +
   sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp | 7 +++++--
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp | 7 +++++--
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp | 12 ++++++------
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/invoke.hpp | 8 ++------
   sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp | 28 +++++++++++++---------------
   sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp | 25 ++++++++++++++-----------
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp | 17 +++++++++++++----
   sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile | 3 ++-
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp | 2 +-
   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/sequence/list_iterator.cpp | 2 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_iterator.cpp | 2 +-
   18 files changed, 70 insertions(+), 54 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -1,6 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
+ Copyright (c) 2009 Christopher Schmidt
 
     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)

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -1,5 +1,6 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2009 Christopher Schmidt
 
     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)

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -1,6 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
+ Copyright (c) 2009 Christopher Schmidt
 
     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)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -15,6 +15,7 @@
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/internal/assign_tags.hpp>
 #include <boost/fusion/support/internal/sequence_assign.hpp>
@@ -26,7 +27,6 @@
 #ifdef BOOST_NO_RVALUE_REFERENCES
 # include <boost/call_traits.hpp>
 #endif
-#include <boost/type_traits/is_convertible.hpp>
 #include <boost/utility/enable_if.hpp>
 
 #include <boost/fusion/container/list/detail/cons_fwd.hpp>
@@ -183,7 +183,10 @@
         cons(
             BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
             typename disable_if<
- is_convertible<BOOST_FUSION_R_ELSE_CLREF(Seq), car_type>
+ detail::is_explicitly_convertible<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , car_type
+ >
>::type* =0)
           : car(fusion::front(BOOST_FUSION_FORWARD(Seq,seq)))
           , cdr(detail::assign_by_deref(),

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -20,6 +20,7 @@
 # include <boost/fusion/support/internal/ref.hpp>
 # include <boost/fusion/support/internal/sequence_assign.hpp>
 # include <boost/fusion/support/internal/template.hpp>
+# include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
 
 # include <boost/preprocessor/cat.hpp>
 # include <boost/preprocessor/dec.hpp>
@@ -34,7 +35,6 @@
 # ifdef BOOST_FUSION_PREFER_MPL
 # include <boost/mpl/at.hpp>
 # endif
-# include <boost/type_traits/is_convertible.hpp>
 # include <boost/type_traits/add_const.hpp>
 # include <boost/utility/enable_if.hpp>
 
@@ -143,7 +143,10 @@
         explicit
         vector1(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
                 typename disable_if<
- is_convertible<BOOST_FUSION_R_ELSE_LREF(Seq), T0>
+ detail::is_explicitly_convertible<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , T0
+ >
>::type* =0)
           : m0(fusion::front(seq))
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -13,13 +13,14 @@
 #include <boost/fusion/iterator/advance_c.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
 #ifdef BOOST_FUSION_PREFER_MPL
 # include <boost/fusion/support/internal/variadic_templates/variadic_arguments_to_vector.hpp>
 #endif
 #include <boost/fusion/support/internal/sequence_assign.hpp>
 #include <boost/fusion/support/internal/assign_tags.hpp>
-#include <boost/fusion/support/sequence_base.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
 
 #ifndef BOOST_FUSION_TAGGED_VECTOR
 # include <boost/preprocessor/inc.hpp>
@@ -35,7 +36,6 @@
 #ifdef BOOST_NO_RVALUE_REFERENCES
 # include <boost/call_traits.hpp>
 #endif
-#include <boost/type_traits/is_convertible.hpp>
 #include <boost/type_traits/add_const.hpp>
 #include <boost/utility/enable_if.hpp>
 
@@ -48,11 +48,11 @@
     namespace detail
     {
         template<typename From, typename... Elements>
- struct is_convertible_to_head;
+ struct is_explicitly_convertible_to_head;
 
         template<typename From, typename Head, typename... Rest>
- struct is_convertible_to_head<From, Head, Rest...>
- : is_convertible<From, Head>
+ struct is_explicitly_convertible_to_head<From, Head, Rest...>
+ : is_explicitly_convertible<From, Head>
         {};
 
 #ifdef BOOST_FUSION_TAGGED_VECTOR
@@ -446,7 +446,7 @@
             typename disable_if<
                 mpl::and_<
                     mpl::bool_<sizeof...(Elements)==1>
- , detail::is_convertible_to_head<
+ , detail::is_explicitly_convertible_to_head<
                         BOOST_FUSION_R_ELSE_CLREF(Seq)
                       , Elements...
>

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/invoke.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/invoke.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/invoke.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -8,7 +8,7 @@
 #include <boost/config.hpp>
 #include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/internal/assert.hpp>
-
+#include <boost/ref.hpp>
 #if defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
 # include <boost/fusion/functional/invocation/detail/pp/invoke_impl.hpp>
 #else
@@ -22,11 +22,7 @@
         template<typename F, typename Seq>
         struct BOOST_FUSION_INVOKE_NAME
           : detail::BOOST_FUSION_INVOKE_NAME<
-#ifdef BOOST_NO_RVALUE_REFERENCES
- typename traits::deduce<F>::type
-#else
- typename traits::deduce_ref<F>::type
-#endif
+ typename unwrap_reference<F>::type
               , typename detail::add_lref<Seq>::type
>
         {

Modified: sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -55,11 +55,10 @@
 #ifndef BOOST_NO_CONSTEXPR
         constexpr
 #endif
- typename
- enable_if<
- mpl::and_<traits::is_iterator<It1>, traits::is_iterator<It2> >
- , bool
- >::type
+ typename enable_if<
+ mpl::and_<traits::is_iterator<It1>, traits::is_iterator<It2> >
+ , bool
+ >::type
         operator==(It1 const&, It2 const&)
         {
             return result_of::equal_to<It1 const&, It1 const&>::value;
@@ -70,17 +69,16 @@
 #ifndef BOOST_NO_CONSTEXPR
         constexpr
 #endif
- typename
- enable_if<
- mpl::and_<
- traits::is_iterator<It1>
- , traits::is_iterator<It2>
- >
- , bool
- >::type
- operator!=(It1 const&, It1 const&)
+ typename enable_if<
+ mpl::and_<
+ traits::is_iterator<It1>
+ , traits::is_iterator<It2>
+ >
+ , bool
+ >::type
+ operator!=(It1 const&, It2 const&)
         {
- return !result_of::equal_to<It1 const&, It1 const&>::value;
+ return !result_of::equal_to<It1 const&, It2 const&>::value;
         }
     }
 

Added: sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,63 @@
+/*=============================================================================
+ Copyright (c) 2009-2010 Christopher Schmidt
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_SUPPORT_INTERNAL_IS_EXPLICITLY_CONVERTIBLE_HPP
+#define BOOST_FUSION_SUPPORT_INTERNAL_IS_EXPLICITLY_CONVERTIBLE_HPP
+
+#include <boost/config.hpp>
+#if BOOST_WORKAROUND(__GNUC__,<4)
+# include <boost/type_traits/is_convertible.hpp>
+#else
+# include <boost/fusion/support/internal/small_big_type.hpp>
+# include <boost/mpl/bool.hpp>
+# include <cstddef>
+#endif
+
+namespace boost { namespace fusion { namespace detail
+{
+//cschmidt: Fall back due to a defect in gcc 3.x's call_expr...
+#if BOOST_WORKAROUND(__GNUC__,<4)
+ template<typename From, typename To>
+ struct is_explicitly_convertible
+ : is_convertible<From,To>
+ {};
+#else
+ template<typename T>
+ T
+ get_t();
+
+ template<std::size_t>
+ struct helper;
+
+ template<>
+ struct helper<sizeof(int)>
+ {
+ typedef big_type type;
+ };
+
+ template<typename From, typename To>
+ struct is_explicitly_convertible_impl
+ {
+ template<typename T>
+ static typename helper<sizeof(static_cast<T>(get_t<From>()),0)>::type
+ impl(int);
+
+ template<typename>
+ static small_type
+ impl(...);
+
+ typedef mpl::bool_<sizeof(impl<To>(0)) == sizeof(big_type)> type;
+ };
+
+ template<typename From, typename To>
+ struct is_explicitly_convertible
+ : is_explicitly_convertible_impl<From,To>::type
+ {};
+#endif
+}}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2005 Joel de Guzman
     Copyright (c) 2006 Tobias Schwinger
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 Christopher Schmidt
 
     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)
@@ -10,19 +10,19 @@
 #ifndef BOOST_FUSION_SUPPORT_PAIR_HPP
 #define BOOST_FUSION_SUPPORT_PAIR_HPP
 
-#include <boost/fusion/support/internal/ref.hpp>
 #include <boost/fusion/support/deduce.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#ifndef BOOST_NO_RVALUE_REFERENCES
+# include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
+#endif
 
 #include <boost/preprocessor/empty.hpp>
-#if defined(BOOST_NO_VARIADIC_TEMPLATES) && defined(BOOST_NO_RVALUE_REFERENCES)
+#ifdef BOOST_NO_RVALUE_REFERENCES
 # include <boost/call_traits.hpp>
 #else
 # include <boost/utility/enable_if.hpp>
-# include <boost/type_traits/is_convertible.hpp>
 #endif
 
-//TODO is_convertible -> is_explicitly_convertible
-
 namespace boost { namespace fusion
 {
     // A half runtime pair where the first type does not have data
@@ -54,16 +54,19 @@
         {}
 # else
         template<typename Arg>
- pair(Arg&& arg);
+ pair(Arg&& arg,
+ typename enable_if<
+ detail::is_explicitly_convertible<Arg&&,second_type>
+ >::type* =0);
           : second(std::forward<Arg>(arg))
         {}
 # endif
 #else
         template<typename Arg>
- pair(BOOST_FUSION_R_ELSE_CLREF(Arg) arg
- /*, typename enable_if<
- is_convertible<BOOST_FUSION_R_ELSE_CLREF(Arg),second_type>
- >::type* =0*/)
+ pair(BOOST_FUSION_R_ELSE_CLREF(Arg) arg,
+ typename enable_if<
+ detail::is_explicitly_convertible<Arg&&,second_type>
+ >::type* =0)
           : second(BOOST_FUSION_FORWARD(Arg,arg))
         {}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -18,13 +18,13 @@
 #include <boost/fusion/support/deduce.hpp>
 #include <boost/fusion/support/internal/workaround.hpp>
 #include <boost/fusion/support/internal/sequence_assign.hpp>
+#include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
 
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/int.hpp>
 #ifdef BOOST_NO_RVALUE_REFERENCES
 # include <boost/call_traits.hpp>
 #endif
-#include <boost/type_traits/is_convertible.hpp>
 #include <boost/utility/enable_if.hpp>
 
 #include <boost/fusion/view/single_view/detail/single_view_fwd.hpp>
@@ -81,7 +81,10 @@
         explicit
         single_view(Arg&& val
           , typename enable_if<
- is_convertible<BOOST_FUSION_R_ELSE_CLREF(Arg),value_type>
+ detail::is_explicitly_convertible<
+ BOOST_FUSION_R_ELSE_CLREF(Arg)
+ , value_type
+ >
>::type* =0)
           : val(std::forward<Arg>(val))
         {}
@@ -90,7 +93,10 @@
         template<typename Arg>
         single_view(BOOST_FUSION_R_ELSE_CLREF(Arg) arg
           , typename enable_if<
- is_convertible<BOOST_FUSION_R_ELSE_CLREF(Arg),value_type>
+ detail::is_explicitly_convertible<
+ BOOST_FUSION_R_ELSE_CLREF(Arg)
+ , value_type
+ >
>::type* =0)
           : val(BOOST_FUSION_FORWARD(Arg,arg))
         {}
@@ -109,7 +115,10 @@
         single_view(
             BOOST_FUSION_R_ELSE_CLREF(Seq) seq
           , typename disable_if<
- is_convertible<BOOST_FUSION_R_ELSE_CLREF(Seq), value_type>
+ detail::is_explicitly_convertible<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , value_type
+ >
>::type* =0)
           : val(fusion::front(BOOST_FUSION_FORWARD(Seq,seq)))
         {

Deleted: sandbox/SOC/2009/fusion/libs/fusion/example/extension/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/Jamfile 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
+++ (empty file)
@@ -1,20 +0,0 @@
-#==============================================================================
-# Copyright (c) 2003-2006 Joel de Guzman
-# Copyright (c) 2006 Dan Marsden
-#
-# Use, modification and distribution is 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)
-#==============================================================================
-
-# bring in rules for testing
-import testing ;
-
-{
- test-suite example :
-
- [ run test_example.cpp : : : : ]
- [ run triple.cpp : : : : ]
- ;
-}
-

Deleted: sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
+++ (empty file)
@@ -1,25 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(BOOST_FUSION_EXAMPLE_STRUCT)
-#define BOOST_FUSION_EXAMPLE_STRUCT
-
-#include "./tag_of.hpp"
-#include "./example_struct_iterator.hpp"
-#include "./detail/begin_impl.hpp"
-#include "./detail/end_impl.hpp"
-#include "./detail/at_impl.hpp"
-#include "./detail/value_at_impl.hpp"
-#include "./detail/size_impl.hpp"
-#include "./detail/category_of_impl.hpp"
-#include "./detail/at_key_impl.hpp"
-#include "./detail/value_at_key_impl.hpp"
-#include "./detail/has_key_impl.hpp"
-#include "./detail/is_sequence_impl.hpp"
-#include "./detail/is_view_impl.hpp"
-
-#endif

Deleted: sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_iterator.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
+++ (empty file)
@@ -1,64 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(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"
-#include "./detail/prior_impl.hpp"
-#include "./detail/deref_impl.hpp"
-#include "./detail/advance_impl.hpp"
-#include "./detail/distance_impl.hpp"
-#include "./detail/value_of_impl.hpp"
-#include "./detail/equal_to_impl.hpp"
-
-namespace example
-{
- struct example_struct_iterator_tag;
-
- template<typename Struct, int Pos>
- struct example_struct_iterator;
-}
-
-namespace boost { namespace fusion {
-
- struct random_access_traversal_tag;
-
- namespace traits
- {
- template<typename Struct, int Pos>
- struct tag_of<example::example_struct_iterator<Struct, Pos> >
- {
- typedef example::example_struct_iterator_tag type;
- };
- }
-}}
-
-namespace example {
- template<typename Struct, int Pos>
- struct example_struct_iterator
- : boost::fusion::iterator_base<example_struct_iterator<Struct, Pos> >
- {
- BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3);
- typedef Struct struct_type;
- typedef boost::mpl::int_<Pos> index;
- typedef boost::fusion::random_access_traversal_tag category;
-
- example_struct_iterator(Struct& str)
- : struct_(str) {}
-
- Struct& struct_;
- };
-}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_type.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_type.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
+++ (empty file)
@@ -1,27 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
-
- 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(BOOST_FUSION_EXAMPLE_STRUCT_TYPE)
-#define BOOST_FUSION_EXAMPLE_STRUCT_TYPE
-
-#include <string>
-
-namespace example
-{
- struct example_struct
- {
- std::string name;
- int age;
- example_struct(
- const std::string& n,
- int a)
- : name(n), age(a)
- {}
- };
-}
-
-#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/Jamfile
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/Jamfile 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,20 @@
+#==============================================================================
+# Copyright (c) 2003-2006 Joel de Guzman
+# Copyright (c) 2006 Dan Marsden
+# Copyright (c) 2010 Christopher Schmidt
+#
+# Use, modification and distribution is 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)
+#==============================================================================
+
+# bring in rules for testing
+import testing ;
+
+{
+ test-suite example_struct :
+
+ [ run test_example.cpp : : : : ]
+ ;
+}
+

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/advance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/advance_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,41 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_ADVANCE_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_ADVANCE_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct advance_impl;
+
+ template<>
+ struct advance_impl<example::example_struct_iterator_tag>
+ {
+ template<typename ItRef, typename N>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef
+ example::example_struct_iterator<
+ typename it::struct_type
+ , it::index::value + N::value
+ >
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return type(it.struct_);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/at_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,67 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_AT_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_AT_IMPL_HPP
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct at_impl;
+
+ template<>
+ struct at_impl<example::example_sequence_tag>
+ {
+ template<typename SeqRef, typename N>
+ struct apply
+ : apply<SeqRef, mpl::int_<N::value> >
+ {};
+
+ template<typename SeqRef>
+ struct apply<SeqRef, mpl::int_<0> >
+ {
+ typedef typename
+ mpl::if_<
+ is_const<typename detail::remove_reference<SeqRef>::type>
+ , std::string const&
+ , std::string&
+ >::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return seq.name;
+ };
+ };
+
+ template<typename SeqRef>
+ struct apply<SeqRef, mpl::int_<1> >
+ {
+ typedef typename
+ mpl::if_<
+ is_const<typename detail::remove_reference<SeqRef>::type>
+ , int const&
+ , int&
+ >::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return seq.age;
+ };
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/at_key_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_AT_KEY_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_AT_KEY_IMPL_HPP
+
+#include "at_impl.hpp"
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct at_key_impl;
+
+ template<>
+ struct at_key_impl<example::example_sequence_tag>
+ {
+ template<typename SeqRef, typename Key>
+ struct apply;
+
+ template<typename SeqRef>
+ struct apply<SeqRef, fields::name>
+ : at_impl<example::example_sequence_tag>::apply<SeqRef, mpl::int_<0> >
+ {};
+
+ template<typename SeqRef>
+ struct apply<SeqRef, fields::age>
+ : at_impl<example::example_sequence_tag>::apply<SeqRef, mpl::int_<1> >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/begin_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_BEGIN_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_BEGIN_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct begin_impl;
+
+ template<>
+ struct begin_impl<example::example_sequence_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ typedef example::example_struct_iterator<SeqRef, 0> type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/category_of_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP
+
+#include <boost/fusion/support/category_of.hpp>
+
+namespace boost { namespace fusion {
+
+ namespace extension
+ {
+ template<>
+ struct category_of_impl<example::example_sequence_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ struct type
+ : random_access_traversal_tag, associative_tag
+ {};
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/deref_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/deref_data_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,25 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_DEREF_DATA_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_DEREF_DATA_IMPL_HPP
+
+#include "deref_impl.hpp"
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct deref_data_impl;
+
+ template<>
+ struct deref_data_impl<example::example_struct_iterator_tag>
+ : deref_impl<example::example_struct_iterator_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/deref_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,65 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_DEREF_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_DEREF_IMPL_HPP
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct deref_impl;
+
+ template<>
+ struct deref_impl<example::example_struct_iterator_tag>
+ {
+ template<typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+ typedef typename
+ mpl::if_c<
+ !it::index::value
+ , std::string
+ , int
+ >::type
+ attr_type;
+
+ typedef typename
+ mpl::if_<
+ is_const<typename it::struct_type>
+ , attr_type const&
+ , attr_type&
+ >::type
+ type;
+
+ static type
+ call(ItRef it, mpl::true_)
+ {
+ return it.struct_.name;
+ }
+
+ static type
+ call(ItRef it, mpl::false_)
+ {
+ return it.struct_.age;
+ }
+
+ static type
+ call(ItRef it_)
+ {
+ return call(it_, mpl::bool_<!it::index::value>());
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/distance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/distance_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_DISTANCE_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_DISTANCE_IMPL_HPP
+
+#include <boost/mpl/minus.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct distance_impl;
+
+ template<>
+ struct distance_impl<example::example_struct_iterator_tag>
+ {
+ template<typename It1Ref, typename It2Ref>
+ struct apply
+ : mpl::minus<
+ typename detail::remove_reference<It2Ref>::type::index
+ , typename detail::remove_reference<It1Ref>::type::index
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/end_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_END_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_END_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct end_impl;
+
+ template<>
+ struct end_impl<example::example_sequence_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ typedef example::example_struct_iterator<SeqRef, 2> type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/equal_to_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/equal_to_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_EQUAL_TO_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_EQUAL_TO_IMPL_HPP
+
+#include <boost/mpl/equal_to.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct equal_to_impl;
+
+ template<>
+ struct equal_to_impl<example::example_struct_iterator_tag>
+ {
+ template<typename It1Ref, typename It2Ref>
+ struct apply
+ : mpl::equal_to<
+ typename detail::remove_reference<It1Ref>::type::index
+ , typename detail::remove_reference<It2Ref>::type::index
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/example_struct_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/example_struct_iterator.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_EXAMPLE_STRUCT_ITERATOR_HPP
+#define EXTENSION_STRUCT_DETAIL_EXAMPLE_STRUCT_ITERATOR_HPP
+
+#include <boost/fusion/support.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+namespace example
+{
+ template<typename StructRef, int Pos>
+ struct example_struct_iterator
+ : boost::fusion::iterator_base<example_struct_iterator<StructRef, Pos> >
+ {
+ typedef StructRef struct_type;
+ typedef boost::mpl::int_<Pos> index;
+
+ typedef example::example_struct_iterator_tag fusion_tag;
+ struct category
+ : boost::fusion::random_access_traversal_tag
+ , boost::fusion::associative_tag
+ {};
+
+ example_struct_iterator(StructRef struct_)
+ : struct_(struct_)
+ {}
+
+ StructRef struct_;
+ };
+}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/has_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/has_key_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_HAS_KEY_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_HAS_KEY_IMPL_HPP
+
+#include <boost/mpl/or.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct has_key_impl;
+
+ template<>
+ struct has_key_impl<example::example_sequence_tag>
+ {
+ template<typename SeqRef, typename Key>
+ struct apply
+ : mpl::or_<
+ is_same<Key, fields::name>
+ , is_same<Key, fields::age>
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/is_sequence_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<example::example_sequence_tag>
+ {
+ template<typename T>
+ struct apply
+ : mpl::true_
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/is_view_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,25 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_IS_VIEW_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_IS_VIEW_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<example::example_sequence_tag>
+ : boost::mpl::false_
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/key_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/key_of_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ 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 EXTENSION_STRUCT_DETAIL_KEY_OF_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_KEY_OF_IMPL_HPP
+
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct key_of_impl;
+
+ template<>
+ struct key_of_impl<example::example_struct_iterator_tag>
+ {
+ template<typename ItRef>
+ struct apply
+ : mpl::if_c<
+ !detail::remove_reference<ItRef>::type::index::value
+ , fields::name
+ , fields::age
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/next_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/next_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_NEXT_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_NEXT_IMPL_HPP
+
+#include "advance_impl.hpp"
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion {
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct next_impl;
+
+ template<>
+ struct next_impl<example::example_struct_iterator_tag>
+ {
+ template<typename ItRef>
+ struct apply
+ : advance_impl<example::example_struct_iterator_tag>::
+ apply<ItRef, mpl::int_<1> >
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/prior_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/prior_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_PRIOR_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_PRIOR_IMPL_HPP
+
+#include "advance_impl.hpp"
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion {
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct prior_impl;
+
+ template<>
+ struct prior_impl<example::example_struct_iterator_tag>
+ {
+ template<typename ItRef>
+ struct apply
+ : advance_impl<example::example_struct_iterator_tag>::
+ apply<ItRef, mpl::int_<-1> >
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/size_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_SIZE_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_SIZE_IMPL_HPP
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct size_impl;
+
+ template<>
+ struct size_impl<example::example_sequence_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::int_<2>
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,74 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_TAG_OF_HPP
+#define EXTENSION_STRUCT_DETAIL_TAG_OF_HPP
+
+#include <boost/config.hpp>
+#include <boost/fusion/support/tag_of_fwd.hpp>
+#include <string>
+
+namespace fields
+{
+ struct name;
+ struct age;
+}
+
+namespace example
+{
+ struct example_struct;
+
+ template<typename Struct, int Pos>
+ struct example_struct_iterator;
+
+ struct example_sequence_tag;
+ struct example_struct_iterator_tag;
+}
+
+namespace boost { namespace fusion { namespace traits
+{
+ template<>
+ struct tag_of<example::example_struct>
+ {
+ typedef example::example_sequence_tag type;
+ };
+
+ template<>
+ struct tag_of<example::example_struct const>
+ {
+ typedef example::example_sequence_tag type;
+ };
+
+ template<>
+ struct tag_of<example::example_struct&>
+ {
+ typedef example::example_sequence_tag type;
+ };
+
+ template<>
+ struct tag_of<example::example_struct const&>
+ {
+ typedef example::example_sequence_tag type;
+ };
+
+#ifndef BOOST_NO_RVALUE_REFERENCES
+ template<>
+ struct tag_of<example::example_struct&&>
+ {
+ typedef example::example_sequence_tag type;
+ };
+
+ template<>
+ struct tag_of<example::example_struct const&&>
+ {
+ typedef example::example_sequence_tag type;
+ };
+#endif
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_at_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,45 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_VALUE_AT_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_VALUE_AT_IMPL_HPP
+
+namespace example
+{
+ struct example_sequence_tag;
+}
+
+namespace boost { namespace fusion {
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct value_at_impl;
+
+ template<>
+ struct value_at_impl<example::example_sequence_tag>
+ {
+ template<typename Sequence, typename N>
+ struct apply;
+
+ template<typename Sequence>
+ struct apply<Sequence, mpl::int_<0> >
+ {
+ typedef std::string type;
+ };
+
+ template<typename Sequence>
+ struct apply<Sequence, mpl::int_<1> >
+ {
+ typedef int type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_at_key_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ 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 EXTENSION_STRUCT_DETAIL_VALUE_AT_KEY_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_VALUE_AT_KEY_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct value_at_key_impl;
+
+ template<>
+ struct value_at_key_impl<example::example_sequence_tag>
+ {
+ template<typename Sequence, typename N>
+ struct apply;
+
+ template<typename Sequence>
+ struct apply<Sequence, fields::name>
+ {
+ typedef std::string type;
+ };
+
+ template<typename Sequence>
+ struct apply<Sequence, fields::age>
+ {
+ typedef int type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_of_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_of_data_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,24 @@
+/*=============================================================================
+ Copyright (c) 2010 Christopher Schmidt
+
+ 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 EXTENSION_STRUCT_DETAIL_VALUE_OF_DATA_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_VALUE_OF_DATA_IMPL_HPP
+
+#include "value_of_impl.hpp"
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct value_of_data_impl;
+
+ template<>
+ struct value_of_data_impl<example::example_struct_iterator_tag>
+ : value_of_impl<example::example_struct_iterator_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/value_of_impl.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_DETAIL_VALUE_OF_IMPL_HPP
+#define EXTENSION_STRUCT_DETAIL_VALUE_OF_IMPL_HPP
+
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct value_of_impl;
+
+ template<>
+ struct value_of_impl<example::example_struct_iterator_tag>
+ {
+ template<typename ItRef>
+ struct apply
+ : mpl::if_c<
+ !detail::remove_reference<ItRef>::type::index::value
+ , std::string
+ , int
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/example_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/example_struct.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,41 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+ Copyright (c) 2010 Christopher Schmidt
+
+ 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 EXTENSION_STRUCT_EXAMPLE_STRUCT_HPP
+#define EXTENSION_STRUCT_EXAMPLE_STRUCT_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include "detail/tag_of.hpp"
+
+#include "detail/at_impl.hpp"
+#include "detail/at_key_impl.hpp"
+#include "detail/begin_impl.hpp"
+#include "detail/category_of_impl.hpp"
+#include "detail/end_impl.hpp"
+#include "detail/has_key_impl.hpp"
+#include "detail/is_sequence_impl.hpp"
+#include "detail/is_view_impl.hpp"
+#include "detail/size_impl.hpp"
+#include "detail/value_at_impl.hpp"
+#include "detail/value_at_key_impl.hpp"
+
+#include "detail/example_struct_iterator.hpp"
+#include "detail/advance_impl.hpp"
+#include "detail/deref_data_impl.hpp"
+#include "detail/deref_impl.hpp"
+#include "detail/distance_impl.hpp"
+#include "detail/equal_to_impl.hpp"
+#include "detail/key_of_impl.hpp"
+#include "detail/next_impl.hpp"
+#include "detail/prior_impl.hpp"
+#include "detail/value_of_data_impl.hpp"
+#include "detail/value_of_impl.hpp"
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/example_struct_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/example_struct_type.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,27 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 EXTENSION_STRUCT_EXAMPLE_STRUCT_TYPE_HPP
+#define EXTENSION_STRUCT_EXAMPLE_STRUCT_TYPE_HPP
+
+#include <string>
+
+namespace example
+{
+ struct example_struct
+ {
+ std::string name;
+ int age;
+
+ example_struct(std::string const& name,int age)
+ : name(name), age(age)
+ {}
+ };
+}
+
+#endif

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/test_example.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/test_example.cpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,67 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ 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 "example_struct.hpp"
+#include "example_struct_type.hpp"
+#include <boost/detail/lightweight_test.hpp>
+
+#include <boost/fusion/sequence.hpp>
+#include <boost/fusion/iterator.hpp>
+#include <boost/fusion/support.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/mpl/assert.hpp>
+
+int main()
+{
+ example::example_struct bert("bert", 99);
+ using namespace boost::fusion;
+
+ BOOST_MPL_ASSERT((traits::is_associative<example::example_struct>));
+ BOOST_MPL_ASSERT((traits::is_random_access<example::example_struct>));
+ BOOST_MPL_ASSERT((traits::is_sequence<example::example_struct>));
+
+ BOOST_TEST(deref(begin(bert)) == "bert");
+ BOOST_TEST(deref_data(begin(bert)) == "bert");
+ BOOST_TEST(*next(begin(bert)) == 99);
+ BOOST_TEST(*prior(end(bert)) == 99);
+ BOOST_TEST(*advance_c<1>(begin(bert)) == 99);
+ BOOST_TEST(*advance_c<-1>(end(bert)) == 99);
+ BOOST_TEST(distance(begin(bert), end(bert)) == 2);
+
+ typedef result_of::begin<example::example_struct>::type first;
+ typedef result_of::next<first>::type second;
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, std::string>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_of_data<first>::type, std::string>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_of_data<second>::type, int>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::key_of<first>::type, fields::name>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::key_of<second>::type, fields::age>));
+
+ BOOST_TEST(begin(bert) != end(bert));
+ BOOST_TEST(advance_c<2>(begin(bert)) == end(const_cast<const example::example_struct&>(bert)));
+
+ BOOST_TEST(at_c<0>(bert) == "bert");
+ BOOST_TEST(at_c<1>(bert) == 99);
+
+ BOOST_TEST(at_key<fields::name>(bert) == "bert");
+ BOOST_TEST(at_key<fields::age>(bert) == 99);
+
+ BOOST_TEST(has_key<fields::name>(bert));
+ BOOST_TEST(has_key<fields::age>(bert));
+ BOOST_TEST(!has_key<int>(bert));
+
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<example::example_struct, 0>::type, std::string>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<example::example_struct, 1>::type, int>));
+
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_key<example::example_struct, fields::name>::type, std::string>));
+ BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_key<example::example_struct, fields::age>::type, int>));
+
+ BOOST_TEST(size(bert) == 2);
+
+ return boost::report_errors();
+}

Deleted: sandbox/SOC/2009/fusion/libs/fusion/example/extension/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/tag_of.hpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
+++ (empty file)
@@ -1,30 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2005-2006 Dan Marsden
-
- 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(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"
-
-namespace example
-{
- struct example_sequence_tag;
-}
-
-namespace boost { namespace fusion {
-
-namespace traits {
-
- template<>
- struct tag_of<example::example_struct>
- {
- typedef example::example_sequence_tag type;
- };
-}}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/libs/fusion/example/extension/test_example.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/test_example.cpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
+++ (empty file)
@@ -1,62 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
-
- 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 "./example_struct.hpp"
-#include "./example_struct_type.hpp"
-#include <boost/detail/lightweight_test.hpp>
-
-#include <boost/fusion/sequence/intrinsic.hpp>
-#include <boost/fusion/support/is_sequence.hpp>
-#include <boost/fusion/support/category_of.hpp>
-#include <boost/fusion/iterator.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/mpl/assert.hpp>
-
-int main()
-{
- example::example_struct bert("bert", 99);
- using namespace boost::fusion;
-
- BOOST_MPL_ASSERT((traits::is_associative<example::example_struct>));
- BOOST_MPL_ASSERT((traits::is_random_access<example::example_struct>));
- BOOST_MPL_ASSERT((traits::is_sequence<example::example_struct>));
-
- BOOST_TEST(deref(begin(bert)) == "bert");
- BOOST_TEST(*next(begin(bert)) == 99);
- BOOST_TEST(*prior(end(bert)) == 99);
- BOOST_TEST(*advance_c<1>(begin(bert)) == 99);
- BOOST_TEST(*advance_c<-1>(end(bert)) == 99);
- BOOST_TEST(distance(begin(bert), end(bert)) == 2);
-
- typedef result_of::begin<example::example_struct>::type first;
- typedef result_of::next<first>::type second;
- BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<first>::type, std::string>));
- BOOST_MPL_ASSERT((boost::is_same<result_of::value_of<second>::type, int>));
-
- BOOST_TEST(begin(bert) != end(bert));
- BOOST_TEST(advance_c<2>(begin(bert)) == end(const_cast<const example::example_struct&>(bert)));
-
- BOOST_TEST(at_c<0>(bert) == "bert");
- BOOST_TEST(at_c<1>(bert) == 99);
-
- BOOST_TEST(at_key<fields::name>(bert) == "bert");
- BOOST_TEST(at_key<fields::age>(bert) == 99);
-
- BOOST_TEST(has_key<fields::name>(bert));
- BOOST_TEST(has_key<fields::age>(bert));
- BOOST_TEST(!has_key<int>(bert));
-
- BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<example::example_struct, 0>::type, std::string>));
- BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_c<example::example_struct, 1>::type, int>));
-
- BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_key<example::example_struct, fields::name>::type, std::string>));
- BOOST_MPL_ASSERT((boost::is_same<result_of::value_at_key<example::example_struct, fields::age>::type, int>));
-
- BOOST_TEST(size(bert) == 2);
-
- return boost::report_errors();
-}

Deleted: sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple.cpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
+++ (empty file)
@@ -1,319 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2006 Dan Marsden
-
- 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)
-==============================================================================*/
-
-/*=============================================================================
- An implementation of a std::pair like triple<T0, T1, T2>
- We use fusion::sequence_facade and fusion::iterator_facade
- to make our triple a fully conforming Boost.Fusion random
- traversal sequence.
-==============================================================================*/
-
-#include <boost/detail/lightweight_test.hpp>
-
-#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>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/minus.hpp>
-#include <boost/mpl/assert.hpp>
-
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#include <string>
-
-namespace mpl = boost::mpl;
-namespace fusion = boost::fusion;
-
-namespace demo
-{
- template<typename Seq, int N>
- struct triple_iterator
- : fusion::iterator_facade<triple_iterator<Seq, N>, fusion::random_access_traversal_tag>
- {
- typedef mpl::int_<N> index;
- typedef Seq sequence_type;
-
- triple_iterator(Seq& seq)
- : seq_(seq) {}
-
- Seq& seq_;
-
- template<typename T>
- struct value_of;
-
- template<typename Sq>
- struct value_of<triple_iterator<Sq, 0> >
- : mpl::identity<typename Sq::t0_type>
- {};
-
- template<typename Sq>
- struct value_of<triple_iterator<Sq, 1> >
- : mpl::identity<typename Sq::t1_type>
- {};
-
- template<typename Sq>
- struct value_of<triple_iterator<Sq, 2> >
- : mpl::identity<typename Sq::t2_type>
- {};
-
- template<typename T>
- struct deref;
-
- template <typename Sq>
- struct deref<triple_iterator<Sq, 0> >
- {
- typedef typename
- mpl::if_<
- boost::is_const<Sq>
- , typename Sq::t0_type const&
- , typename Sq::t0_type&
- >::type
- type;
-
- static type
- call(triple_iterator<Sq, 0> const& iter)
- {
- return iter.seq_.t0;
- }
- };
-
- template <typename Sq>
- struct deref<triple_iterator<Sq, 1> >
- {
- typedef typename
- mpl::if_<
- boost::is_const<Sq>
- , typename Sq::t1_type const&
- , typename Sq::t1_type&
- >::type
- type;
-
- static type
- call(triple_iterator<Sq, 1> const& iter)
- {
- return iter.seq_.t1;
- }
- };
-
- template <typename Sq>
- struct deref<triple_iterator<Sq, 2> >
- {
- typedef typename
- mpl::if_<
- boost::is_const<Sq>
- , typename Sq::t2_type const&
- , typename Sq::t2_type&
- >::type
- type;
-
- static type
- call(triple_iterator<Sq, 2> const& iter)
- {
- return iter.seq_.t2;
- }
- };
-
- template<typename It>
- struct next
- {
- typedef triple_iterator<
- typename It::sequence_type, It::index::value + 1> type;
-
- static type call(It const& it)
- {
- return type(it.seq_);
- }
- };
-
- template<typename It>
- struct prior
- {
- typedef triple_iterator<
- typename It::sequence_type, It::index::value - 1> type;
-
- static type call(It const& it)
- {
- return type(it.seq_);
- }
- };
-
- template<typename It1, typename It2>
- struct distance
- {
- typedef typename mpl::minus<typename It2::index, typename It1::index>::type type;
-
- static type call(It1 const& it1, It2 const& it2)
- {
- return type();
- }
- };
-
- template<typename It, typename M>
- struct advance
- {
- typedef triple_iterator<
- typename It::sequence_type,
- It::index::value + M::value> type;
-
- static type call(It const& it)
- {
- return type(it.seq_);
- }
- };
- };
-
- template<typename T0, typename T1, typename T2>
- struct triple
- : fusion::sequence_facade<triple<T0, T1, T2>, fusion::random_access_traversal_tag>
- {
- triple(T0 const& t0, T1 const& t1, T2 const& t2)
- : t0(t0), t1(t1), t2(t2)
- {}
-
- template<typename Sq>
- struct begin
- {
- typedef demo::triple_iterator<
- Sq, 0> type;
-
- static type call(Sq& sq)
- {
- return type(sq);
- }
- };
-
- template<typename Sq>
- struct end
- {
- typedef demo::triple_iterator<
- Sq, 3> type;
-
- static type call(Sq& sq)
- {
- return type(sq);
- }
- };
-
- template<typename Sq>
- struct size
- : mpl::int_<3>
- {};
-
- template<typename Sq, typename N>
- struct value_at
- : value_at<Sq, mpl::int_<N::value> >
- {};
-
- template<typename Sq>
- struct value_at<Sq, mpl::int_<0> >
- {
- typedef typename Sq::t0_type type;
- };
-
- template<typename Sq>
- struct value_at<Sq, mpl::int_<1> >
- {
- typedef typename Sq::t1_type type;
- };
-
- template<typename Sq>
- struct value_at<Sq, mpl::int_<2> >
- {
- typedef typename Sq::t2_type type;
- };
-
- template<typename Sq, typename N>
- struct at
- : at<Sq, mpl::int_<N::value> >
- {};
-
- template<typename Sq>
- struct at<Sq, mpl::int_<0> >
- {
- typedef typename
- mpl::if_<
- boost::is_const<Sq>
- , typename Sq::t0_type const&
- , typename Sq::t0_type&
- >::type
- type;
-
- static type call(Sq& sq)
- {
- return sq.t0;
- }
- };
-
- template<typename Sq>
- struct at<Sq, mpl::int_<1> >
- {
- typedef typename
- mpl::if_<
- boost::is_const<Sq>
- , typename Sq::t1_type const&
- , typename Sq::t1_type&
- >::type
- type;
-
- static type call(Sq& sq)
- {
- return sq.t1;
- }
- };
-
- template<typename Sq>
- struct at<Sq, mpl::int_<2> >
- {
- typedef typename
- mpl::if_<
- boost::is_const<Sq>
- , typename Sq::t2_type const&
- , typename Sq::t2_type&
- >::type
- type;
-
- static type call(Sq& sq)
- {
- return sq.t2;
- }
- };
-
- typedef T0 t0_type;
- typedef T1 t1_type;
- typedef T2 t2_type;
-
- T0 t0;
- T1 t1;
- T2 t2;
- };
-}
-
-int main()
-{
- typedef demo::triple<int, char, std::string> my_triple;
- my_triple t(101, 'a', "hello");
- BOOST_TEST(*fusion::begin(t) == 101);
- BOOST_TEST(*fusion::next(fusion::begin(t)) == 'a');
- BOOST_TEST(*fusion::prior(fusion::end(t)) == "hello");
- BOOST_TEST(fusion::distance(fusion::begin(t), fusion::end(t)) == 3);
- BOOST_TEST(fusion::size(t) == 3);
- BOOST_MPL_ASSERT((boost::is_same<int, fusion::result_of::value_at_c<my_triple, 0>::type>));
- BOOST_MPL_ASSERT((boost::is_same<char, fusion::result_of::value_at_c<my_triple, 1>::type>));
- BOOST_MPL_ASSERT((boost::is_same<std::string, fusion::result_of::value_at_c<my_triple, 2>::type>));
- BOOST_TEST(fusion::at_c<0>(t) == 101);
- BOOST_TEST(fusion::at_c<1>(t) == 'a');
- BOOST_TEST(fusion::at_c<2>(t) == "hello");
- return boost::report_errors();
-}

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/Jamfile
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/Jamfile 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,20 @@
+#==============================================================================
+# Copyright (c) 2003-2006 Joel de Guzman
+# Copyright (c) 2006 Dan Marsden
+# Copyright (c) 2010 Christopher Schmidt
+#
+# Use, modification and distribution is 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)
+#==============================================================================
+
+# bring in rules for testing
+import testing ;
+
+{
+ test-suite example_triple :
+
+ [ run triple.cpp : : : : ]
+ ;
+}
+

Added: sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/triple.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/triple.cpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -0,0 +1,343 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+ Copyright (c) 2010 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+/*=============================================================================
+ An implementation of a std::pair like triple<T0, T1, T2>
+ We use fusion::sequence_facade and fusion::iterator_facade
+ to make our triple a fully conforming Boost.Fusion random
+ traversal sequence.
+==============================================================================*/
+
+#include <boost/config.hpp>
+#include <boost/detail/lightweight_test.hpp>
+
+#include <boost/fusion/sequence.hpp>
+#include <boost/fusion/iterator.hpp>
+#include <boost/fusion/support.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <string>
+
+namespace mpl = boost::mpl;
+namespace fusion = boost::fusion;
+
+namespace demo
+{
+ template<typename SeqRef, int N>
+ struct triple_iterator
+ : fusion::iterator_facade<
+ triple_iterator<SeqRef, N>
+ , fusion::random_access_traversal_tag
+ >
+ {
+ typedef mpl::int_<N> index;
+ typedef SeqRef seq_type;
+ //TODO
+ typedef typename
+ fusion::detail::remove_reference<SeqRef>::type
+ seq_nonref_type;
+
+ triple_iterator(SeqRef seq)
+ : seq(seq)
+ {}
+
+ SeqRef seq;
+
+ template<typename ItRef>
+ struct value_of;
+
+ template<typename ItRef>
+ struct value_of<ItRef&>
+ : value_of<ItRef>
+ {};
+
+#ifndef BOOST_NO_RVALUE_REFERENCES
+ template<typename ItRef>
+ struct value_of<ItRef&&>
+ : value_of<ItRef>
+ {};
+#endif
+
+ template<typename SeqRef_>
+ struct value_of<triple_iterator<SeqRef_, 0> >
+ {
+ typedef typename seq_nonref_type::t0_type type;
+ };
+
+ template<typename SeqRef_>
+ struct value_of<triple_iterator<SeqRef_, 1> >
+ {
+ typedef typename seq_nonref_type::t1_type type;
+ };
+
+ template<typename SeqRef_>
+ struct value_of<triple_iterator<SeqRef_, 2> >
+ {
+ typedef typename seq_nonref_type::t2_type type;
+ };
+
+ template<typename ItRef>
+ struct deref;
+
+ template<typename ItRef>
+ struct deref<ItRef const>
+ : deref<ItRef>
+ {};
+
+ template<typename ItRef>
+ struct deref<ItRef&>
+ : deref<ItRef>
+ {};
+
+#ifndef BOOST_NO_RVALUE_REFERENCES
+ template<typename ItRef>
+ struct deref<ItRef&&>
+ : deref<ItRef>
+ {};
+#endif
+
+ template<typename SeqRef_>
+ struct deref<triple_iterator<SeqRef_, 0> >
+ {
+ typedef typename
+ mpl::if_<
+ boost::is_const<seq_nonref_type>
+ , typename seq_nonref_type::t0_type const&
+ , typename seq_nonref_type::t0_type&
+ >::type
+ type;
+
+ static type
+ call(triple_iterator<SeqRef, 0> const& iter)
+ {
+ return iter.seq.t0;
+ }
+ };
+
+ template<typename SeqRef_>
+ struct deref<triple_iterator<SeqRef_, 1> >
+ {
+ typedef typename
+ mpl::if_<
+ boost::is_const<seq_nonref_type>
+ , typename seq_nonref_type::t1_type const&
+ , typename seq_nonref_type::t1_type&
+ >::type
+ type;
+
+ static type
+ call(triple_iterator<SeqRef, 1> const& iter)
+ {
+ return iter.seq.t1;
+ }
+ };
+
+ template<typename SeqRef_>
+ struct deref<triple_iterator<SeqRef_, 2> >
+ {
+ typedef typename
+ mpl::if_<
+ boost::is_const<seq_nonref_type>
+ , typename seq_nonref_type::t2_type const&
+ , typename seq_nonref_type::t2_type&
+ >::type
+ type;
+
+ static type
+ call(triple_iterator<SeqRef, 2> const& iter)
+ {
+ return iter.seq.t2;
+ }
+ };
+
+ template<typename ItRef1, typename ItRef2>
+ struct distance
+ : mpl::minus<
+ typename fusion::detail::remove_reference<ItRef2>::type::index
+ , typename fusion::detail::remove_reference<ItRef1>::type::index
+ >
+ {};
+
+ template<typename ItRef, typename M>
+ struct advance
+ {
+ typedef
+ triple_iterator<
+ seq_type,
+ N + M::value
+ >
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return type(it.seq);
+ }
+ };
+
+ template<typename ItRef>
+ struct next
+ : advance<ItRef, mpl::int_<1> >
+ {};
+
+ template<typename ItRef>
+ struct prior
+ : advance<ItRef, mpl::int_<-1> >
+ {};
+ };
+
+ template<typename T0, typename T1, typename T2>
+ struct triple
+ : fusion::sequence_facade<
+ triple<T0, T1, T2>
+ , fusion::random_access_traversal_tag
+ >
+ {
+ typedef T0 t0_type;
+ typedef T1 t1_type;
+ typedef T2 t2_type;
+
+ triple(T0 const& t0, T1 const& t1, T2 const& t2)
+ : t0(t0), t1(t1), t2(t2)
+ {}
+
+ template<typename SeqRef>
+ struct begin
+ {
+ typedef demo::triple_iterator<SeqRef, 0> type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq);
+ }
+ };
+
+ template<typename SeqRef>
+ struct end
+ {
+ typedef demo::triple_iterator<SeqRef, 3> type;
+
+ static type call(SeqRef seq)
+ {
+ return type(seq);
+ }
+ };
+
+ template<typename SeqRef>
+ struct size
+ : mpl::int_<3>
+ {};
+
+ template<typename SeqRef, typename N>
+ struct value_at
+ : value_at<SeqRef, mpl::int_<N::value> >
+ {};
+
+ template<typename SeqRef>
+ struct value_at<SeqRef, mpl::int_<0> >
+ {
+ typedef T0 type;
+ };
+
+ template<typename SeqRef>
+ struct value_at<SeqRef, mpl::int_<1> >
+ {
+ typedef T1 type;
+ };
+
+ template<typename SeqRef>
+ struct value_at<SeqRef, mpl::int_<2> >
+ {
+ typedef T2 type;
+ };
+
+ template<typename SeqRef, typename N>
+ struct at
+ : at<SeqRef, mpl::int_<N::value> >
+ {};
+
+ template<typename SeqRef>
+ struct at<SeqRef, mpl::int_<0> >
+ {
+ typedef typename fusion::detail::remove_reference<SeqRef>::type seq;
+
+ typedef typename
+ mpl::if_<boost::is_const<seq>, T0 const&, T0&>::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return seq.t0;
+ }
+ };
+
+ template<typename SeqRef>
+ struct at<SeqRef, mpl::int_<1> >
+ {
+ typedef typename fusion::detail::remove_reference<SeqRef>::type seq;
+
+ typedef typename
+ mpl::if_<boost::is_const<seq>, T1 const&, T1&>::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return seq.t1;
+ }
+ };
+
+ template<typename SeqRef>
+ struct at<SeqRef, mpl::int_<2> >
+ {
+ typedef typename fusion::detail::remove_reference<SeqRef>::type seq;
+
+ typedef typename
+ mpl::if_<boost::is_const<seq>, T2 const&, T2&>::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return seq.t2;
+ }
+ };
+
+ T0 t0;
+ T1 t1;
+ T2 t2;
+ };
+}
+
+int main()
+{
+ typedef demo::triple<int, char, std::string> my_triple;
+ my_triple t(101, 'a', "hello");
+
+ BOOST_TEST(*fusion::begin(t) == 101);
+ BOOST_TEST(*fusion::next(fusion::begin(t)) == 'a');
+ BOOST_TEST(*fusion::prior(fusion::end(t)) == "hello");
+ BOOST_TEST(fusion::distance(fusion::begin(t), fusion::end(t)) == 3);
+ BOOST_TEST(fusion::size(t) == 3);
+
+ BOOST_MPL_ASSERT((boost::is_same<int, fusion::result_of::value_at_c<my_triple, 0>::type>));
+ BOOST_MPL_ASSERT((boost::is_same<char, fusion::result_of::value_at_c<my_triple, 1>::type>));
+ BOOST_MPL_ASSERT((boost::is_same<std::string, fusion::result_of::value_at_c<my_triple, 2>::type>));
+
+ BOOST_TEST(fusion::at_c<0>(t) == 101);
+ BOOST_TEST(fusion::at_c<1>(t) == 'a');
+ BOOST_TEST(fusion::at_c<2>(t) == "hello");
+
+ return boost::report_errors();
+}

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 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -1,10 +1,11 @@
-##==============================================================================
+##=============================================================================
 # Copyright (c) 2003-2006 Joel de Guzman
 #
 # Use, modification and distribution is 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)
 #==============================================================================
+
 # bring in rules for testing
 import testing ;
 

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 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -39,4 +39,4 @@
   }
 }
 
-#include "./driver.hpp"
+#include "driver.hpp"

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 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -52,4 +52,4 @@
   }
 }
 
-#include "./driver.hpp"
+#include "driver.hpp"

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 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -25,4 +25,4 @@
   }
 }
 
-#include "./driver.hpp"
+#include "driver.hpp"

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 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -56,4 +56,4 @@
   }
 }
 
-#include "./driver.hpp"
+#include "driver.hpp"

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 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -35,4 +35,4 @@
   }
 }
 
-#include "./driver.hpp"
+#include "driver.hpp"

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 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -9,7 +9,7 @@
 #define FUSION_SEQUENCE list
 #define FUSION_NO_PRIOR
 #define FUSION_TRAVERSAL_TAG forward_traversal_tag
-#include "./iterator.hpp"
+#include "iterator.hpp"
 
 int
 main()

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_iterator.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_iterator.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_iterator.cpp 2010-03-06 15:28:04 EST (Sat, 06 Mar 2010)
@@ -8,7 +8,7 @@
 
 #define FUSION_SEQUENCE vector
 #define FUSION_TRAVERSAL_TAG random_access_traversal_tag
-#include "./iterator.hpp"
+#include "iterator.hpp"
 
 int
 main()


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