|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r59915 - in sandbox/SOC/2009/fusion/boost/fusion: adapted/class adapted/detail/class adapted/detail/struct adapted/struct view/nview view/nview/detail
From: mr.chr.schmidt_at_[hidden]
Date: 2010-02-25 15:30:42
Author: cschmidt
Date: 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
New Revision: 59915
URL: http://svn.boost.org/trac/boost/changeset/59915
Log:
better adapt structs/classes implementation
Removed:
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/at_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/begin_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/category_of_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/deref_data_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/deref_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/end_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/is_sequence_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/is_view_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/key_of_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/size_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/value_at_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/value_of_data_impl.hpp
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/value_of_impl.hpp
Text files modified:
sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_assoc_class.hpp | 34 ++++++++------
sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_class.hpp | 28 +++++++-----
sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_class_named.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/adapt_base.hpp | 91 +++++++++++++++++++++++++++------------
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/extension.hpp | 23 ++++++---
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp | 39 +++++++++++++++-
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp | 28 ++---------
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/begin_impl.hpp | 4
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/category_of_impl.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_data_impl.hpp | 6 +-
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp | 47 +++++++-------------
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/end_impl.hpp | 4
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp | 6 +
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_sequence_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_view_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/key_of_impl.hpp | 4
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/proxy_type.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/size_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_data_impl.hpp | 6 +-
sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp | 7 --
sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct_named.hpp | 2
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/advance_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/deref_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/distance_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/equal_to_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/next_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/prior_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_at_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_of_impl.hpp | 1
sandbox/SOC/2009/fusion/boost/fusion/view/nview/nview.hpp | 1
34 files changed, 208 insertions(+), 142 deletions(-)
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_assoc_class.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_assoc_class.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_assoc_class.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,4 +1,6 @@
/*=============================================================================
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
Copyright (c) 2010 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -13,21 +15,23 @@
#include <boost/preprocessor/empty.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/fusion/adapted/detail/struct/extension.hpp>
+#include <boost/fusion/adapted/detail/struct/adapt_base.hpp>
+#include <boost/fusion/adapted/detail/struct/at_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/is_view_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_at_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/category_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/size_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/begin_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/end_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/deref_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/deref_data_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/key_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_of_data_impl.hpp>
#include <boost/fusion/adapted/detail/class/extension.hpp>
#include <boost/fusion/adapted/detail/class/adapt_base.hpp>
-#include <boost/fusion/adapted/detail/class/at_impl.hpp>
-#include <boost/fusion/adapted/detail/class/is_view_impl.hpp>
-#include <boost/fusion/adapted/detail/class/is_sequence_impl.hpp>
-#include <boost/fusion/adapted/detail/class/value_at_impl.hpp>
-#include <boost/fusion/adapted/detail/class/category_of_impl.hpp>
-#include <boost/fusion/adapted/detail/class/size_impl.hpp>
-#include <boost/fusion/adapted/detail/class/begin_impl.hpp>
-#include <boost/fusion/adapted/detail/class/end_impl.hpp>
-#include <boost/fusion/adapted/detail/class/value_of_impl.hpp>
-#include <boost/fusion/adapted/detail/class/deref_impl.hpp>
-#include <boost/fusion/adapted/detail/class/deref_data_impl.hpp>
-#include <boost/fusion/adapted/detail/class/key_of_impl.hpp>
-#include <boost/fusion/adapted/detail/class/value_of_data_impl.hpp>
#define BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0(A, B, C, D, E)\
((A, B, C, D, E)) BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_1
@@ -55,7 +59,7 @@
BOOST_FUSION_ADAPT_STRUCT_BASE( \
(1)TEMPLATE_PARAMS_SEQ, \
(1)NAME_SEQ, \
- assoc_class_tag, \
+ assoc_struct_tag, \
BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \
BOOST_FUSION_ADAPT_ASSOC_CLASS_C)
@@ -63,7 +67,7 @@
BOOST_FUSION_ADAPT_STRUCT_BASE( \
(0), \
(0)(NAME), \
- assoc_class_tag, \
+ assoc_struct_tag, \
BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \
BOOST_FUSION_ADAPT_ASSOC_CLASS_C)
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_class.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_class.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_class.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,4 +1,6 @@
/*=============================================================================
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2009-2010 Hartmut Kaiser
Copyright (c) 2010 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -12,18 +14,20 @@
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/empty.hpp>
+#include <boost/fusion/adapted/detail/struct/extension.hpp>
+#include <boost/fusion/adapted/detail/struct/adapt_base.hpp>
+#include <boost/fusion/adapted/detail/struct/at_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/is_view_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_at_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/category_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/size_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/begin_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/end_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/deref_impl.hpp>
#include <boost/fusion/adapted/detail/class/extension.hpp>
#include <boost/fusion/adapted/detail/class/adapt_base.hpp>
-#include <boost/fusion/adapted/detail/class/at_impl.hpp>
-#include <boost/fusion/adapted/detail/class/is_view_impl.hpp>
-#include <boost/fusion/adapted/detail/class/is_sequence_impl.hpp>
-#include <boost/fusion/adapted/detail/class/value_at_impl.hpp>
-#include <boost/fusion/adapted/detail/class/category_of_impl.hpp>
-#include <boost/fusion/adapted/detail/class/size_impl.hpp>
-#include <boost/fusion/adapted/detail/class/begin_impl.hpp>
-#include <boost/fusion/adapted/detail/class/end_impl.hpp>
-#include <boost/fusion/adapted/detail/class/value_of_impl.hpp>
-#include <boost/fusion/adapted/detail/class/deref_impl.hpp>
#define BOOST_FUSION_ADAPT_CLASS_FILLER_0(A, B, C, D)\
((A, B, C, D)) BOOST_FUSION_ADAPT_CLASS_FILLER_1
@@ -40,7 +44,7 @@
BOOST_FUSION_ADAPT_STRUCT_BASE( \
(1)TEMPLATE_PARAMS_SEQ, \
(1)NAME_SEQ, \
- class_tag, \
+ struct_tag, \
BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \
BOOST_FUSION_ADAPT_CLASS_C)
@@ -48,7 +52,7 @@
BOOST_FUSION_ADAPT_STRUCT_BASE( \
(0), \
(0)(NAME), \
- class_tag, \
+ struct_tag, \
BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \
BOOST_FUSION_ADAPT_CLASS_C)
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_class_named.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_class_named.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/class/adapt_class_named.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,4 +1,6 @@
/*=============================================================================
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2009-2010 Hartmut Kaiser
Copyright (c) 2010 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
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-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,4 +1,6 @@
/*=============================================================================
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2010 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -8,7 +10,26 @@
#ifndef BOOST_FUSION_ADAPTED_DETAIL_CLASS_ADAPT_BASE_HPP
#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_ADAPT_BASE_HPP
-#include <boost/fusion/adapted/detail/struct/adapt_base.hpp>
+#include <boost/preprocessor/control/if.hpp>
+#include <boost/preprocessor/seq/seq.hpp>
+#include <boost/preprocessor/seq/elem.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+//cschmidt: Spirit relies on Fusion defining class_member_proxy in the
+//boost::fusion::extension namespace, with two nested types named lvalue and
+//rvalue.
+
+#define BOOST_FUSION_ADAPT_CLASS_GET_IDENTITY_TEMPLATE_IMPL(TEMPLATE_PARAMS_SEQ)\
+ typename detail::get_identity< \
+ lvalue \
+ , BOOST_PP_SEQ_ELEM(1,TEMPLATE_PARAMS_SEQ) \
+ >::type
+
+#define BOOST_FUSION_ADAPT_CLASS_GET_IDENTITY_NON_TEMPLATE_IMPL( \
+ TEMPLATE_PARAMS_SEQ) \
+ \
+ lvalue
#define BOOST_FUSION_ADAPT_CLASS_C_BASE(\
TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,ATTRIBUTE,ATTRIBUTE_TUPEL_SIZE) \
@@ -21,9 +42,8 @@
, I \
> \
{ \
- typedef \
- BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \
- type; \
+ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) lvalue; \
+ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) rvalue; \
\
class_member_proxy(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj)\
: obj(obj) \
@@ -37,7 +57,7 @@
return *this; \
} \
\
- operator type() \
+ operator lvalue() \
{ \
return BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 2, ATTRIBUTE); \
} \
@@ -50,34 +70,47 @@
> \
struct struct_member<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ), I> \
{ \
- typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \
- typedef \
- BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) \
- get_type; \
- typedef \
- class_member_proxy< \
- BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
- , I \
- > \
- proxy; \
+ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) lvalue; \
\
- static get_type \
- call(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& obj) \
- { \
- return BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 2, ATTRIBUTE); \
- }; \
+ typedef \
+ BOOST_PP_IF( \
+ BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), \
+ BOOST_FUSION_ADAPT_CLASS_GET_IDENTITY_TEMPLATE_IMPL, \
+ BOOST_FUSION_ADAPT_CLASS_GET_IDENTITY_NON_TEMPLATE_IMPL)( \
+ TEMPLATE_PARAMS_SEQ) \
+ type; \
\
- static proxy \
- call(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj) \
+ template<typename Seq> \
+ struct apply \
{ \
- return proxy(obj); \
+ typedef typename detail::remove_reference<Seq>::type seq; \
+ typedef \
+ class_member_proxy< \
+ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
+ , I \
+ > \
+ proxy; \
+ \
+ typedef typename \
+ mpl::if_< \
+ is_const<seq> \
+ , BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) \
+ , proxy \
+ >::type \
+ type; \
+ \
+ static proxy \
+ call(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj) \
+ { \
+ return proxy(obj); \
+ } \
+ \
+ static BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) \
+ call(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& obj) \
+ { \
+ return BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 2, ATTRIBUTE); \
+ } \
}; \
};
-namespace boost { namespace fusion { namespace extension
-{
- template <typename T, int N>
- struct class_member_proxy;
-}}}
-
#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/at_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,56 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_AT_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_AT_IMPL_HPP
-
-#include <boost/mpl/if.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/remove_const.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template<typename>
- struct at_impl;
-
- template <>
- struct at_impl<class_tag>
- {
- template<typename Seq, typename N>
- struct apply
- {
- typedef typename detail::remove_reference<Seq>::type seq;
- typedef
- extension::struct_member<
- typename remove_const<seq>::type
- , N::value
- >
- element;
-
- typedef typename
- mpl::if_<
- is_const<seq>
- , typename element::get_type
- , typename element::proxy
- >::type
- type;
-
- static type
- call(Seq seq)
- {
- return element::call(seq);
- }
- };
- };
-
- template <>
- struct at_impl<assoc_class_tag>
- : at_impl<class_tag>
- {};
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/begin_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,65 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_BEGIN_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_BEGIN_IMPL_HPP
-
-#include <boost/fusion/iterator/basic_iterator.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template<typename>
- struct begin_impl;
-
- template <>
- struct begin_impl<class_tag>
- {
- template <typename Seq>
- struct apply
- {
- typedef
- basic_iterator<
- class_iterator_tag
- , random_access_traversal_tag
- , Seq
- , 0
- >
- type;
-
- static type
- call(Seq seq)
- {
- return type(seq,0);
- }
- };
- };
-
- template <>
- struct begin_impl<assoc_class_tag>
- {
- template <typename Seq>
- struct apply
- {
- typedef
- basic_iterator<
- assoc_class_iterator_tag
- , assoc_class_category
- , typename detail::add_lref<Seq>::type
- , 0
- >
- type;
-
- static type
- call(Seq seq)
- {
- return type(seq,0);
- }
- };
- };
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/category_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/category_of_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,32 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_CATEGORY_OF_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_CATEGORY_OF_IMPL_HPP
-
-#include <boost/fusion/adapted/detail/struct/category_of_impl.hpp>
-
-namespace boost { namespace fusion
-{
- namespace extension
- {
- template<typename>
- struct category_of_impl;
-
- template<>
- struct category_of_impl<class_tag>
- : category_of_impl<struct_tag>
- {};
-
- template<>
- struct category_of_impl<assoc_class_tag>
- : category_of_impl<assoc_struct_tag>
- {};
- }
-}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/deref_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/deref_data_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,22 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_DEREF_DATA_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_DEREF_DATA_IMPL_HPP
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct deref_data_impl;
-
- template <>
- struct deref_data_impl<assoc_class_iterator_tag>
- : deref_impl<assoc_class_iterator_tag>
- {};
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/deref_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,59 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_DEREF_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_DEREF_IMPL_HPP
-
-#include <boost/mpl/if.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/remove_const.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct deref_impl;
-
- template <>
- struct deref_impl<class_iterator_tag>
- {
- template <typename It>
- struct apply
- {
- typedef typename detail::remove_reference<It>::type it;
- typedef typename
- detail::remove_reference<typename it::seq_type>::type
- seq;
- typedef
- extension::struct_member<
- typename remove_const<seq>::type
- , it::index::value
- >
- element;
-
- typedef typename
- mpl::if_<
- is_const<seq>
- , typename element::get_type
- , typename element::proxy
- >::type
- type;
-
- static type
- call(It it)
- {
- return element::call(*it.seq);
- }
- };
- };
-
- template <>
- struct deref_impl<assoc_class_iterator_tag>
- : deref_impl<class_iterator_tag>
- {};
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/end_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,65 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_END_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_END_IMPL_HPP
-
-#include <boost/fusion/iterator/basic_iterator.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct end_impl;
-
- template <>
- struct end_impl<class_tag>
- {
- template <typename Seq>
- struct apply
- {
- typedef
- basic_iterator<
- class_iterator_tag
- , random_access_traversal_tag
- , Seq
- , struct_size<typename detail::identity<Seq>::type>::value
- >
- type;
-
- static type
- call(Seq seq)
- {
- return type(seq,0);
- }
- };
- };
-
- template <>
- struct end_impl<assoc_class_tag>
- {
- template <typename Seq>
- struct apply
- {
- typedef
- basic_iterator<
- assoc_class_iterator_tag
- , assoc_class_category
- , typename detail::add_lref<Seq>::type
- , struct_size<typename detail::identity<Seq>::type>::value
- >
- type;
-
- static type
- call(Seq seq)
- {
- return type(seq,0);
- }
- };
- };
-}}}
-
-#endif
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-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,4 +1,6 @@
/*=============================================================================
+ Copyright (c) 2001-2009 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2010 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -8,16 +10,21 @@
#ifndef BOOST_FUSION_ADAPTED_DETAIL_CLASS_EXTENSION_HPP
#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_EXTENSION_HPP
-#include <boost/fusion/adapted/detail/struct/extension.hpp>
-
namespace boost { namespace fusion
{
- struct class_tag;
- struct class_iterator_tag;
- struct assoc_class_tag;
- struct assoc_class_iterator_tag;
-
- typedef assoc_struct_category assoc_class_category;
+ namespace detail
+ {
+ template <typename T, typename Dummy>
+ struct get_identity
+ : identity<T>
+ {};
+ }
+
+ namespace extension
+ {
+ template <typename T, int N>
+ struct class_member_proxy;
+ }
}}
#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/is_sequence_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/is_sequence_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,29 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_IS_SEQUENCE_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_IS_SEQUENCE_IMPL_HPP
-
-#include <boost/fusion/adapted/detail/struct/is_sequence_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template<typename>
- struct is_sequence_impl;
-
- template<>
- struct is_sequence_impl<class_tag>
- : is_sequence_impl<struct_tag>
- {};
-
- template <>
- struct is_sequence_impl<assoc_class_tag>
- : is_sequence_impl<assoc_struct_tag>
- {};
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/is_view_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/is_view_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,29 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_IS_VIEW_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_IS_VIEW_IMPL_HPP
-
-#include <boost/fusion/adapted/detail/struct/is_view_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template<typename>
- struct is_view_impl;
-
- template<>
- struct is_view_impl<class_tag>
- : is_view_impl<struct_tag>
- {};
-
- template <>
- struct is_view_impl<assoc_class_tag>
- : is_view_impl<assoc_struct_tag>
- {};
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/key_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/key_of_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,24 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_KEY_OF_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_KEY_OF_IMPL_HPP
-
-#include <boost/fusion/adapted/detail/struct/key_of_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct key_of_impl;
-
- template <>
- struct key_of_impl<assoc_class_iterator_tag>
- : key_of_impl<assoc_struct_iterator_tag>
- {};
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/size_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/size_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,29 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_SIZE_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_SIZE_IMPL_HPP
-
-#include <boost/fusion/adapted/detail/struct/size_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template<typename>
- struct size_impl;
-
- template <>
- struct size_impl<class_tag>
- : size_impl<struct_tag>
- {};
-
- template <>
- struct size_impl<assoc_class_tag>
- : size_impl<assoc_struct_tag>
- {};
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/value_at_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,29 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_VALUE_AT_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_VALUE_AT_IMPL_HPP
-
-#include <boost/fusion/adapted/detail/struct/value_at_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template<typename>
- struct value_at_impl;
-
- template <>
- struct value_at_impl<class_tag>
- : value_at_impl<struct_tag>
- {};
-
- template <>
- struct value_at_impl<assoc_class_tag>
- : value_at_impl<assoc_struct_tag>
- {};
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/value_of_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/value_of_data_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,24 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_VALUE_OF_DATA_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_VALUE_OF_DATA_IMPL_HPP
-
-#include <boost/fusion/adapted/detail/struct/value_of_data_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct value_of_data_impl;
-
- template <>
- struct value_of_data_impl<assoc_class_iterator_tag>
- : value_of_data_impl<assoc_struct_iterator_tag>
- {};
-}}}
-
-#endif
Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/class/value_of_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
+++ (empty file)
@@ -1,29 +0,0 @@
-/*=============================================================================
- 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_ADAPTED_DETAIL_CLASS_VALUE_OF_IMPL_HPP
-#define BOOST_FUSION_ADAPTED_DETAIL_CLASS_VALUE_OF_IMPL_HPP
-
-#include <boost/fusion/adapted/detail/struct/value_of_impl.hpp>
-
-namespace boost { namespace fusion { namespace extension
-{
- template <typename>
- struct value_of_impl;
-
- template <>
- struct value_of_impl<class_iterator_tag>
- : value_of_impl<struct_iterator_tag>
- {};
-
- template <>
- struct value_of_impl<assoc_class_iterator_tag>
- : value_of_impl<class_iterator_tag>
- {};
-}}}
-
-#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-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,4 +1,6 @@
/*=============================================================================
+ Copyright (c) 2001-2009 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
@@ -11,6 +13,7 @@
#include <boost/config.hpp>
#include <boost/fusion/support/tag_of_fwd.hpp>
+#include <boost/preprocessor/stringize.hpp>
#include <boost/preprocessor/control/if.hpp>
#include <boost/preprocessor/seq/size.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
@@ -90,11 +93,39 @@
typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \
\
template<typename Seq> \
- static typename detail::forward_as<Seq&,type>::type \
- call(Seq& seq) \
+ struct apply \
{ \
- return seq.PREFIX \
- BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE); \
+ typedef typename \
+ detail::forward_as< \
+ Seq \
+ , BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \
+ >::type \
+ type; \
+ \
+ static type \
+ call(Seq seq) \
+ { \
+ return seq.PREFIX \
+ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE); \
+ } \
+ }; \
+ }; \
+ \
+ template< \
+ BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
+ > \
+ struct struct_member_name< \
+ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
+ , I \
+ > \
+ { \
+ typedef char const* type; \
+ \
+ static type \
+ call() \
+ { \
+ return BOOST_PP_STRINGIZE( \
+ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)); \
} \
};
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-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,7 +1,7 @@
/*=============================================================================
Copyright (c) 2001-2006 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
- 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)
@@ -22,27 +22,11 @@
{
template <typename Seq, typename N>
struct apply
- {
- typedef typename
- detail::forward_as<
- Seq
- , typename struct_member<
- typename detail::identity<Seq>::type
- , N::value
- >::type
- >::type
- type;
-
- static type
- call(Seq seq)
- {
- return
- struct_member<
- typename detail::identity<Seq>::type
- , N::value
- >::call(seq);
- }
- };
+ : extension::struct_member<
+ typename detail::identity<Seq>::type
+ , N::value
+ >::template apply<Seq>
+ {};
};
template <>
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/begin_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,7 +1,7 @@
/*=============================================================================
Copyright (c) 2001-2006 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
- 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)
@@ -48,7 +48,7 @@
{
typedef
basic_iterator<
- assoc_struct_iterator_tag
+ struct_iterator_tag
, assoc_struct_category
, typename detail::add_lref<Seq>::type
, 0
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/category_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/category_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/category_of_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,7 +1,7 @@
/*=============================================================================
Copyright (c) 2001-2006 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
- 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)
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_data_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_data_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 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)
@@ -14,8 +14,8 @@
struct deref_data_impl;
template <>
- struct deref_data_impl<assoc_struct_iterator_tag>
- : deref_impl<assoc_struct_iterator_tag>
+ struct deref_data_impl<struct_iterator_tag>
+ : deref_impl<struct_iterator_tag>
{};
}}}
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-02-25 15:30:37 EST (Thu, 25 Feb 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,37 +19,24 @@
template <typename It>
struct apply
{
- typedef typename detail::remove_reference<It>::type it;
- typedef typename
- detail::identity<typename it::seq_type>::type
- identity_struct;
-
- typedef typename
- detail::forward_as<
- typename it::seq_type
- , typename extension::struct_member<
- identity_struct
- , it::index::value
- >::type
- >::type
- type;
-
- static type
- call(It it)
- {
- return
- extension::struct_member<
- identity_struct
- , it::index::value
- >::call(*it.seq);
- }
+ typedef typename detail::remove_reference<It>::type it;
+ typedef typename
+ extension::struct_member<
+ typename detail::identity<typename it::seq_type>::type
+ , it::index::value
+ >::template apply<typename it::seq_type>
+ impl;
+
+ typedef typename impl::type type;
+
+ static
+ type
+ call(It it)
+ {
+ return impl::call(*it.seq);
+ }
};
};
-
- template <>
- struct deref_impl<assoc_struct_iterator_tag>
- : deref_impl<struct_iterator_tag>
- {};
}}}
#endif
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/end_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,7 +1,7 @@
/*=============================================================================
Copyright (c) 2001-2006 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
- 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)
@@ -48,7 +48,7 @@
{
typedef
basic_iterator<
- assoc_struct_iterator_tag
+ struct_iterator_tag
, assoc_struct_category
, typename detail::add_lref<Seq>::type
, struct_size<typename detail::identity<Seq>::type>::value
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-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,7 +1,7 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
- 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)
@@ -17,7 +17,6 @@
struct struct_tag;
struct struct_iterator_tag;
struct assoc_struct_tag;
- struct assoc_struct_iterator_tag;
struct fusion_sequence_tag;
struct assoc_struct_category
@@ -32,6 +31,9 @@
struct struct_member;
template<typename Seq, int N>
+ struct struct_member_name;
+
+ template<typename Seq, int N>
struct struct_assoc_key;
template<typename Seq>
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_sequence_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_sequence_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_sequence_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 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)
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_view_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_view_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_view_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 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)
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/key_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/key_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/key_of_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 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)
@@ -14,7 +14,7 @@
struct key_of_impl;
template <>
- struct key_of_impl<assoc_struct_iterator_tag>
+ struct key_of_impl<struct_iterator_tag>
{
template <typename It>
struct apply
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/proxy_type.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/proxy_type.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/proxy_type.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,4 +1,5 @@
/*=============================================================================
+ Copyright (c) 2009-2010 Hartmut Kaiser
Copyright (c) 2010 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/size_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/size_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/size_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 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)
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-02-25 15:30:37 EST (Thu, 25 Feb 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)
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_data_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_data_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_data_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 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)
@@ -14,8 +14,8 @@
struct value_of_data_impl;
template <>
- struct value_of_data_impl<assoc_struct_iterator_tag>
- : value_of_impl<assoc_struct_iterator_tag>
+ struct value_of_data_impl<struct_iterator_tag>
+ : value_of_impl<struct_iterator_tag>
{};
}}}
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-02-25 15:30:37 EST (Thu, 25 Feb 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)
@@ -29,11 +29,6 @@
type;
};
};
-
- template <>
- struct value_of_impl<assoc_struct_iterator_tag>
- : value_of_impl<struct_iterator_tag>
- {};
}}}
#endif
Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct_named.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct_named.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct_named.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,4 +1,6 @@
/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2009-2010 Hartmut Kaiser
Copyright (c) 2010 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/advance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/advance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/advance_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/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-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/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-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/deref_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/distance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/distance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/distance_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/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-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/equal_to_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/equal_to_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/equal_to_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/next_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/prior_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/prior_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/prior_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_at_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_of_impl.hpp 2010-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Modified: sandbox/SOC/2009/fusion/boost/fusion/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-02-25 15:30:37 EST (Thu, 25 Feb 2010)
@@ -1,4 +1,3 @@
-
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
Copyright (c) 2009 Christopher Schmidt
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