|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r64489 - in sandbox/SOC/2009/fusion: boost/fusion/adapted/detail/class boost/fusion/adapted/detail/struct boost/fusion/algorithm/transformation/detail/filter_key_view boost/fusion/container/list/detail boost/fusion/container/vector/detail boost/fusion/functional/invocation/detail boost/fusion/support/internal boost/fusion/view/detail boost/fusion/view/filter_view/detail boost/fusion/view/joint_view boost/fusion/view/joint_view/detail boost/fusion/view/nview/detail boost/fusion/view/repetitive_view boost/fusion/view/repetitive_view/detail boost/fusion/view/reverse_view/detail boost/fusion/view/single_view/detail boost/fusion/view/transform_view/detail libs/fusion/test/suite1/algorithm libs/fusion/test/suite1/sequence
From: mr.chr.schmidt_at_[hidden]
Date: 2010-07-30 17:48:18
Author: cschmidt
Date: 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
New Revision: 64489
URL: http://svn.boost.org/trac/boost/changeset/64489
Log:
updates
Text files modified:
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/adapt_base.hpp | 7 +
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/extension.hpp | 6 -
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp | 5 +
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp | 10 ++
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp | 5 +
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp | 32 +++++++
sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons_iterator.hpp | 44 +----------
sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp | 4
sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp | 30 +++++++
sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp | 5
sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp | 5
sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp | 4
sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp | 3
sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp | 146 ++++++++++++++++++++-------------------
sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp | 7 -
sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp | 10 +-
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp | 7 +
sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp | 11 +-
sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp | 10 +-
sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp | 15 ++-
sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp | 10 +-
sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/at_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp | 5 +
sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp | 5 +
sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/prior_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_iterator.hpp | 35 +++++----
sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp | 6
sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp | 6
sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp | 9 +-
sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp | 8 +-
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/all.cpp | 6
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/any.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count_if.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/none.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/replace_if.cpp | 2
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class_named.cpp | 6
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct_named.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_class.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_struct.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class.cpp | 48 ++++++++++++
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class_named.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct.cpp | 32 ++++++++
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct_named.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_class.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_struct.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/comparison.hpp | 2
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_struct.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_tpl_struct.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_struct.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_tpl_struct.cpp | 4
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/tr1_tuple_auto_conv.cpp | 2
sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/vector_n.cpp | 9 +-
69 files changed, 389 insertions(+), 267 deletions(-)
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/adapt_base.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/adapt_base.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/adapt_base.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -37,7 +37,7 @@
template< \
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
> \
- struct class_member_proxy< \
+ struct access::class_member_proxy< \
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
, I \
> \
@@ -75,7 +75,10 @@
template< \
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
> \
- struct struct_member<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ), I> \
+ struct access::struct_member< \
+ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
+ , I \
+ > \
{ \
typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) lvalue; \
\
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/extension.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/extension.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/extension.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -19,12 +19,6 @@
: identity<T>
{};
}
-
- namespace extension
- {
- template<typename T, int N>
- struct class_member_proxy;
- }
}}
#endif
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-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -89,7 +89,10 @@
template< \
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
> \
- struct struct_member<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ), I> \
+ struct access::struct_member< \
+ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
+ , I \
+ > \
{ \
typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \
\
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -22,7 +22,7 @@
{
template<typename Seq, typename N>
struct apply
- : extension::struct_member<
+ : extension::access::struct_member<
typename detail::identity<Seq>::type
, N::value
>::template apply<Seq>
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -21,7 +21,7 @@
{
typedef typename detail::remove_reference<It>::type it;
typedef typename
- extension::struct_member<
+ extension::access::struct_member<
typename detail::identity<typename it::seq_type>::type
, it::index::value
>::template apply<typename it::seq_type>
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -27,8 +27,14 @@
{
struct no_such_member;
- template<typename Seq, int N>
- struct struct_member;
+ struct access
+ {
+ template<typename Seq, int N>
+ struct struct_member;
+
+ template<typename T, int N>
+ struct class_member_proxy;
+ };
template<typename Seq, int N>
struct struct_member_name;
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -20,7 +20,10 @@
{
template<typename Seq, typename N>
struct apply
- : struct_member<typename detail::identity<Seq>::type, N::value>
+ : access::struct_member<
+ typename detail::identity<Seq>::type
+ , N::value
+ >
{};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -22,7 +22,7 @@
typedef typename detail::remove_reference<It>::type it;
typedef typename
- extension::struct_member<
+ extension::access::struct_member<
typename detail::identity<typename it::seq_type>::type
, it::index::value
>::type
Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -34,7 +34,7 @@
static type
call(Seq seq)
{
- return at_key<Key>(seq.seq.get());
+ return at_key<Key>(seq.seq.template get<Seq>());
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,7 @@
/*==============================================================================
Copyright (c) 2005 Joel de Guzman
Copyright (c) 2005 Eric Niebler
+ 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)
@@ -9,6 +10,11 @@
#ifndef BOOST_FUSION_CONTAINER_LIST_DETAIL_BEGIN_IMPL_HPP
#define BOOST_FUSION_CONTAINER_LIST_DETAIL_BEGIN_IMPL_HPP
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/utility/addressof.hpp>
+
namespace boost { namespace fusion { namespace extension
{
template<typename>
@@ -20,12 +26,32 @@
template<typename Seq>
struct apply
{
- typedef cons_iterator<typename detail::add_lref<Seq>::type> type;
+ typedef typename result_of::empty<Seq>::type empty;
+
+ typedef typename
+ mpl::if_<
+ empty
+ , nil_iterator
+ , cons_iterator<typename detail::add_lref<Seq>::type>
+ >::type
+ type;
+
+ static type
+ call(Seq seq, mpl::false_)
+ {
+ return type(boost::addressof(seq), 0);
+ }
+
+ static type
+ call(Seq, mpl::true_)
+ {
+ return type();
+ }
static type
- call(Seq t)
+ call(Seq seq)
{
- return type(static_cast<Seq>(t),0);
+ return call(static_cast<Seq>(seq), empty());
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons_iterator.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,7 +1,7 @@
/*==============================================================================
Copyright (c) 2005 Joel de Guzman
Copyright (c) 2005 Eric Niebler
- 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)
@@ -25,14 +25,15 @@
typedef cons_iterator_tag fusion_tag;
typedef forward_traversal_tag category;
typedef ConsRef cons_type;
+ typedef typename detail::remove_reference<ConsRef>::type* cons_ptr_type;
template<typename OtherConsRef>
cons_iterator(cons_iterator<OtherConsRef> const& it)
: cons(it.cons)
{}
- cons_iterator(cons_type cons, int)
- : cons(&cons)
+ cons_iterator(cons_ptr_type cons, int)
+ : cons(cons)
{}
template<typename OtherConsRef>
@@ -43,7 +44,7 @@
return *this;
}
- typename detail::remove_reference<cons_type>::type* cons;
+ cons_ptr_type cons;
};
struct nil_iterator
@@ -52,42 +53,7 @@
typedef forward_traversal_tag category;
typedef cons_iterator_tag fusion_tag;
typedef nil cons_type;
-
- nil_iterator()
- {}
-
- nil_iterator(nil const&,int)
- {}
};
-
-#define BOOST_FUSION_NIL_ITERATOR(MODIFIER,_)\
- template<>\
- struct cons_iterator<nil MODIFIER>\
- : nil_iterator\
- {\
- cons_iterator()\
- {}\
- \
- explicit\
- cons_iterator(nil MODIFIER, int)\
- {}\
- };\
- \
- template<>\
- struct cons_iterator<list<> MODIFIER>\
- : nil_iterator\
- {\
- cons_iterator()\
- {}\
- \
- explicit\
- cons_iterator(nil MODIFIER, int)\
- {}\
- };
-
- BOOST_FUSION_ALL_CV_REF_COMBINATIONS(BOOST_FUSION_NIL_ITERATOR,_)
-
-#undef BOOST_FUSION_NIL_ITERATOR
}}
#endif
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -20,9 +20,7 @@
template<typename Seq>
struct apply
{
- typedef
- cons_iterator<typename detail::forward_as<Seq,nil>::type>
- type;
+ typedef nil_iterator type;
static type
call(Seq)
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,7 +1,7 @@
/*==============================================================================
Copyright (c) 2005 Joel de Guzman
Copyright (c) 2005 Eric Niebler
- 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,6 +10,11 @@
#ifndef BOOST_FUSION_CONTAINER_LIST_DETAIL_NEXT_IMPL_HPP
#define BOOST_FUSION_CONTAINER_LIST_DETAIL_NEXT_IMPL_HPP
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/utility/addressof.hpp>
+
namespace boost { namespace fusion { namespace extension
{
template<typename>
@@ -32,13 +37,32 @@
>::type::cdr_type
>::type
cdr_type;
+ typedef typename result_of::empty<cdr_type>::type empty;
+
+ typedef typename
+ mpl::if_<
+ empty
+ , nil_iterator
+ , cons_iterator<cdr_type>
+ >::type
+ type;
- typedef cons_iterator<cdr_type> type;
+ static type
+ call(It, mpl::true_)
+ {
+ return type();
+ }
+
+ static type
+ call(It it, mpl::false_)
+ {
+ return type(boost::addressof(it.cons->cdr),0);
+ }
static type
call(It it)
{
- return type(static_cast<cdr_type>(it.cons->cdr),0);
+ return call(it, empty());
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
/*==============================================================================
Copyright (c) 2001-2006 Joel de Guzman
- 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,6 +10,7 @@
#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_BEGIN_IMPL_HPP
#include <boost/fusion/iterator/basic_iterator.hpp>
+#include <boost/utility/addressof.hpp>
namespace boost { namespace fusion { namespace extension
{
@@ -34,7 +35,7 @@
static type
call(Seq seq)
{
- return type(&seq);
+ return type(boost::addressof(seq));
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
/*==============================================================================
Copyright (c) 2001-2006 Joel de Guzman
- 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,6 +10,7 @@
#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_END_IMPL_HPP
#include <boost/fusion/iterator/basic_iterator.hpp>
+#include <boost/utility/addressof.hpp>
namespace boost { namespace fusion { namespace extension
{
@@ -34,7 +35,7 @@
static type
call(Seq seq)
{
- return type(&seq);
+ return type(boost::addressof(seq));
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -69,8 +69,8 @@
>::type* =NULL)
{
return do_get_pointer(
- BOOST_FUSION_FORWARD(T,t),
- boost::addressof(BOOST_FUSION_FORWARD(T,t)));
+ BOOST_FUSION_FORWARD(T,t),
+ boost::addressof(t));
}
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/is_explicitly_convertible.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -10,7 +10,7 @@
#include <boost/detail/workaround.hpp>
#include <boost/type_traits/is_convertible.hpp>
-#if BOOST_WORKAROUND(__GNUC__,>=4)
+#if !BOOST_WORKAROUND(__GNUC__,<4) && !defined(BOOST_MSVC)
# include <boost/mpl/or.hpp>
# include <boost/fusion/support/internal/small_big_type.hpp>
# include <boost/mpl/bool.hpp>
@@ -20,6 +20,7 @@
namespace boost { namespace fusion { namespace detail
{
//cschmidt: Fall back due to a defect in gcc 3.x's call_expr...
+//... and a bug in MSVC
#if BOOST_WORKAROUND(__GNUC__,<4) || defined(BOOST_MSVC)
template<typename From, typename To>
struct is_explicitly_convertible
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 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)
@@ -11,55 +11,82 @@
#include <boost/fusion/support/is_view.hpp>
#include <boost/fusion/support/internal/ref.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/remove_const.hpp>
-
namespace boost { namespace fusion { namespace detail
{
- template<typename T>
- struct view_storage
+ template<typename T, bool IsView=traits::is_view<T>::type::value>
+ struct view_storage;
+
+ template<typename View>
+ struct view_storage<View, /*IsView*/true>
{
- private:
- template<typename OtherT>
- static BOOST_FUSION_R_ELSE_CLREF(OtherT)
- get_init_type(BOOST_FUSION_R_ELSE_LREF(OtherT) other_t, mpl::true_)
+ typedef typename
+ remove_const<typename remove_reference<View>::type>::type
+ type;
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ typedef type const& call_param;
+#endif
+
+#define BOOST_FUSION_VIEW_STORAGE_CTOR(MODIFIER,_)\
+ template<typename OtherT, bool IsView>\
+ view_storage(view_storage<OtherT, IsView> MODIFIER storage)\
+ : view(storage.template get<view_storage<OtherT, IsView> MODIFIER>())\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VIEW_STORAGE_CTOR,_)
+
+#undef BOOST_FUSION_VIEW_STORAGE_CTOR
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ view_storage(call_param view)
+ : view(view)
+ {}
+#else
+ template<typename OtherView>
+ view_storage(OtherView&& view)
+ : view(std::forward<OtherView>(view))
+ {}
+#endif
+
+ template<typename OtherViewStorage>
+ view_storage&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherViewStorage) other_storage)
{
- return BOOST_FUSION_FORWARD(OtherT,other_t);
+ view=other_storage.template get<OtherViewStorage>();
+ return *this;
}
- template<typename OtherT>
- static typename remove_reference<OtherT>::type*
- get_init_type(BOOST_FUSION_R_ELSE_LREF(OtherT) other_t, mpl::false_)
+ //workaround until we get rvalue refs for this
+ template<typename SelfType>
+ typename forward_as<SelfType, type>::type
+ get()
{
- return &other_t;
+ return static_cast<typename forward_as<SelfType, type>::type>(view);
}
- public:
- typedef T arg_type;
- typedef typename
- mpl::if_<
- traits::is_view<T>
- , typename remove_reference<T>::type
- , typename add_lref<T>::type
- >::type
- type;
+ template<typename SelfType>
+ typename forward_as<SelfType, type const>::type
+ get()const
+ {
+ return static_cast<
+ typename forward_as<SelfType, type const>::type
+ >(view);
+ }
+
+ type view;
+ };
+ template<typename Seq>
+ struct view_storage<Seq, /*IsView*/false>
+ {
+ typedef typename add_lref<Seq>::type type;
#ifdef BOOST_NO_RVALUE_REFERENCES
- typedef typename
- mpl::if_<
- traits::is_view<T>
- , typename add_lref<typename add_const<T>::type>::type
- , type
- >::type
- call_param;
+ typedef type call_param;
#endif
#define BOOST_FUSION_VIEW_STORAGE_CTOR(MODIFIER,_)\
- template<typename OtherT>\
- view_storage(view_storage<OtherT> MODIFIER storage)\
- : t(get_init_type(storage.get(), typename traits::is_view<T>::type()))\
+ template<typename OtherSeq>\
+ view_storage(view_storage<OtherSeq, false> MODIFIER storage)\
+ : seq(storage.seq)\
{}
BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VIEW_STORAGE_CTOR,_)
@@ -67,62 +94,39 @@
#undef BOOST_FUSION_VIEW_STORAGE_CTOR
#ifdef BOOST_NO_RVALUE_REFERENCES
- view_storage(call_param t)
- : t(get_init_type(t, typename traits::is_view<T>::type()))
+ view_storage(call_param seq)
+ : seq(&seq)
{}
#else
- template<typename OtherT>
- view_storage(OtherT&& t)
- : t(get_init_type(
- std::forward<OtherT>(t),
- typename traits::is_view<T>::type()))
+ template<typename OtherSeq>
+ view_storage(OtherSeq&& seq)
+ : seq(&seq)
{}
#endif
view_storage&
operator=(view_storage const& other_storage)
{
- t=other_storage.t;
+ seq=other_storage.seq;
return *this;
}
template<typename OtherViewStorage>
view_storage&
- operator=(BOOST_FUSION_R_ELSE_CLREF(OtherViewStorage) other_storage)
+ operator=(OtherViewStorage const& other_storage)
{
- t=BOOST_FUSION_FORWARD(OtherViewStorage,other_storage).t;
+ seq=other_storage.seq;
return *this;
}
- typename mpl::if_<
- traits::is_view<T>
- , typename add_lref<type>::type
- , type
- >::type
- get() const
- {
- return get(typename traits::is_view<T>::type());
- }
-
- private:
- typename add_lref<type>::type
- get(mpl::true_ /*is_view*/)const
- {
- return t;
- }
-
+ template<typename>
type
- get(mpl::false_ /*is_view*/)const
+ get()const
{
- return static_cast<type>(*t);
+ return static_cast<type>(*seq);
}
- typedef typename remove_reference<T>::type non_ref_t;
- mutable typename mpl::if_<
- traits::is_view<T>
- , typename remove_const<non_ref_t>::type
- , non_ref_t*
- >::type t;
+ typename remove_reference<Seq>::type* seq;
};
}}}
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -41,7 +41,7 @@
static type
call(Seq seq)
{
- return type(fusion::begin(seq.seq.get()),0);
+ return type(fusion::begin(seq.seq.template get<Seq>()),0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -40,7 +40,7 @@
static type
call(Seq seq)
{
- return type(fusion::end(seq.seq.get()),0);
+ return type(fusion::end(seq.seq.template get<Seq>()),0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -12,7 +12,6 @@
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/iterator/equal_to.hpp>
-
#include <boost/mpl/if.hpp>
namespace boost { namespace fusion { namespace extension
@@ -64,15 +63,15 @@
static type
call(Seq seq, mpl::true_)
{
- return type(fusion::begin(seq.seq2.get()),0);
+ return type(fusion::begin(seq.seq2.template get<Seq>()),0);
}
static type
call(Seq seq, mpl::false_)
{
return type(
- fusion::begin(seq.seq1.get())
- , fusion::begin(seq.seq2.get()));
+ fusion::begin(seq.seq1.template get<Seq>()),
+ fusion::begin(seq.seq2.template get<Seq>()));
}
static type
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -41,7 +41,7 @@
static type
call(Seq seq)
{
- return type(fusion::end(seq.seq2.get()),0);
+ return type(fusion::end(seq.seq2.template get<Seq>()),0);
}
};
};
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-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -85,16 +85,18 @@
#ifdef BOOST_NO_RVALUE_REFERENCES
explicit
- joint_view(typename storage1_type::call_param seq1,
- typename storage2_type::call_param seq2)
+ joint_view(
+ typename storage1_type::call_param seq1,
+ typename storage2_type::call_param seq2)
: seq1(seq1)
, seq2(seq2)
{}
#else
template<typename OtherSeq1, typename OtherSeq2>
explicit
- joint_view(BOOST_FUSION_R_ELSE_CLREF(OtherSeq1) seq1,
- BOOST_FUSION_R_ELSE_CLREF(OtherSeq2) seq2)
+ joint_view(
+ BOOST_FUSION_R_ELSE_CLREF(OtherSeq1) seq1,
+ BOOST_FUSION_R_ELSE_CLREF(OtherSeq2) seq2)
: seq1(BOOST_FUSION_FORWARD(OtherSeq1,seq1))
, seq2(BOOST_FUSION_FORWARD(OtherSeq2,seq2))
{}
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -33,7 +33,7 @@
static type
call(Seq seq)
{
- return fusion::at<index>(seq.seq.get());
+ return fusion::at<index>(seq.seq.template get<Seq>());
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -36,7 +36,7 @@
static type
call(Seq seq)
{
- return type(seq.seq.get(),0);
+ return type(seq.seq.template get<Seq>(),0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -36,7 +36,7 @@
static type
call(Seq seq)
{
- return type(seq.seq.get(),0);
+ return type(seq.seq.template get<Seq>(),0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
/*==============================================================================
Copyright (c) 2007 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,6 +10,7 @@
#define BOOST_FUSION_VIEW_REPETITIVE_VIEW_DETAIL_BEGIN_IMPL_HPP
#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/utility/addressof.hpp>
namespace boost { namespace fusion { namespace extension
{
@@ -38,7 +39,9 @@
static type
call(Seq seq)
{
- return type(seq.seq.get(),fusion::begin(seq.seq.get()));
+ return type(
+ boost::addressof(seq.seq.template get<Seq>()),
+ fusion::begin(seq.seq.template get<Seq>()));
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
/*==============================================================================
Copyright (c) 2007 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)
@@ -13,17 +13,18 @@
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/iterator/advance_c.hpp>
#include <boost/fusion/support/category_of.hpp>
-
#include <boost/mpl/modulus.hpp>
#include <boost/mpl/negate.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/or.hpp>
#include <boost/mpl/not.hpp>
+#include <boost/utility/addressof.hpp>
namespace boost { namespace fusion
{
namespace detail
{
+ //TODO ref
template<
typename Seq
, typename MaxIndex
@@ -65,7 +66,7 @@
static type
call(Seq seq)
{
- return type(seq,fusion::end(seq));
+ return fusion::end(seq);
}
};
}
@@ -103,7 +104,9 @@
static type
call(Seq seq)
{
- return type(seq.seq.get(),gen::call(seq.seq.get()));
+ return type(
+ boost::addressof(seq.seq.template get<Seq>()),
+ gen::call(seq.seq.template get<Seq>()));
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -52,21 +52,21 @@
type;
static type
- call_impl(It it, mpl::false_ /*new_iterator*/)
+ call(It it, mpl::false_ /*new_iterator*/)
{
- return type(*it.seq,fusion::next(it.it));
+ return type(it.seq,fusion::next(it.it));
}
static type
- call_impl(It it, mpl::true_ /*new_iterator*/)
+ call(It it, mpl::true_ /*new_iterator*/)
{
- return type(*it.seq,begin(*it.seq));
+ return type(it.seq,begin(*it.seq));
}
static type
call(It it)
{
- return call_impl(it,new_iterator());
+ return call(it,new_iterator());
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/prior_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -51,22 +51,25 @@
type;
static type
- call_impl(It it, mpl::false_ /*new_iterator*/)
+ call(It it, mpl::false_ /*new_iterator*/)
{
- return type(it.seq.get(),fusion::prior(it.it));
+ return type(
+ it.seq.template get<typename it::seq_type>(),
+ fusion::prior(it.it));
}
static type
- call_impl(It it, mpl::true_ /*new_iterator*/)
+ call(It it, mpl::true_ /*new_iterator*/)
{
- return type(it.seq.get(),
- fusion::prior(fusion::end(*it.seq)));
+ return type(
+ it.seq.template get<typename it::seq_type>(),
+ fusion::prior(fusion::end(*it.seq)));
}
static type
call(It it)
{
- return call_impl(it,new_iterator());
+ return call(it,new_iterator());
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/repetitive_view_iterator.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
/*==============================================================================
Copyright (c) 2007 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)
@@ -12,7 +12,6 @@
#include <boost/fusion/support/iterator_base.hpp>
#include <boost/fusion/support/category_of.hpp>
#include <boost/fusion/support/internal/assert.hpp>
-
#include <boost/mpl/int.hpp>
namespace boost { namespace fusion
@@ -26,6 +25,7 @@
typedef SeqRef seq_type;
typedef It it_type;
typedef Index index;
+ typedef typename detail::remove_reference<seq_type>::type* seq_ptr_type;
typedef repetitive_view_iterator_tag fusion_tag;
typedef typename traits::category_of<It>::type category;
@@ -38,8 +38,8 @@
BOOST_FUSION_TAG_CHECK(OtherIt,repetitive_view_iterator_tag);
}
- repetitive_view_iterator(SeqRef seq, It const& it)
- : seq(&seq)
+ repetitive_view_iterator(seq_ptr_type seq, It const& it)
+ : seq(seq)
, it(it)
{}
@@ -54,7 +54,7 @@
return *this;
}
- typename detail::remove_reference<seq_type>::type* seq;
+ seq_ptr_type seq;
It it;
};
}}
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-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -109,7 +109,6 @@
detail::view_storage<Seq> seq;
};
-
namespace result_of
{
template<
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -39,7 +39,7 @@
static type
call(Seq seq)
{
- return fusion::at<real_n>(seq.seq.get());
+ return fusion::at<real_n>(seq.seq.template get<Seq>());
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -41,7 +41,7 @@
static type
call(Seq seq)
{
- return type(fusion::end(seq.seq.get()),0);
+ return type(fusion::end(seq.seq.template get<Seq>()),0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -41,7 +41,7 @@
static type
call(Seq seq)
{
- return type(fusion::begin(seq.seq.get()),0);
+ return type(fusion::begin(seq.seq.template get<Seq>()),0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,5 +1,6 @@
/*==============================================================================
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)
@@ -8,6 +9,8 @@
#ifndef BOOST_FUSION_VIEW_SINGLE_VIEW_DETAIL_BEGIN_IMPL_HPP
#define BOOST_FUSION_VIEW_SINGLE_VIEW_DETAIL_BEGIN_IMPL_HPP
+#include <boost/utility/addressof.hpp>
+
namespace boost { namespace fusion { namespace extension
{
template<typename>
@@ -35,7 +38,7 @@
static type
call(Seq seq)
{
- return type(seq.val);
+ return type(boost::addressof(seq.val),0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,5 +1,6 @@
/*==============================================================================
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)
@@ -8,6 +9,8 @@
#ifndef BOOST_FUSION_VIEW_SINGLE_VIEW_DETAIL_END_IMPL_HPP
#define BOOST_FUSION_VIEW_SINGLE_VIEW_DETAIL_END_IMPL_HPP
+#include <boost/utility/addressof.hpp>
+
namespace boost { namespace fusion { namespace extension
{
template<typename>
@@ -35,7 +38,7 @@
static type
call(Seq seq)
{
- return type(seq.val);
+ return type(boost::addressof(seq.val),0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -33,7 +33,7 @@
static type
call(It it)
{
- return type(*it.val);
+ return type(it.val,0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/prior_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/prior_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/prior_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -32,7 +32,7 @@
static type
call(It it)
{
- return type(*it.val);
+ return type(it.val,0);
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_iterator.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,6 +1,6 @@
/*==============================================================================
Copyright (c) 2001-2006 Joel de Guzman
- 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)
@@ -23,33 +23,38 @@
typedef Value value_type;
typedef ValueRef value_ref_type;
typedef mpl::bool_<End> end;
+ typedef typename
+ detail::remove_reference<value_ref_type>::type*
+ value_ptr_type;
typedef single_view_iterator_tag fusion_tag;
typedef random_access_traversal_tag category;
- template<typename OtherIt>
- single_view_iterator(BOOST_FUSION_R_ELSE_CLREF(OtherIt) it)
- : val(BOOST_FUSION_FORWARD(OtherIt,it).val)
+ single_view_iterator(value_ptr_type val, int)
+ : val(val)
+ {}
+
+ template<typename OtherValueRef>
+ single_view_iterator(
+ single_view_iterator<Value, OtherValueRef, End> const it)
+ : val(it.val)
{
- BOOST_FUSION_TAG_CHECK(OtherIt,single_view_iterator_tag);
+ BOOST_FUSION_MPL_ASSERT((
+ is_convertible<OtherValueRef, value_ref_type>));
}
- explicit
- single_view_iterator(value_ref_type val)
- : val(&val)
- {}
-
- template<typename OtherIt>
+ template<typename OtherValueRef>
single_view_iterator&
- operator=(BOOST_FUSION_R_ELSE_CLREF(OtherIt) it)
+ operator=(single_view_iterator<Value, OtherValueRef, End> const& it)
{
- BOOST_FUSION_TAG_CHECK(OtherIt,single_view_iterator_tag);
+ BOOST_FUSION_MPL_ASSERT((
+ is_convertible<OtherValueRef, value_ref_type>));
- val=BOOST_FUSION_FORWARD(OtherIt,it).val;
+ val=it.val;
return *this;
}
- typename detail::remove_reference<value_ref_type>::type* val;
+ value_ptr_type val;
};
}}
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -38,7 +38,7 @@
static type
call(Seq seq)
{
- return seq.f(fusion::at<N>(seq.seq.get()));
+ return seq.f(fusion::at<N>(seq.seq.template get<Seq>()));
}
};
};
@@ -70,8 +70,8 @@
static type call(Seq seq)
{
return seq.f(
- fusion::at<N>(seq.seq1.get()),
- fusion::at<N>(seq.seq2.get()));
+ fusion::at<N>(seq.seq1.template get<Seq>()),
+ fusion::at<N>(seq.seq2.template get<Seq>()));
}
};
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -53,7 +53,7 @@
call(Seq seq)
{
return type(
- fusion::begin(seq.seq.get()),
+ fusion::begin(seq.seq.template get<Seq>()),
static_cast<transform_type>(seq.f));
}
};
@@ -97,8 +97,8 @@
call(Seq seq)
{
return type(
- fusion::begin(seq.seq1.get()),
- fusion::begin(seq.seq2.get()),
+ fusion::begin(seq.seq1.template get<Seq>()),
+ fusion::begin(seq.seq2.template get<Seq>()),
static_cast<transform_type>(seq.f));
}
};
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -24,13 +24,14 @@
struct apply
{
typedef typename detail::remove_reference<It>::type it;
+ typedef typename it::transform_type transform_type;
+ typedef typename detail::get_func_base<transform_type>::type func_base;
+ typedef typename result_of::deref<typename it::it_type>::type deref_res;
typedef typename
boost::result_of<
- typename detail::get_func_base<
- typename it::transform_type
- >::type(
- typename result_of::deref<typename it::it_type>::type)
+ func_base(
+ deref_res)
>::type
type;
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -48,7 +48,7 @@
call(Seq seq)
{
return type(
- fusion::end(seq.seq.get()),
+ fusion::end(seq.seq.template get<Seq>()),
static_cast<transform_type>(seq.f));
}
};
@@ -92,9 +92,9 @@
call(Seq seq)
{
return type(
- fusion::end(seq.seq1.get())
- , fusion::end(seq.seq2.get())
- , static_cast<transform_type>(seq.f));
+ fusion::end(seq.seq1.template get<Seq>()),
+ fusion::end(seq.seq2.template get<Seq>()),
+ static_cast<transform_type>(seq.f));
}
};
};
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/all.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/all.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/all.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -40,19 +40,19 @@
}
{
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 < 4)));
BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 > 0)));
}
{
- boost::fusion::vector<int, short, double, long> t(1, 2, 3.3, 2);
+ boost::fusion::vector<int, long, double, long> t(1, 2, 3.3, 2);
BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 < 4)));
BOOST_TEST((boost::fusion::all(t, boost::lambda::_1 > 0)));
}
{
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
BOOST_TEST((!boost::fusion::all(t, boost::lambda::_1 == 1)));
BOOST_TEST((!boost::fusion::all(t, boost::lambda::_1 < 3)));
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/any.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/any.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/any.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -35,12 +35,12 @@
main()
{
{
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
BOOST_TEST(boost::fusion::any(t, boost::lambda::_1 == 2));
}
{
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
BOOST_TEST(!boost::fusion::any(t, boost::lambda::_1 == 3));
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -16,12 +16,12 @@
main()
{
{
- boost::fusion::vector<int, short, double> t(1, 1, 1);
+ boost::fusion::vector<int, long, double> t(1, 1, 1);
BOOST_TEST(boost::fusion::count(t, 1) == 3);
}
{
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
BOOST_TEST(boost::fusion::count(t, 3) == 0);
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count_if.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count_if.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/count_if.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -17,12 +17,12 @@
main()
{
{
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 2) == 1);
}
{
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
BOOST_TEST(boost::fusion::count_if(t, boost::lambda::_1 == 3) == 0);
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/none.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/none.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/none.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -34,13 +34,13 @@
main()
{
{
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
BOOST_TEST((boost::fusion::none(t, boost::lambda::_1 > 4)));
BOOST_TEST((boost::fusion::none(t, boost::lambda::_1 < 0)));
}
{
- boost::fusion::vector<int, short, double> t(1, 2, 3.3);
+ boost::fusion::vector<int, long, double> t(1, 2, 3.3);
BOOST_TEST((!boost::fusion::none(t, boost::lambda::_1 == 1)));
BOOST_TEST((!boost::fusion::none(t, boost::lambda::_1 < 3)));
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/replace_if.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/replace_if.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/replace_if.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -37,7 +37,7 @@
{
char const* s = "Ruby";
- typedef vector<int, short, double, long, char const*, float> vector_type;
+ typedef vector<int, long, double, long, char const*, float> vector_type;
//TODO
vector_type t1(1, 2, 3.3, 4, s, 5.5f);
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -99,14 +99,14 @@
{
// conversion from ns::point to vector
ns::point p(5, 3);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
v = p;
}
{
// conversion from ns::point to list
ns::point p(5, 3);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class_named.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class_named.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_class_named.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -29,7 +29,7 @@
class point
{
public:
-
+
point() : x(0), y(0) {}
point(int x, int y) : x(x), y(y) {}
@@ -103,7 +103,7 @@
// conversion from adapted::point to vector
ns::point basep(5, 3);
adapted::point p(basep);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
v = p;
}
@@ -111,7 +111,7 @@
// conversion from adated::point to list
ns::point basep(5, 3);
adapted::point p(basep);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -100,14 +100,14 @@
{
// conversion from ns::point to vector
ns::point p = {5, 3};
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
{
// conversion from ns::point to list
ns::point p = {5, 3};
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct_named.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct_named.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_struct_named.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -89,7 +89,7 @@
// conversion from adapted::point to vector
ns::point basep = {5, 3};
adapted::point p(basep);
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
@@ -97,7 +97,7 @@
// conversion from adapted::point to list
ns::point basep = {5, 3};
adapted::point p(basep);
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_class.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_class.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_class.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -103,14 +103,14 @@
{
// conversion from point to vector
point p(5, 3);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
v = p;
}
{
// conversion from point to list
point p(5, 3);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_assoc_tpl_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -103,14 +103,14 @@
{
// conversion from point to vector
point p = {5, 3};
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
{
// conversion from point to list
point p = {5, 3};
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -51,6 +51,24 @@
int x;
int y;
};
+
+ class point_with_private_members
+ {
+ friend class boost::fusion::extension::access;
+
+ public:
+ point_with_private_members() : x(0), y(0) {}
+ point_with_private_members(int x, int y) : x(x), y(y) {}
+
+ private:
+ int get_x() const { return x; }
+ int get_y() const { return y; }
+ void set_x(int x_) { x = x_; }
+ void set_y(int y_) { y = y_; }
+
+ int x;
+ int y;
+ };
}
BOOST_FUSION_ADAPT_CLASS(
@@ -59,6 +77,12 @@
(int, int, obj.get_y(), obj.set_y(val))
)
+BOOST_FUSION_ADAPT_CLASS(
+ ns::point_with_private_members,
+ (int, int, obj.get_x(), obj.set_x(val))
+ (int, int, obj.get_y(), obj.set_y(val))
+)
+
int
main()
{
@@ -107,14 +131,14 @@
{
// conversion from ns::point to vector
ns::point p(5, 3);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
v = p;
}
{
// conversion from ns::point to list
ns::point p(5, 3);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
l = p;
}
@@ -125,6 +149,26 @@
, boost::mpl::front<ns::point>::type>));
}
+ {
+ BOOST_MPL_ASSERT_NOT((traits::is_view<ns::point_with_private_members>));
+ ns::point_with_private_members p(123, 456);
+
+ std::cout << at_c<0>(p) << std::endl;
+ std::cout << at_c<1>(p) << std::endl;
+ std::cout << p << std::endl;
+ BOOST_TEST(p == make_vector(123, 456));
+
+ at_c<0>(p) = 6;
+ at_c<1>(p) = 9;
+ BOOST_TEST(p == make_vector(6, 9));
+
+ BOOST_STATIC_ASSERT(result_of::size<ns::point_with_private_members>::value == 2);
+ BOOST_STATIC_ASSERT(!result_of::empty<ns::point_with_private_members>::value);
+
+ BOOST_TEST(front(p) == 6);
+ BOOST_TEST(back(p) == 9);
+ }
+
return boost::report_errors();
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class_named.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class_named.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_class_named.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -112,7 +112,7 @@
ns::point basep(5, 3);
adapted::point p(basep);
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
@@ -121,7 +121,7 @@
ns::point basep(5, 3);
adapted::point p(basep);
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -35,6 +35,19 @@
int x;
int y;
};
+
+ struct point_with_private_attributes
+ {
+ friend class boost::fusion::extension::access;
+
+ private:
+ int x;
+ int y;
+
+ public:
+ point_with_private_attributes(int x, int y):x(x),y(y)
+ {}
+ };
}
BOOST_FUSION_ADAPT_STRUCT(
@@ -43,6 +56,12 @@
(int, y)
)
+BOOST_FUSION_ADAPT_STRUCT(
+ ns::point_with_private_attributes,
+ (int, x)
+ (int, y)
+)
+
struct s { int m; };
BOOST_FUSION_ADAPT_STRUCT(s, (int, m))
@@ -93,14 +112,14 @@
{
// conversion from ns::point to vector
ns::point p = {5, 3};
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
{
// conversion from ns::point to list
ns::point p = {5, 3};
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
@@ -113,6 +132,15 @@
BOOST_MPL_ASSERT((boost::is_same<result_of::next<b>::type, e>));
}
+ {
+ ns::point_with_private_attributes p(123, 456);
+
+ std::cout << at_c<0>(p) << std::endl;
+ std::cout << at_c<1>(p) << std::endl;
+ std::cout << p << std::endl;
+ BOOST_TEST(p == make_vector(123, 456));
+ }
+
return boost::report_errors();
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct_named.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct_named.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_struct_named.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -103,7 +103,7 @@
// conversion from adapted::point to vector
ns::point basep = {5, 3};
adapted::point p(basep);
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
@@ -111,7 +111,7 @@
// conversion from adapted::point to list
ns::point basep = {5, 3};
adapted::point p(basep);
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_class.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_class.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_class.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -111,14 +111,14 @@
{
// conversion from point to vector
point p(5, 3);
- boost::fusion::vector<int, short> v(p);
+ boost::fusion::vector<int, long> v(p);
v = p;
}
{
// conversion from point to list
point p(5, 3);
- boost::fusion::list<int, short> l(p);
+ boost::fusion::list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/adapt_tpl_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -98,14 +98,14 @@
{
// conversion from point to vector
point p = {5, 3};
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
{
// conversion from point to list
point p = {5, 3};
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/comparison.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/comparison.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/comparison.hpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -36,7 +36,7 @@
using namespace boost::fusion;
FUSION_SEQUENCE<int, float> v1(4, 3.3f);
- FUSION_SEQUENCE<short, float> v2(5, 3.3f);
+ FUSION_SEQUENCE<long, float> v2(5, 3.3f);
FUSION_SEQUENCE<long, double> v3(5, 4.4);
BOOST_TEST(v1 < v2);
BOOST_TEST(v1 <= v2);
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -86,14 +86,14 @@
{
// conversion from ns::point to vector
ns::point p(5, 3);
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
{
// conversion from ns::point to list
ns::point p(5, 3);
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_tpl_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_tpl_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_assoc_tpl_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -90,14 +90,14 @@
{
// conversion from point to vector
point p(5, 3);
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
{
// conversion from point to list
point p(5, 3);
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -83,14 +83,14 @@
{
// conversion from ns::point to vector
ns::point p(5, 3);
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
{
// conversion from ns::point to list
ns::point p(5, 3);
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_tpl_struct.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_tpl_struct.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/define_tpl_struct.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -86,14 +86,14 @@
{
// conversion from point to vector
point p(5, 3);
- vector<int, short> v(p);
+ vector<int, long> v(p);
v = p;
}
{
// conversion from point to list
point p(5, 3);
- list<int, short> l(p);
+ list<int, long> l(p);
l = p;
}
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/tr1_tuple_auto_conv.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/tr1_tuple_auto_conv.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/tr1_tuple_auto_conv.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -48,7 +48,7 @@
} // namespace Core
-int main(int, char*[])
+int main()
{
//TODO
//std::tr1::tuple<int, int, int, int> test = Core::Demo();
Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/vector_n.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/vector_n.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/sequence/vector_n.cpp 2010-07-30 17:48:11 EDT (Fri, 30 Jul 2010)
@@ -1,4 +1,4 @@
-/*==============================================================================
+/*=============================================================================
Copyright (c) 2001-2006 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -58,7 +58,7 @@
}
{ // testing const vector
- vector1<short> const vec(999);
+ vector1<short> const vec((short)999);
BOOST_TEST(at_c<0>(vec) == 999);
#ifdef FUSION_TEST_COMPILE_FAIL
@@ -94,7 +94,7 @@
{
vector2<int, int> t1(123, 456);
- vector2<double, float> t2(t1);
+ vector2<double, double> t2(t1);
(void)t2;
}
@@ -135,8 +135,7 @@
{
typedef vector7<bool, char, short, int, long, float, double> type;
- //TODO
- type vec(false, 'x', 3, 4, 5, 6.0f, 7.0);
+ type vec(false, 'x', (short)3, 4, 5, 6.0f, 7.0);
BOOST_TEST(at_c<0>(vec) == false);
BOOST_TEST(at_c<1>(vec) == 'x');
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