|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r66413 - in sandbox/SOC/2009/fusion: boost/fusion/adapted/detail/array boost/fusion/adapted/detail/struct boost/fusion/adapted/detail/tuple boost/fusion/algorithm/transformation/detail boost/fusion/container/ext_ boost/fusion/container/list boost/fusion/container/map boost/fusion/container/set boost/fusion/container/vector/detail/pp boost/fusion/container/vector/detail/variadic_templates boost/fusion/sequence boost/fusion/sequence/intrinsic boost/fusion/support boost/fusion/support/internal boost/fusion/view/ext_ boost/fusion/view/filter_view boost/fusion/view/iterator_range boost/fusion/view/joint_view boost/fusion/view/nview boost/fusion/view/repetitive_view boost/fusion/view/reverse_view boost/fusion/view/single_view boost/fusion/view/transform_view boost/fusion/view/transform_view/detail boost/fusion/view/zip_view libs/fusion/example/extension/struct/detail
From: mr.chr.schmidt_at_[hidden]
Date: 2010-11-06 11:53:56
Author: cschmidt
Date: 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
New Revision: 66413
URL: http://svn.boost.org/trac/boost/changeset/66413
Log:
removed fusion::sequence_base
Added:
sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/base.hpp (contents, props changed)
sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_fwd.hpp (contents, props changed)
Removed:
sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view_fwd.hpp
Text files modified:
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp | 2 +
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/tuple/tag_of.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp | 6 ++--
sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp | 7 ++++-
sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp | 7 +----
sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp | 3 ++
sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp | 4 +-
sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp | 6 ++--
sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.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 | 8 +++---
sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp | 2 -
sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp | 19 ++++++++++++++-
sandbox/SOC/2009/fusion/boost/fusion/support/internal/sequence_base.hpp | 48 +++++++++++++++++++++++++--------------
sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp | 7 ++---
sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp | 14 ++++-------
sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator.hpp | 13 ++++++++++
sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator_range.hpp | 16 ++++++++++---
sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp | 6 ++--
sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp | 4 +-
sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp | 4 +-
sandbox/SOC/2009/fusion/boost/fusion/view/nview/nview.hpp | 4 +-
sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp | 4 +-
sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp | 4 +-
sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp | 4 +-
sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp | 10 +++-----
sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp | 5 +--
sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp | 5 ++++
29 files changed, 134 insertions(+), 94 deletions(-)
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -20,6 +20,7 @@
{
namespace fusion
{
+ struct fusion_sequence_tag;
struct array_tag;
struct array_iterator_tag;
struct random_access_traversal_tag;
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -162,6 +162,8 @@
{ \
namespace fusion \
{ \
+ struct fusion_sequence_tag; \
+ \
namespace traits \
{ \
BOOST_FUSION_ALL_CV_REF_NON_REF_COMBINATIONS( \
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/tuple/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/tuple/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/tuple/tag_of.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -20,6 +20,7 @@
{
namespace fusion
{
+ struct fusion_sequence_tag;
struct std_tuple_tag;
struct std_tuple_iterator_tag;
struct boost_tuple_tag;
Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -1,5 +1,5 @@
/*==============================================================================
- 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)
@@ -19,6 +19,8 @@
#include <boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp>
#include <boost/fusion/algorithm/transformation/detail/filter_key_view/value_at_key_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(detail::filter_key_view_tag, 1)
+
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
@@ -27,7 +29,6 @@
{
template<typename Seq, typename Pred>
struct filter_key_view
- : detail::sequence_base<filter_key_view<Seq, Pred> >
{
typedef BOOST_FUSION_DETAIL_VIEW_STROAGE(Seq) storage_type;
typedef typename storage_type::type seq_type;
@@ -36,7 +37,6 @@
typedef associative_tag category;
typedef filter_key_view_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
#define BOOST_FUSION_FILTER_KEY_VIEW_CTOR(MODIFIER,_)\
template<typename OtherSeq>\
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -47,10 +47,14 @@
template<typename T>
struct reference<T &, true> : reference<T, false> {};
}
+}
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(tree_tag, 0)
+
+namespace boost { namespace fusion
+{
template<typename Data, typename Left = nil, typename Right = nil>
struct tree
- : detail::sequence_base<tree<Data, Left, Right> >
{
typedef Data data_type;
typedef Left left_type;
@@ -68,7 +72,6 @@
typedef tree_tag fusion_tag;
typedef forward_traversal_tag category;
- typedef mpl::false_ is_view;
tree()
{}
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-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -19,7 +19,6 @@
#include <boost/fusion/support/internal/is_explicitly_convertible.hpp>
#include <boost/fusion/support/internal/assign_tags.hpp>
#include <boost/fusion/support/internal/sequence_assign.hpp>
-
#include <boost/mpl/int.hpp>
#include <boost/mpl/bool.hpp>
#include <boost/mpl/or.hpp>
@@ -39,6 +38,8 @@
#include <boost/fusion/container/list/detail/value_of_impl.hpp>
#include <boost/fusion/container/list/detail/equal_to_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(cons_tag, 0)
+
namespace boost { namespace fusion
{
struct void_;
@@ -51,7 +52,6 @@
#endif
struct nil
- : detail::sequence_base<nil>
{
typedef void_ car_type;
typedef void_ cdr_type;
@@ -59,7 +59,6 @@
typedef mpl::int_<0> size;
typedef cons_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
typedef forward_traversal_tag category;
nil()
@@ -107,7 +106,6 @@
template<typename Car, typename Cdr = nil>
struct cons
- : detail::sequence_base<cons<Car, Cdr> >
{
typedef Car car_type;
typedef Cdr cdr_type;
@@ -115,7 +113,6 @@
typedef mpl::int_<Cdr::size::value+1> size;
typedef cons_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
typedef forward_traversal_tag category;
cons()
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -15,8 +15,11 @@
#include <boost/fusion/container/list/detail/cons_gen.hpp>
#include <boost/fusion/container/generation/vector_tie.hpp>
#include <boost/fusion/container/detail/forward_interface.hpp>
+#include <boost/fusion/support/internal/sequence_base.hpp>
#include <boost/fusion/support/internal/template.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(list_tag, 0)
+
namespace boost { namespace fusion
{
#ifdef BOOST_MSVC
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -25,6 +25,8 @@
#include <boost/fusion/container/map/detail/key_of_impl.hpp>
#include <boost/fusion/container/detail/forward_interface.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(map_tag, 0)
+
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
@@ -37,12 +39,10 @@
VARIADIC_TEMPLATE(FUSION_MAX_MAP_SIZE)
struct map
- : detail::sequence_base<map<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_MAP_SIZE)> >
{
typedef map_category category;
typedef map_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
typedef
vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_MAP_SIZE)>
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -24,6 +24,8 @@
#include <boost/fusion/container/set/detail/key_of_impl.hpp>
#include <boost/fusion/container/detail/forward_interface.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(set_tag, 0)
+
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
@@ -36,12 +38,10 @@
VARIADIC_TEMPLATE(FUSION_MAX_SET_SIZE)
struct set
- : detail::sequence_base<set<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_SET_SIZE)> >
{
typedef set_category category;
typedef set_tag fusion_tag;
- typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
+ typedef fusion_sequence_tag tag;
typedef
vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_SET_SIZE)>
Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/base.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/base.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -0,0 +1,15 @@
+/*==============================================================================
+ 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 BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_BASE_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_BASE_HPP
+
+#include <boost/fusion/support/internal/sequence_base.hpp>
+
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(vector_tag, 0)
+
+#endif
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -9,17 +9,12 @@
#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_HPP
#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_HPP
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/container/vector/detail/pp/vector_n_chooser.hpp>
-#include <boost/mpl/at.hpp>
-#include <boost/mpl/bool.hpp>
-
+#include <boost/fusion/support/internal/sequence_base.hpp>
#include <boost/fusion/container/detail/forward_interface.hpp>
namespace boost { namespace fusion
{
- struct fusion_sequence_tag;
-
#ifdef BOOST_MSVC
# pragma warning(push)
//'class' : multiple copy constructors specified
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-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -16,7 +16,6 @@
# include <boost/fusion/iterator/deref.hpp>
# include <boost/fusion/iterator/next.hpp>
# include <boost/fusion/iterator/advance_c.hpp>
-# include <boost/fusion/support/internal/sequence_base.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>
@@ -37,6 +36,7 @@
# include <boost/type_traits/add_const.hpp>
# include <boost/utility/enable_if.hpp>
+# include <boost/fusion/container/vector/detail/pp/base.hpp>
# include <boost/fusion/container/vector/detail/at_impl.hpp>
# include <boost/fusion/container/vector/detail/value_at_impl.hpp>
# include <boost/fusion/container/vector/detail/begin_impl.hpp>
@@ -72,7 +72,6 @@
template<>
struct vector0<void_>
- : detail::sequence_base<vector0<void_> >
# else
# ifndef BOOST_FUSION_PREFER_MPL
template<typename Vector>
@@ -87,9 +86,6 @@
VARIADIC_TEMPLATE(BOOST_FUSION_N)
struct BOOST_PP_CAT(vector, BOOST_FUSION_N)
- : detail::sequence_base<BOOST_PP_CAT(vector, BOOST_FUSION_N)<
- EXPAND_TEMPLATE_ARGUMENTS(BOOST_FUSION_N)>
- >
# endif
{
# ifdef BOOST_FUSION_PREFER_MPL
@@ -101,7 +97,6 @@
# endif
typedef vector_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
typedef random_access_traversal_tag category;
typedef mpl::int_<BOOST_FUSION_N> size;
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-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -40,6 +40,8 @@
#include <utility>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(vector_tag, 0)
+
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
@@ -416,14 +418,13 @@
template<typename... Elements>
struct vector
- : detail::sequence_base<vector<Elements...> >
#ifdef BOOST_FUSION_TAGGED_VECTOR
- , detail::vector_impl<
+ : detail::vector_impl<
typename detail::make_package<sizeof...(Elements)>::type
, Elements...
>
#else
- , detail::vector_impl<0,Elements...>
+ : detail::vector_impl<0,Elements...>
#endif
{
#ifdef BOOST_FUSION_TAGGED_VECTOR
@@ -445,7 +446,6 @@
typedef vector_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::false_ is_view;
typedef random_access_traversal_tag category;
typedef mpl::int_<sizeof...(Elements)> size;
Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -16,8 +16,6 @@
namespace boost { namespace fusion
{
- struct fusion_sequence_tag;
-
namespace result_of
{
template<typename Seq>
Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -9,7 +9,6 @@
#define BOOST_FUSION_SEQUENCE_SEQUENCE_FACADE_HPP
#include <boost/fusion/support/internal/base.hpp>
-#include <boost/fusion/support/internal/sequence_base.hpp>
#include <boost/fusion/support/internal/facade_generation.hpp>
#include <boost/mpl/bool.hpp>
@@ -30,13 +29,29 @@
namespace boost { namespace fusion
{
+ struct fusion_sequence_tag;
+
+ namespace extension
+ {
+ template<typename>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<sequence_facade_tag>
+ {
+ template<typename>
+ struct apply
+ : mpl::true_
+ {};
+ };
+ }
+
template<
typename Derived
, typename Category
, typename IsView = mpl::false_
>
struct sequence_facade
- : detail::sequence_base<Derived>
{
typedef fusion_sequence_tag tag;
typedef sequence_facade_tag fusion_tag;
Modified: sandbox/SOC/2009/fusion/boost/fusion/support/internal/sequence_base.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/internal/sequence_base.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/sequence_base.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -8,24 +8,38 @@
#ifndef BOOST_FUSION_SUPPORT_INTERNAL_SEQUENCE_BASE_HPP
#define BOOST_FUSION_SUPPORT_INTERNAL_SEQUENCE_BASE_HPP
-namespace boost { namespace fusion
-{
- struct fusion_sequence_tag;
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/mpl/bool.hpp>
+
+#define BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(TAG, IS_VIEW) \
+namespace boost { namespace fusion { namespace extension \
+{ \
+ template<> \
+ struct is_sequence_impl<TAG> \
+ { \
+ template<typename> \
+ struct apply \
+ : mpl::true_ \
+ {}; \
+ }; \
+ \
+ template<> \
+ struct is_view_impl<TAG> \
+ { \
+ template<typename> \
+ struct apply \
+ : BOOST_PP_IIF(IS_VIEW, mpl::true_, mpl::false_) \
+ {}; \
+ }; \
+}}}
- namespace detail
- {
- struct from_sequence_convertible_type
- {};
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename>
+ struct is_sequence_impl;
- template<typename>
- struct sequence_base
- {
- operator from_sequence_convertible_type()const
- {
- return from_sequence_convertible_type();
- }
- };
- }
-}}
+ template<typename>
+ struct is_view_impl;
+}}}
#endif
Modified: sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -11,8 +11,7 @@
#include <boost/fusion/support/internal/base.hpp>
#include <boost/fusion/support/tag_of.hpp>
-#include <boost/fusion/support/internal/sequence_base.hpp>
-#include <boost/type_traits/is_convertible.hpp>
+#include <boost/mpl/bool.hpp>
namespace boost { namespace fusion
{
@@ -21,9 +20,9 @@
template<typename>
struct is_sequence_impl
{
- template<typename Seq>
+ template<typename>
struct apply
- : is_convertible<Seq, detail::from_sequence_convertible_type>
+ : mpl::false_
{};
};
}
Modified: sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -1,6 +1,7 @@
/*==============================================================================
Copyright (c) 2001-2006 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
+ 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)
@@ -13,16 +14,11 @@
namespace boost
{
- namespace fusion
+ namespace fusion { namespace traits
{
- struct fusion_sequence_tag;
-
- namespace traits
- {
- template<typename Seq, typename Enable=void>
- struct tag_of;
- }
- }
+ template<typename Seq, typename Enable=void>
+ struct tag_of;
+ }}
namespace mpl
{
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -43,7 +43,6 @@
template<typename Sequence, typename Iterator, bool IsSegmented>
struct segmented_range
- : detail::sequence_base<segmented_range<Sequence, Iterator, IsSegmented> >
{
typedef mpl::bool_<IsSegmented> is_segmented;
// If this is a range of segments, skip over the empty ones
@@ -89,6 +88,18 @@
namespace extension
{
+ template<typename>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<segmented_range_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ : mpl::true_
+ {};
+ };
+
template<>
struct is_segmented_impl<segmented_range_tag>
{
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator_range.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator_range.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator_range.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -69,7 +69,6 @@
// right or the left of a segmented iterator.
template<typename Tag, typename Cons1, typename Cons2 = void_>
struct segmented_view
- : detail::sequence_base<segmented_view<Tag, Cons1, Cons2> >
{
typedef segmented_view_tag<Tag> fusion_tag;
typedef fusion_sequence_tag tag;
@@ -88,7 +87,6 @@
// two segmented iterators
template<typename Cons1, typename Cons2>
struct segmented_view<center_view, Cons1, Cons2>
- : detail::sequence_base<segmented_view<center_view, Cons1, Cons2> >
{
typedef segmented_view_tag<center_view> fusion_tag;
typedef fusion_sequence_tag tag;
@@ -183,6 +181,18 @@
namespace extension
{
+ template<typename>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<detail::segmented_view_tag<Tag> >
+ {
+ template<typename>
+ struct apply
+ : mpl::true_
+ {};
+ };
+
////////////////////////////////////////////////////////////////////////////
template<typename Tag>
struct is_segmented_impl<detail::segmented_view_tag<Tag> >
@@ -364,7 +374,6 @@
template<typename First, typename Last>
struct iterator_range<segmented_iterator<First>, segmented_iterator<Last> >
- : detail::sequence_base<iterator_range<segmented_iterator<First>, segmented_iterator<Last> > >
{
typedef segmented_iterator<First> begin_type;
typedef segmented_iterator<Last> end_type;
@@ -374,7 +383,6 @@
typedef fusion_sequence_tag tag;
typedef typename traits::category_of<begin_type>::type category;
typedef typename result_of::distance<begin_type, end_type>::type size;
- typedef mpl::true_ is_view;
iterator_range(segmented_iterator<First> const& first_, segmented_iterator<Last> const& last_)
: first(first_)
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -33,6 +33,8 @@
#include <boost/fusion/view/filter_view/detail/key_of_impl.hpp>
#include <boost/fusion/view/filter_view/detail/value_of_data_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(filter_view_tag, 1)
+
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
@@ -43,7 +45,6 @@
, typename PredIsMetafunction=mpl::true_
>
struct filter_view
- : detail::sequence_base<filter_view<Seq, Pred, PredIsMetafunction> >
{
BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>))
@@ -61,8 +62,7 @@
>::type
category;
typedef filter_view_tag fusion_tag;
- typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
+ typedef fusion_sequence_tag tag;
#define BOOST_FUSION_FILTER_VIEW_CTOR(MODIFIER,_)\
template<typename OtherSeq>\
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -24,6 +24,8 @@
#include <boost/fusion/view/iterator_range/detail/at_impl.hpp>
#include <boost/fusion/view/iterator_range/detail/value_at_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(iterator_range_tag, 1)
+
namespace boost { namespace fusion
{
struct iterator_range_tag;
@@ -31,7 +33,6 @@
template<typename Begin, typename End>
struct iterator_range
- : detail::sequence_base<iterator_range<Begin, End> >
{
BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Begin>))
BOOST_FUSION_MPL_ASSERT((traits::is_forward<Begin>))
@@ -45,7 +46,6 @@
typedef typename result_of::distance<begin_type, end_type>::type size;
typedef iterator_range_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
template<typename OtherRange>
iterator_range(BOOST_FUSION_R_ELSE_CLREF(OtherRange) range)
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -34,6 +34,8 @@
#include <boost/fusion/view/joint_view/detail/key_of_impl.hpp>
#include <boost/fusion/view/joint_view/detail/value_of_data_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(joint_view_tag, 1)
+
namespace boost { namespace fusion
{
struct forward_traversal_tag;
@@ -41,7 +43,6 @@
template<typename Seq1, typename Seq2>
struct joint_view
- : detail::sequence_base<joint_view<Seq1, Seq2> >
{
BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>))
BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>))
@@ -65,7 +66,6 @@
category;
typedef joint_view_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
typedef typename
mpl::plus<
result_of::size<seq1_type>
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/nview.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/nview.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/nview.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -46,6 +46,8 @@
#include <boost/fusion/view/nview/detail/value_at_impl.hpp>
#include <boost/fusion/view/nview/detail/value_of_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(nview_tag, 1)
+
namespace boost { namespace fusion
{
struct nview_tag;
@@ -54,7 +56,6 @@
template<typename Seq, typename Indices>
struct nview
- : detail::sequence_base<nview<Seq, Indices> >
{
BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
BOOST_FUSION_MPL_ASSERT((traits::is_random_access<Seq>))
@@ -66,7 +67,6 @@
typedef nview_tag fusion_tag;
typedef fusion_sequence_tag tag;
typedef random_access_traversal_tag category;
- typedef mpl::true_ is_view;
typedef typename mpl::size<Indices>::type size;
#define BOOST_FUSION_NVIEW_CTOR(MODIFIER,_)\
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -36,6 +36,8 @@
#include <boost/fusion/view/repetitive_view/detail/key_of_impl.hpp>
#include <boost/fusion/view/repetitive_view/detail/value_of_data_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(repetitive_view_tag, 1)
+
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
@@ -45,7 +47,6 @@
, typename Size=mpl::int_<integer_traits<int>::const_max-1>
>
struct repetitive_view
- : detail::sequence_base<repetitive_view<Seq> >
{
BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>))
@@ -62,7 +63,6 @@
typedef Size size;
typedef repetitive_view_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
#define BOOST_FUSION_REPETITIVE_VIEW_CTOR(MODIFIER,_)\
template<typename OtherSeq>\
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -36,13 +36,14 @@
#include <boost/fusion/view/reverse_view/detail/value_at_impl.hpp>
#include <boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(reverse_view_tag, 1)
+
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
template<typename Seq>
struct reverse_view
- : detail::sequence_base<reverse_view<Seq> >
{
BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
BOOST_FUSION_MPL_ASSERT((traits::is_bidirectional<Seq>))
@@ -54,7 +55,6 @@
typedef typename result_of::size<seq_type>::type size;
typedef reverse_view_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
#define BOOST_FUSION_REVERSE_VIEW_CTOR(MODIFIER,_)\
template<typename OtherSeq>\
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-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -40,6 +40,8 @@
#include <boost/fusion/view/single_view/detail/prior_impl.hpp>
#include <boost/fusion/view/single_view/detail/value_of_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(single_view_tag, 1)
+
namespace boost { namespace fusion
{
struct single_view_tag;
@@ -53,14 +55,12 @@
template<typename T>
struct single_view
- : detail::sequence_base<single_view<T> >
{
typedef T value_type;
typedef single_view_tag fusion_tag;
typedef fusion_sequence_tag tag;
typedef random_access_traversal_tag category;
- typedef mpl::true_ is_view;
typedef mpl::int_<1> size;
#define BOOST_FUSION_SINGLE_VIEW_CTOR(MODIFIER,_)\
Added: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_fwd.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -0,0 +1,28 @@
+/*==============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ 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_VIEW_TRANSFORM_VIEW_DETAIL_TRANSFORM_VIEW_FWD_HPP
+#define BOOST_FUSION_VIEW_TRANSFORM_VIEW_DETAIL_TRANSFORM_VIEW_FWD_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct transform_view_tag;
+ struct transform_view2_tag;
+
+ template<
+ typename Seq1
+ , typename Seq2
+ , typename F=mpl::false_
+ , typename IsAssociative=mpl::false_
+ >
+ struct transform_view;
+}}
+
+#endif
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -33,7 +33,7 @@
#endif
#include <boost/call_traits.hpp>
-#include <boost/fusion/view/transform_view/transform_view_fwd.hpp>
+#include <boost/fusion/view/transform_view/detail/transform_view_fwd.hpp>
#include <boost/fusion/view/transform_view/detail/at_impl.hpp>
#include <boost/fusion/view/transform_view/detail/value_at_impl.hpp>
#include <boost/fusion/view/transform_view/detail/transform_view_iterator.hpp>
@@ -50,6 +50,9 @@
#include <boost/fusion/view/transform_view/detail/distance_impl.hpp>
#include <boost/fusion/view/transform_view/detail/equal_to_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(transform_view_tag, 1)
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(transform_view2_tag, 1)
+
namespace boost { namespace fusion
{
struct void_;
@@ -62,7 +65,6 @@
// Binary Version
template<typename Seq1, typename Seq2, typename F, typename IsAssociative>
struct transform_view
- : detail::sequence_base<transform_view<Seq1, Seq2, F,IsAssociative> >
{
BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>))
BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>))
@@ -88,8 +90,6 @@
strictest_traversal;
typedef transform_view2_tag fusion_tag;
- typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
typedef typename
mpl::eval_if_c<
is_associative::value
@@ -147,7 +147,6 @@
// Unary Version implementation
template<typename Seq, typename F, typename IsAssociative>
struct unary_transform_view
- : detail::sequence_base<unary_transform_view<Seq, F, void_> >
{
BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>))
BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>))
@@ -178,7 +177,6 @@
typedef typename result_of::size<seq_type>::type size;
typedef transform_view_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
template<typename OtherView>
unary_transform_view(BOOST_FUSION_R_ELSE_CLREF(OtherView) view)
Deleted: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view_fwd.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
+++ (empty file)
@@ -1,28 +0,0 @@
-/*==============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- 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_VIEW_TRANSFORM_VIEW_TRANSFORM_VIEW_FWD_HPP
-#define BOOST_FUSION_VIEW_TRANSFORM_VIEW_TRANSFORM_VIEW_FWD_HPP
-
-#include <boost/mpl/bool.hpp>
-
-namespace boost { namespace fusion
-{
- struct transform_view_tag;
- struct transform_view2_tag;
-
- template<
- typename Seq1
- , typename Seq2
- , typename F=mpl::false_
- , typename IsAssociative=mpl::false_
- >
- struct transform_view;
-}}
-
-#endif
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -45,6 +45,8 @@
#include <boost/fusion/view/zip_view/detail/value_of_impl.hpp>
#include <boost/fusion/view/zip_view/detail/equal_to_impl.hpp>
+BOOST_FUSION_DEFINE_IS_SEQUENCE_IS_VIEW_IMPL(zip_view_tag, 1)
+
namespace boost { namespace fusion
{
namespace detail
@@ -127,12 +129,10 @@
};
}
- struct zip_view_tag;
struct fusion_sequence_tag;
template<typename Seqs>
struct zip_view
- : detail::sequence_base<zip_view<Seqs> >
{
BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seqs>))
BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seqs>))
@@ -152,7 +152,6 @@
category;
typedef zip_view_tag fusion_tag;
typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
typedef typename
mpl::eval_if_c<
result_of::size<Seqs>::value ? true : false
Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/detail/tag_of.hpp 2010-11-06 11:53:38 EDT (Sat, 06 Nov 2010)
@@ -30,6 +30,11 @@
namespace boost
{
+ namespace fusion
+ {
+ struct fusion_sequence_tag;
+ }
+
namespace fusion { namespace traits
{
template<>
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