diff options
Diffstat (limited to '3rdParty/Boost/src/boost/fusion/adapted')
25 files changed, 1297 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl.hpp new file mode 100644 index 0000000..739ff93 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl.hpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_MPL_31122005_1152) +#define BOOST_FUSION_MPL_31122005_1152 + +#include <boost/fusion/adapted/mpl/detail/begin_impl.hpp> +#include <boost/fusion/adapted/mpl/detail/end_impl.hpp> +#include <boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp> +#include <boost/fusion/adapted/mpl/detail/size_impl.hpp> +#include <boost/fusion/adapted/mpl/detail/value_at_impl.hpp> +#include <boost/fusion/adapted/mpl/detail/at_impl.hpp> +#include <boost/fusion/adapted/mpl/detail/has_key_impl.hpp> +#include <boost/fusion/adapted/mpl/detail/category_of_impl.hpp> +#include <boost/fusion/adapted/mpl/detail/is_view_impl.hpp> +#include <boost/fusion/adapted/mpl/detail/empty_impl.hpp> + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/at_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/at_impl.hpp new file mode 100644 index 0000000..99342d7 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/at_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_31122005_1642) +#define BOOST_FUSION_AT_IMPL_31122005_1642 + +#include <boost/mpl/at.hpp> + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template<typename Tag> + struct at_impl; + + template <> + struct at_impl<mpl_sequence_tag> + { + template <typename Sequence, typename N> + struct apply + { + typedef typename mpl::at<Sequence, N>::type type; + + static type + call(Sequence) + { + return type(); + } + }; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/begin_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/begin_impl.hpp new file mode 100644 index 0000000..ef274ba --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/begin_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209) +#define BOOST_FUSION_BEGIN_IMPL_31122005_1209 + +#include <boost/fusion/adapted/mpl/mpl_iterator.hpp> +#include <boost/mpl/begin.hpp> +#include <boost/type_traits/remove_const.hpp> + +namespace boost { namespace fusion { + + struct mpl_sequence_tag; + + namespace extension + { + template <typename Tag> + struct begin_impl; + + template <> + struct begin_impl<mpl_sequence_tag> + { + template <typename Sequence> + struct apply + { + typedef typename mpl::begin< + typename remove_const<Sequence>::type + >::type iterator; + typedef mpl_iterator<iterator> type; + + static type + call(Sequence) + { + return type(); + } + }; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/category_of_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/category_of_impl.hpp new file mode 100644 index 0000000..be43a56 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/category_of_impl.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141) +#define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141 + +#include <boost/fusion/support/detail/mpl_iterator_category.hpp> +#include <boost/mpl/begin_end.hpp> +#include <boost/mpl/is_sequence.hpp> +#include <boost/static_assert.hpp> + +namespace boost { namespace fusion { + + namespace detail + { + template <typename T> + struct mpl_sequence_category_of + { + // assumes T is an mpl sequence + // there should be no way this will ever be + // called where T is an mpl iterator + + BOOST_STATIC_ASSERT(mpl::is_sequence<T>::value); + typedef typename + mpl_iterator_category< + typename mpl::begin<T>::type::category + >::type + type; + }; + } + + struct mpl_sequence_tag; + + namespace extension + { + template<typename Tag> + struct category_of_impl; + + template<> + struct category_of_impl<mpl_sequence_tag> + { + template<typename T> + struct apply + : detail::mpl_sequence_category_of<T> + {}; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/empty_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/empty_impl.hpp new file mode 100644 index 0000000..f2eb22a --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/empty_impl.hpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_EMPTY_IMPL_31122005_1554) +#define BOOST_FUSION_EMPTY_IMPL_31122005_1554 + +#include <boost/mpl/empty.hpp> + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template <typename Sequence> + struct empty_impl; + + template <> + struct empty_impl<mpl_sequence_tag> + { + template <typename Sequence> + struct apply : mpl::empty<Sequence> {}; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/end_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/end_impl.hpp new file mode 100644 index 0000000..613ab63 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/end_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_END_IMPL_31122005_1237) +#define BOOST_FUSION_END_IMPL_31122005_1237 + +#include <boost/fusion/adapted/mpl/mpl_iterator.hpp> +#include <boost/mpl/end.hpp> +#include <boost/type_traits/add_const.hpp> + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template <typename Tag> + struct end_impl; + + template <> + struct end_impl<mpl_sequence_tag> + { + template <typename Sequence> + struct apply + { + typedef typename mpl::end< + typename remove_const<Sequence>::type + >::type iterator; + typedef mpl_iterator<iterator> type; + + static type + call(Sequence) + { + return type(); + } + }; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/has_key_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/has_key_impl.hpp new file mode 100644 index 0000000..b2b3253 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/has_key_impl.hpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_HAS_KEY_IMPL_31122005_1647) +#define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647 + +#include <boost/mpl/has_key.hpp> + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template <typename Tag> + struct has_key_impl; + + template <> + struct has_key_impl<mpl_sequence_tag> + { + template <typename Sequence, typename Key> + struct apply : mpl::has_key<Sequence, Key> {}; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp new file mode 100644 index 0000000..2c6c5f9 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505) +#define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505 + +#include <boost/mpl/bool.hpp> + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template<typename Tag> + struct is_sequence_impl; + + template<> + struct is_sequence_impl<mpl_sequence_tag> + { + template<typename T> + struct apply : mpl::true_ {}; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/is_view_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/is_view_impl.hpp new file mode 100644 index 0000000..bd9b7a4 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/is_view_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_IS_VIEW_IMPL_03202006_0048) +#define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048 + +#include <boost/mpl/bool.hpp> + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template<typename Tag> + struct is_view_impl; + + template<> + struct is_view_impl<mpl_sequence_tag> + { + template<typename T> + struct apply : mpl::true_ + {}; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/size_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/size_impl.hpp new file mode 100644 index 0000000..3816872 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/size_impl.hpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_SIZE_IMPL_31122005_1508) +#define BOOST_FUSION_SIZE_IMPL_31122005_1508 + +#include <boost/mpl/size.hpp> + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template<typename Tag> + struct size_impl; + + template <> + struct size_impl<mpl_sequence_tag> + { + template <typename Sequence> + struct apply : mpl::size<Sequence> {}; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/value_at_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/value_at_impl.hpp new file mode 100644 index 0000000..5560b82 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/detail/value_at_impl.hpp @@ -0,0 +1,31 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_VALUE_AT_IMPL_31122005_1621) +#define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621 + +#include <boost/mpl/at.hpp> + +namespace boost { namespace fusion +{ + struct mpl_sequence_tag; + + namespace extension + { + template <typename Tag> + struct value_at_impl; + + template <> + struct value_at_impl<mpl_sequence_tag> + { + template <typename Sequence, typename N> + struct apply : mpl::at<Sequence, N> {}; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/mpl/mpl_iterator.hpp b/3rdParty/Boost/src/boost/fusion/adapted/mpl/mpl_iterator.hpp new file mode 100644 index 0000000..7caa8ea --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/mpl/mpl_iterator.hpp @@ -0,0 +1,113 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(FUSION_MPL_ITERATOR_05052005_0731) +#define FUSION_MPL_ITERATOR_05052005_0731 + +#include <boost/fusion/support/detail/mpl_iterator_category.hpp> +#include <boost/fusion/iterator/iterator_facade.hpp> +#include <boost/type_traits/remove_const.hpp> +#include <boost/mpl/deref.hpp> +#include <boost/mpl/next.hpp> +#include <boost/mpl/prior.hpp> +#include <boost/mpl/advance.hpp> +#include <boost/mpl/distance.hpp> + +namespace boost { namespace fusion +{ + template <typename Iterator_> + struct mpl_iterator + : iterator_facade< + mpl_iterator<Iterator_> + , typename detail::mpl_iterator_category<typename Iterator_::category>::type + > + { + typedef typename remove_const<Iterator_>::type iterator_type; + + template <typename Iterator> + struct value_of : mpl::deref<typename Iterator::iterator_type> {}; + + template <typename Iterator> + struct deref + { + typedef typename mpl::deref< + typename Iterator::iterator_type>::type + type; + + static type + call(Iterator) + { + return type(); + } + }; + + template <typename Iterator> + struct next + { + typedef mpl_iterator< + typename mpl::next<typename Iterator::iterator_type>::type> + type; + + static type + call(Iterator) + { + return type(); + } + }; + + template <typename Iterator> + struct prior + { + typedef mpl_iterator< + typename mpl::prior<typename Iterator::iterator_type>::type> + type; + + static type + call(Iterator) + { + return type(); + } + }; + + template <typename Iterator, typename N> + struct advance + { + typedef mpl_iterator< + typename mpl::advance<typename Iterator::iterator_type, N>::type> + type; + + static type + call(Iterator const& /*i*/) + { + return type(); + } + }; + + template <typename I1, typename I2> + struct distance : + mpl::distance< + typename I1::iterator_type + , typename I2::iterator_type> + { + typedef typename + mpl::distance< + typename I1::iterator_type + , typename I2::iterator_type + >::type + type; + + static type + call(I1 const&, I2 const&) + { + return type(); + } + }; + }; +}} + +#endif + + diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/adapt_struct.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/adapt_struct.hpp new file mode 100644 index 0000000..f20533c --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/adapt_struct.hpp @@ -0,0 +1,71 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2009-2011 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_STRUCT_ADAPT_STRUCT_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP + +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/empty.hpp> +#include <boost/type_traits/add_reference.hpp> +#include <boost/type_traits/is_const.hpp> +#include <boost/type_traits/add_const.hpp> +#include <boost/type_traits/remove_const.hpp> + +#include <boost/fusion/adapted/struct/detail/extension.hpp> +#include <boost/fusion/adapted/struct/detail/adapt_base.hpp> +#include <boost/fusion/adapted/struct/detail/at_impl.hpp> +#include <boost/fusion/adapted/struct/detail/is_view_impl.hpp> +#include <boost/fusion/adapted/struct/detail/is_sequence_impl.hpp> +#include <boost/fusion/adapted/struct/detail/value_at_impl.hpp> +#include <boost/fusion/adapted/struct/detail/category_of_impl.hpp> +#include <boost/fusion/adapted/struct/detail/size_impl.hpp> +#include <boost/fusion/adapted/struct/detail/begin_impl.hpp> +#include <boost/fusion/adapted/struct/detail/end_impl.hpp> +#include <boost/fusion/adapted/struct/detail/value_of_impl.hpp> +#include <boost/fusion/adapted/struct/detail/deref_impl.hpp> + +#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0(X, Y) \ + ((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_1 +#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1(X, Y) \ + ((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_0 +#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0_END +#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1_END + +#define BOOST_FUSION_ADAPT_STRUCT_C(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE)\ + BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY,ATTRIBUTE,2) + +#define BOOST_FUSION_ADAPT_TPL_STRUCT(TEMPLATE_PARAMS_SEQ,NAME_SEQ, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (1)TEMPLATE_PARAMS_SEQ, \ + (1)NAME_SEQ, \ + struct_tag, \ + 0, \ + ((0,0)) BOOST_PP_CAT( \ + BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_STRUCT_C) + +#define BOOST_FUSION_ADAPT_STRUCT(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + struct_tag, \ + 0, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0(0,0)ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_STRUCT_C) + +#define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + struct_tag, \ + 1, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0(0,0)ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_STRUCT_C) + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/adapt_base.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/adapt_base.hpp new file mode 100644 index 0000000..1c8f040 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/adapt_base.hpp @@ -0,0 +1,245 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2011 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_STRUCT_DETAIL_ADAPT_BASE_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_HPP + +#include <boost/config.hpp> +#include <boost/fusion/support/tag_of_fwd.hpp> + +#include <boost/preprocessor/empty.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> +#include <boost/preprocessor/seq/for_each_i.hpp> +#include <boost/preprocessor/seq/enum.hpp> +#include <boost/preprocessor/seq/seq.hpp> +#include <boost/preprocessor/tuple/eat.hpp> +#include <boost/preprocessor/tuple/elem.hpp> +#include <boost/preprocessor/arithmetic/dec.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/tag.hpp> +#include <boost/mpl/eval_if.hpp> +#include <boost/mpl/identity.hpp> +#include <boost/type_traits/add_const.hpp> + +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME_TEMPLATE_PARAMS(SEQ) \ + BOOST_PP_SEQ_HEAD(SEQ)<BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_TAIL(SEQ))> \ + BOOST_PP_EMPTY() + +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(SEQ) \ + BOOST_PP_IF( \ + BOOST_PP_SEQ_HEAD(SEQ), \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME_TEMPLATE_PARAMS, \ + BOOST_PP_SEQ_HEAD)(BOOST_PP_SEQ_TAIL(SEQ)) + +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL_C(R, _, ELEM) \ + (typename ELEM) +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL(SEQ) \ + BOOST_PP_SEQ_ENUM( \ + BOOST_PP_SEQ_FOR_EACH( \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL_C, \ + _, \ + BOOST_PP_SEQ_TAIL(SEQ))) +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(SEQ) \ + BOOST_PP_IF( \ + BOOST_PP_SEQ_HEAD(SEQ), \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL, \ + BOOST_PP_TUPLE_EAT(1))(SEQ) + +#ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +# define BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION( \ + MODIFIER, TEMPLATE_PARAMS_SEQ, NAME_SEQ, TAG) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct tag_of< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) MODIFIER \ + , void \ + > \ + { \ + typedef TAG type; \ + }; +#else +# define BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION( \ + MODIFIER, TEMPLATE_PARAMS_SEQ, NAME_SEQ, TAG) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct tag_of<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) MODIFIER> \ + { \ + typedef TAG type; \ + }; +#endif + +#define BOOST_FUSION_ADAPT_STRUCT_BASE_UNPACK_AND_CALL(R,DATA,I,ATTRIBUTE) \ + BOOST_PP_TUPLE_ELEM(3,0,DATA)( \ + BOOST_PP_TUPLE_ELEM(3,1,DATA), \ + BOOST_PP_TUPLE_ELEM(3,2,DATA), \ + I, \ + ATTRIBUTE) + +#ifdef BOOST_MSVC +# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAM(R,_,ELEM) \ + typedef ELEM ELEM; +# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS_IMPL(SEQ) \ + BOOST_PP_SEQ_FOR_EACH( \ + BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAM, \ + _, \ + BOOST_PP_SEQ_TAIL(SEQ)) +# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS(SEQ) \ + BOOST_PP_IF( \ + BOOST_PP_SEQ_HEAD(SEQ), \ + BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS_IMPL, \ + BOOST_PP_TUPLE_EAT(1))(SEQ) +#else +# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS(SEQ) +#endif + +#define BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,PREFIX,ATTRIBUTE,ATTRIBUTE_TUPEL_SIZE) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct access::struct_member< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \ + , I \ + > \ + { \ + typedef \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \ + attribute_type; \ + BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + \ + typedef attribute_type type; \ + \ + template<typename Seq> \ + struct apply \ + { \ + typedef typename \ + add_reference< \ + typename mpl::eval_if< \ + is_const<Seq> \ + , add_const<attribute_type> \ + , mpl::identity<attribute_type> \ + >::type \ + >::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)); \ + } \ + }; + +#define BOOST_FUSION_ADAPT_STRUCT_BASE( \ + TEMPLATE_PARAMS_SEQ, \ + NAME_SEQ, \ + TAG, \ + IS_VIEW, \ + ATTRIBUTES_SEQ, \ + ATTRIBUTES_CALLBACK) \ + \ +namespace boost \ +{ \ + namespace fusion \ + { \ + namespace traits \ + { \ + BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION( \ + BOOST_PP_EMPTY(), TEMPLATE_PARAMS_SEQ, NAME_SEQ, TAG) \ + BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION( \ + const, TEMPLATE_PARAMS_SEQ, NAME_SEQ, TAG) \ + } \ + \ + namespace extension \ + { \ + BOOST_PP_IF( \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \ + BOOST_PP_SEQ_FOR_EACH_I_R, \ + BOOST_PP_TUPLE_EAT(4))( \ + 1, \ + BOOST_FUSION_ADAPT_STRUCT_BASE_UNPACK_AND_CALL, \ + (ATTRIBUTES_CALLBACK,TEMPLATE_PARAMS_SEQ,NAME_SEQ), \ + BOOST_PP_SEQ_TAIL(ATTRIBUTES_SEQ)) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_size<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)> \ + : mpl::int_<BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ))> \ + {}; \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_is_view< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \ + > \ + : mpl::BOOST_PP_IF(IS_VIEW,true_,false_) \ + {}; \ + } \ + } \ + \ + namespace mpl \ + { \ + template<typename> \ + struct sequence_tag; \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + > \ + struct sequence_tag<BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)> \ + { \ + typedef fusion::fusion_sequence_tag type; \ + }; \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + > \ + struct sequence_tag< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const \ + > \ + { \ + typedef fusion::fusion_sequence_tag type; \ + }; \ + } \ +} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/at_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/at_impl.hpp new file mode 100644 index 0000000..68fd241 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/at_impl.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2001-2011 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP + +#include <boost/mpl/int.hpp> + +namespace boost { namespace fusion { namespace extension +{ + template<typename> + struct at_impl; + + template <> + struct at_impl<struct_tag> + { + template <typename Seq, typename N> + struct apply + : access::struct_member< + typename remove_const<Seq>::type + , N::value + >::template apply<Seq> + {}; + }; + + template <> + struct at_impl<assoc_struct_tag> + : at_impl<struct_tag> + {}; +}}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/begin_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/begin_impl.hpp new file mode 100644 index 0000000..a7901fc --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/begin_impl.hpp @@ -0,0 +1,67 @@ +/*============================================================================= + Copyright (c) 2001-2011 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_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<struct_tag> + { + template <typename Seq> + struct apply + { + typedef + basic_iterator< + struct_iterator_tag + , random_access_traversal_tag + , Seq + , 0 + > + type; + + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; + + template <> + struct begin_impl<assoc_struct_tag> + { + template <typename Seq> + struct apply + { + typedef + basic_iterator< + struct_iterator_tag + , assoc_struct_category + , Seq + , 0 + > + type; + + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; +}}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/category_of_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/category_of_impl.hpp new file mode 100644 index 0000000..b98e824 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/category_of_impl.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2011 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP + +namespace boost { namespace fusion +{ + namespace extension + { + template<typename> + struct category_of_impl; + + template<> + struct category_of_impl<struct_tag> + { + template<typename Seq> + struct apply + { + typedef random_access_traversal_tag type; + }; + }; + + template<> + struct category_of_impl<assoc_struct_tag> + { + template<typename Seq> + struct apply + { + typedef assoc_struct_category type; + }; + }; + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/deref_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/deref_impl.hpp new file mode 100644 index 0000000..3f25efe --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/deref_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2009-2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEREF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEREF_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template <typename> + struct deref_impl; + + template <> + struct deref_impl<struct_iterator_tag> + { + template <typename It> + struct apply + { + typedef typename + access::struct_member< + typename remove_const<typename It::seq_type>::type + , It::index::value + >::template apply<typename It::seq_type> + impl; + + typedef typename impl::type type; + + static + type + call(It const& it) + { + return impl::call(*it.seq); + } + }; + }; +}}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/end_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/end_impl.hpp new file mode 100644 index 0000000..0d09092 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/end_impl.hpp @@ -0,0 +1,67 @@ +/*============================================================================= + Copyright (c) 2001-2011 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_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<struct_tag> + { + template <typename Seq> + struct apply + { + typedef + basic_iterator< + struct_iterator_tag + , random_access_traversal_tag + , Seq + , struct_size<typename remove_const<Seq>::type>::value + > + type; + + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; + + template <> + struct end_impl<assoc_struct_tag> + { + template <typename Seq> + struct apply + { + typedef + basic_iterator< + struct_iterator_tag + , assoc_struct_category + , Seq + , struct_size<typename remove_const<Seq>::type>::value + > + type; + + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; +}}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/extension.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/extension.hpp new file mode 100644 index 0000000..17edb89 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/extension.hpp @@ -0,0 +1,57 @@ +/*============================================================================= + Copyright (c) 2001-2007 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP + +#include <boost/fusion/support/category_of.hpp> + +namespace boost { namespace fusion +{ + struct struct_tag; + struct struct_iterator_tag; + struct assoc_struct_tag; + struct fusion_sequence_tag; + + struct assoc_struct_category + : random_access_traversal_tag, associative_tag + {}; + + namespace extension + { + struct no_such_member; + + struct access + { + template<typename Seq, int N> + struct struct_member; + + template<typename Seq, int N> + struct adt_attribute_access; + }; + + template <typename T, int N, bool Const> + struct adt_attribute_proxy; + + template<typename Seq, int N> + struct struct_member_name; + + template<typename Seq> + struct struct_size; + + template<typename Seq> + struct struct_is_view; + + template<typename Seq, int N> + struct struct_assoc_key; + + } +}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp new file mode 100644 index 0000000..c32222f --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2011 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP + +#include <boost/mpl/bool.hpp> + +namespace boost { namespace fusion { namespace extension +{ + template<typename> + struct is_sequence_impl; + + template<> + struct is_sequence_impl<struct_tag> + { + template<typename Seq> + struct apply + : mpl::true_ + {}; + }; + + template <> + struct is_sequence_impl<assoc_struct_tag> + : is_sequence_impl<struct_tag> + {}; +}}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/is_view_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/is_view_impl.hpp new file mode 100644 index 0000000..71d2840 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/is_view_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2011 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template<typename> + struct is_view_impl; + + template<> + struct is_view_impl<struct_tag> + { + template<typename Seq> + struct apply + : struct_is_view<typename remove_const<Seq>::type> + {}; + }; + + template <> + struct is_view_impl<assoc_struct_tag> + : is_view_impl<struct_tag> + {}; +}}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/size_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/size_impl.hpp new file mode 100644 index 0000000..baf411b --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/size_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2011 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_SIZE_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_SIZE_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template<typename> + struct size_impl; + + template <> + struct size_impl<struct_tag> + { + template <typename Seq> + struct apply + : struct_size<typename remove_const<Seq>::type> + {}; + }; + + template <> + struct size_impl<assoc_struct_tag> + : size_impl<struct_tag> + {}; +}}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/value_at_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/value_at_impl.hpp new file mode 100644 index 0000000..f820475 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/value_at_impl.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2011 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_AT_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_AT_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template<typename> + struct value_at_impl; + + template <> + struct value_at_impl<struct_tag> + { + template <typename Seq, typename N> + struct apply + : access::struct_member<typename remove_const<Seq>::type, N::value> + {}; + }; + + template <> + struct value_at_impl<assoc_struct_tag> + : value_at_impl<struct_tag> + {}; +}}} + +#endif diff --git a/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/value_of_impl.hpp b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/value_of_impl.hpp new file mode 100644 index 0000000..63dcbe5 --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/adapted/struct/detail/value_of_impl.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2009-2010 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_OF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_OF_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template <typename> + struct value_of_impl; + + template <> + struct value_of_impl<struct_iterator_tag> + { + template <typename It> + struct apply + : access::struct_member< + typename remove_const<typename It::seq_type>::type + , It::index::value + > + {}; + }; +}}} + +#endif |