From de50f65380dd625d926c0e04df0ed0298836b102 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Wed, 1 Apr 2015 19:08:52 +0800 Subject: [PATCH 01/30] fixes #11161 --- include/boost/fusion/support/config.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/support/config.hpp b/include/boost/fusion/support/config.hpp index 10dc29df..62bbe96c 100644 --- a/include/boost/fusion/support/config.hpp +++ b/include/boost/fusion/support/config.hpp @@ -2,7 +2,7 @@ Copyright (c) 2014 Eric Niebler Copyright (c) 2014 Kohei Takahashi - Distributed under the Boost Software License, Version 1.0. (See accompanying + 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_SUPPORT_CONFIG_01092014_1718) @@ -10,6 +10,7 @@ #include #include +#include #ifndef BOOST_FUSION_GPU_ENABLED #define BOOST_FUSION_GPU_ENABLED BOOST_GPU_ENABLED From 6e569bcdc34740f7137243837732183d63f65f26 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Tue, 14 Apr 2015 13:39:50 +0900 Subject: [PATCH 02/30] Fix workaround condition: || v.s. &&. see: https://github.com/boostorg/fusion/commit/01a2d6557ea65fb4c5ec6f3e50d3340c1c13629d#commitcomment-10697799 --- include/boost/fusion/support/config.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/fusion/support/config.hpp b/include/boost/fusion/support/config.hpp index 62bbe96c..1ce042a8 100644 --- a/include/boost/fusion/support/config.hpp +++ b/include/boost/fusion/support/config.hpp @@ -79,7 +79,7 @@ namespace boost { namespace fusion { namespace detail // - MSVC 10.0 implements iterator intrinsics; MSVC 13.0 implements LWG2408. #if (defined(BOOST_LIBSTDCXX_VERSION) && (BOOST_LIBSTDCXX_VERSION < 40500) && \ defined(BOOST_LIBSTDCXX11)) || \ - (defined(BOOST_MSVC) && (1600 <= BOOST_MSVC || BOOST_MSVC < 1900)) + (defined(BOOST_MSVC) && (1600 <= BOOST_MSVC && BOOST_MSVC < 1900)) # define BOOST_FUSION_WORKAROUND_FOR_LWG_2408 namespace std { From 83a08934c879e69d787d3078bfc146117673e81a Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sun, 19 Apr 2015 11:56:21 +0900 Subject: [PATCH 03/30] Prepare to merge --- .../generation/detail/pp_make_list.hpp | 115 ++++++ .../generation/detail/pp_make_set.hpp | 134 +++++++ .../generation/detail/pp_make_vector.hpp | 115 ++++++ .../generation/detail/pp_vector_tie.hpp | 100 +++++ .../fusion/container/generation/make_list.hpp | 115 ------ .../fusion/container/generation/make_set.hpp | 134 ------- .../container/generation/make_vector.hpp | 115 ------ .../container/generation/vector_tie.hpp | 100 ----- .../container/list/detail/cpp03/limits.hpp | 23 ++ .../container/list/detail/cpp03/list.hpp | 103 +++++ .../list/detail/cpp03/list_forward_ctor.hpp | 48 +++ .../container/list/detail/cpp03/list_fwd.hpp | 51 +++ .../list/detail/cpp03/list_to_cons.hpp | 76 ++++ .../list/detail/cpp03/list_to_cons_call.hpp | 44 +++ .../detail/{ => cpp03}/preprocessed/list.hpp | 0 .../{ => cpp03}/preprocessed/list10.hpp | 0 .../{ => cpp03}/preprocessed/list10_fwd.hpp | 0 .../{ => cpp03}/preprocessed/list20.hpp | 0 .../{ => cpp03}/preprocessed/list20_fwd.hpp | 0 .../{ => cpp03}/preprocessed/list30.hpp | 0 .../{ => cpp03}/preprocessed/list30_fwd.hpp | 0 .../{ => cpp03}/preprocessed/list40.hpp | 0 .../{ => cpp03}/preprocessed/list40_fwd.hpp | 0 .../{ => cpp03}/preprocessed/list50.hpp | 0 .../{ => cpp03}/preprocessed/list50_fwd.hpp | 0 .../{ => cpp03}/preprocessed/list_fwd.hpp | 0 .../{ => cpp03}/preprocessed/list_to_cons.hpp | 0 .../preprocessed/list_to_cons10.hpp | 0 .../preprocessed/list_to_cons20.hpp | 0 .../preprocessed/list_to_cons30.hpp | 0 .../preprocessed/list_to_cons40.hpp | 0 .../preprocessed/list_to_cons50.hpp | 0 .../list/detail/list_forward_ctor.hpp | 48 --- .../container/list/detail/list_to_cons.hpp | 76 ---- .../list/detail/list_to_cons_call.hpp | 44 --- .../boost/fusion/container/list/limits.hpp | 23 -- include/boost/fusion/container/list/list.hpp | 103 ----- .../boost/fusion/container/list/list_fwd.hpp | 51 --- .../fusion/container/set/detail/as_set.hpp | 139 ------- .../container/set/detail/cpp03/as_set.hpp | 139 +++++++ .../container/set/detail/cpp03/limits.hpp | 28 ++ .../{ => cpp03}/preprocessed/as_set.hpp | 0 .../{ => cpp03}/preprocessed/as_set10.hpp | 0 .../{ => cpp03}/preprocessed/as_set20.hpp | 0 .../{ => cpp03}/preprocessed/as_set30.hpp | 0 .../{ => cpp03}/preprocessed/as_set40.hpp | 0 .../{ => cpp03}/preprocessed/as_set50.hpp | 0 .../detail/{ => cpp03}/preprocessed/set.hpp | 0 .../detail/{ => cpp03}/preprocessed/set10.hpp | 0 .../{ => cpp03}/preprocessed/set10_fwd.hpp | 0 .../detail/{ => cpp03}/preprocessed/set20.hpp | 0 .../{ => cpp03}/preprocessed/set20_fwd.hpp | 0 .../detail/{ => cpp03}/preprocessed/set30.hpp | 0 .../{ => cpp03}/preprocessed/set30_fwd.hpp | 0 .../detail/{ => cpp03}/preprocessed/set40.hpp | 0 .../{ => cpp03}/preprocessed/set40_fwd.hpp | 0 .../detail/{ => cpp03}/preprocessed/set50.hpp | 0 .../{ => cpp03}/preprocessed/set50_fwd.hpp | 0 .../{ => cpp03}/preprocessed/set_fwd.hpp | 0 .../fusion/container/set/detail/cpp03/set.hpp | 106 ++++++ .../set/detail/cpp03/set_forward_ctor.hpp | 40 ++ .../container/set/detail/cpp03/set_fwd.hpp | 53 +++ .../container/set/detail/set_forward_ctor.hpp | 40 -- include/boost/fusion/container/set/limits.hpp | 28 -- include/boost/fusion/container/set/set.hpp | 106 ------ .../boost/fusion/container/set/set_fwd.hpp | 53 --- .../container/vector/detail/as_vector.hpp | 139 ------- .../vector/detail/cpp03/as_vector.hpp | 139 +++++++ .../container/vector/detail/cpp03/limits.hpp | 24 ++ .../{ => cpp03}/preprocessed/as_vector.hpp | 0 .../{ => cpp03}/preprocessed/as_vector10.hpp | 0 .../{ => cpp03}/preprocessed/as_vector20.hpp | 0 .../{ => cpp03}/preprocessed/as_vector30.hpp | 0 .../{ => cpp03}/preprocessed/as_vector40.hpp | 0 .../{ => cpp03}/preprocessed/as_vector50.hpp | 0 .../{ => cpp03}/preprocessed/vector.hpp | 0 .../{ => cpp03}/preprocessed/vector10.hpp | 0 .../{ => cpp03}/preprocessed/vector10_fwd.hpp | 0 .../{ => cpp03}/preprocessed/vector20.hpp | 0 .../{ => cpp03}/preprocessed/vector20_fwd.hpp | 0 .../{ => cpp03}/preprocessed/vector30.hpp | 0 .../{ => cpp03}/preprocessed/vector30_fwd.hpp | 0 .../{ => cpp03}/preprocessed/vector40.hpp | 0 .../{ => cpp03}/preprocessed/vector40_fwd.hpp | 0 .../{ => cpp03}/preprocessed/vector50.hpp | 0 .../{ => cpp03}/preprocessed/vector50_fwd.hpp | 0 .../preprocessed/vector_chooser.hpp | 0 .../preprocessed/vector_chooser10.hpp | 0 .../preprocessed/vector_chooser20.hpp | 0 .../preprocessed/vector_chooser30.hpp | 0 .../preprocessed/vector_chooser40.hpp | 0 .../preprocessed/vector_chooser50.hpp | 0 .../{ => cpp03}/preprocessed/vector_fwd.hpp | 0 .../{ => cpp03}/preprocessed/vvector10.hpp | 0 .../preprocessed/vvector10_fwd.hpp | 0 .../{ => cpp03}/preprocessed/vvector20.hpp | 0 .../preprocessed/vvector20_fwd.hpp | 0 .../{ => cpp03}/preprocessed/vvector30.hpp | 0 .../preprocessed/vvector30_fwd.hpp | 0 .../{ => cpp03}/preprocessed/vvector40.hpp | 0 .../preprocessed/vvector40_fwd.hpp | 0 .../{ => cpp03}/preprocessed/vvector50.hpp | 0 .../preprocessed/vvector50_fwd.hpp | 0 .../vector/detail/cpp03/value_at_impl.hpp | 34 ++ .../container/vector/detail/cpp03/vector.hpp | 257 +++++++++++++ .../vector/detail/cpp03/vector10.hpp | 105 ++++++ .../vector/detail/cpp03/vector10_fwd.hpp | 64 ++++ .../vector/detail/cpp03/vector20.hpp | 81 ++++ .../vector/detail/cpp03/vector20_fwd.hpp | 59 +++ .../vector/detail/cpp03/vector30.hpp | 80 ++++ .../vector/detail/cpp03/vector30_fwd.hpp | 59 +++ .../vector/detail/cpp03/vector40.hpp | 81 ++++ .../vector/detail/cpp03/vector40_fwd.hpp | 59 +++ .../vector/detail/cpp03/vector50.hpp | 80 ++++ .../vector/detail/cpp03/vector50_fwd.hpp | 59 +++ .../detail/cpp03/vector_forward_ctor.hpp | 75 ++++ .../vector/detail/cpp03/vector_fwd.hpp | 66 ++++ .../vector/detail/cpp03/vector_n.hpp | 354 ++++++++++++++++++ .../vector/detail/cpp03/vector_n_chooser.hpp | 107 ++++++ .../container/vector/detail/value_at_impl.hpp | 34 -- .../vector/detail/vector_forward_ctor.hpp | 75 ---- .../container/vector/detail/vector_n.hpp | 354 ------------------ .../vector/detail/vector_n_chooser.hpp | 107 ------ .../boost/fusion/container/vector/limits.hpp | 24 -- .../boost/fusion/container/vector/vector.hpp | 257 ------------- .../fusion/container/vector/vector10.hpp | 105 ------ .../fusion/container/vector/vector10_fwd.hpp | 64 ---- .../fusion/container/vector/vector20.hpp | 81 ---- .../fusion/container/vector/vector20_fwd.hpp | 59 --- .../fusion/container/vector/vector30.hpp | 80 ---- .../fusion/container/vector/vector30_fwd.hpp | 59 --- .../fusion/container/vector/vector40.hpp | 81 ---- .../fusion/container/vector/vector40_fwd.hpp | 59 --- .../fusion/container/vector/vector50.hpp | 80 ---- .../fusion/container/vector/vector50_fwd.hpp | 59 --- .../fusion/container/vector/vector_fwd.hpp | 66 ---- .../view/nview/detail/cpp03/nview_impl.hpp | 78 ++++ .../fusion/view/nview/detail/nview_impl.hpp | 78 ---- 138 files changed, 3036 insertions(+), 3036 deletions(-) create mode 100644 include/boost/fusion/container/generation/detail/pp_make_list.hpp create mode 100644 include/boost/fusion/container/generation/detail/pp_make_set.hpp create mode 100644 include/boost/fusion/container/generation/detail/pp_make_vector.hpp create mode 100644 include/boost/fusion/container/generation/detail/pp_vector_tie.hpp create mode 100644 include/boost/fusion/container/list/detail/cpp03/limits.hpp create mode 100644 include/boost/fusion/container/list/detail/cpp03/list.hpp create mode 100644 include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp create mode 100644 include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp create mode 100644 include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp create mode 100644 include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list10.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list10_fwd.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list20.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list20_fwd.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list30.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list30_fwd.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list40.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list40_fwd.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list50.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list50_fwd.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list_fwd.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list_to_cons.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list_to_cons10.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list_to_cons20.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list_to_cons30.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list_to_cons40.hpp (100%) rename include/boost/fusion/container/list/detail/{ => cpp03}/preprocessed/list_to_cons50.hpp (100%) create mode 100644 include/boost/fusion/container/set/detail/cpp03/as_set.hpp create mode 100644 include/boost/fusion/container/set/detail/cpp03/limits.hpp rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/as_set.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/as_set10.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/as_set20.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/as_set30.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/as_set40.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/as_set50.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set10.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set10_fwd.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set20.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set20_fwd.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set30.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set30_fwd.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set40.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set40_fwd.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set50.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set50_fwd.hpp (100%) rename include/boost/fusion/container/set/detail/{ => cpp03}/preprocessed/set_fwd.hpp (100%) create mode 100644 include/boost/fusion/container/set/detail/cpp03/set.hpp create mode 100644 include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp create mode 100644 include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/limits.hpp rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/as_vector.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/as_vector10.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/as_vector20.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/as_vector30.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/as_vector40.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/as_vector50.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector10.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector10_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector20.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector20_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector30.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector30_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector40.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector40_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector50.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector50_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector_chooser.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector_chooser10.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector_chooser20.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector_chooser30.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector_chooser40.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector_chooser50.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vector_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector10.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector10_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector20.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector20_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector30.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector30_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector40.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector40_fwd.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector50.hpp (100%) rename include/boost/fusion/container/vector/detail/{ => cpp03}/preprocessed/vvector50_fwd.hpp (100%) create mode 100644 include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector10.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector20.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector30.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector40.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector50.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector_n.hpp create mode 100644 include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp create mode 100644 include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp diff --git a/include/boost/fusion/container/generation/detail/pp_make_list.hpp b/include/boost/fusion/container/generation/detail/pp_make_list.hpp new file mode 100644 index 00000000..8cfc7e62 --- /dev/null +++ b/include/boost/fusion/container/generation/detail/pp_make_list.hpp @@ -0,0 +1,115 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_LIST_07192005_1239) +#define FUSION_MAKE_LIST_07192005_1239 + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_list" FUSION_MAX_LIST_SIZE_STR".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_LIST_SIZE, typename T, void_) + , typename Extra = void_ + > + struct make_list; + + template <> + struct make_list<> + { + typedef list<> type; + }; + } + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + inline list<> + make_list() + { + return list<>(); + } + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_AS_FUSION_ELEMENT + +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + #define TEXT(z, n, text) , text + struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) > + #undef TEXT + { + typedef list type; + }; + } + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + inline list + make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg)) + { + return list( + BOOST_PP_ENUM_PARAMS(N, arg)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/container/generation/detail/pp_make_set.hpp b/include/boost/fusion/container/generation/detail/pp_make_set.hpp new file mode 100644 index 00000000..0bde4a9c --- /dev/null +++ b/include/boost/fusion/container/generation/detail/pp_make_set.hpp @@ -0,0 +1,134 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_SET_09162005_1125) +#define FUSION_MAKE_SET_09162005_1125 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_set" FUSION_MAX_SET_SIZE_STR".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#define FUSION_HASH # +#endif + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + , typename Extra = void_ + > + struct make_set; + + template <> + struct make_set<> + { + typedef set<> type; + }; + } + + // XXX: +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +FUSION_HASH else + BOOST_CONSTEXPR +FUSION_HASH endif +#else +#if defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +#else + BOOST_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED + inline set<> + make_set() + { + return set<>(); + } + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_ELEMENT +#undef BOOST_FUSION_AS_ELEMENT + +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#undef FUSION_HASH +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + #define TEXT(z, n, text) , text + struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) > + #undef TEXT + { + typedef set type; + }; + } + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + inline set + make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg)) + { + return set( + BOOST_PP_ENUM_PARAMS(N, arg)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/container/generation/detail/pp_make_vector.hpp b/include/boost/fusion/container/generation/detail/pp_make_vector.hpp new file mode 100644 index 00000000..57cd9b10 --- /dev/null +++ b/include/boost/fusion/container/generation/detail/pp_make_vector.hpp @@ -0,0 +1,115 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_VECTOR_07162005_0243) +#define FUSION_MAKE_VECTOR_07162005_0243 + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_vector" FUSION_MAX_VECTOR_SIZE_STR".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + , typename Extra = void_ + > + struct make_vector; + + template <> + struct make_vector<> + { + typedef vector0<> type; + }; + } + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + inline vector0<> + make_vector() + { + return vector0<>(); + } + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_AS_FUSION_ELEMENT + +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + #define TEXT(z, n, text) , text + struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > + #undef TEXT + { + typedef BOOST_PP_CAT(vector, N) type; + }; + } + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + inline BOOST_PP_CAT(vector, N) + make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg)) + { + return BOOST_PP_CAT(vector, N)( + BOOST_PP_ENUM_PARAMS(N, arg)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/container/generation/detail/pp_vector_tie.hpp b/include/boost/fusion/container/generation/detail/pp_vector_tie.hpp new file mode 100644 index 00000000..28efa3bd --- /dev/null +++ b/include/boost/fusion/container/generation/detail/pp_vector_tie.hpp @@ -0,0 +1,100 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_VECTOR_TIE_07192005_1242) +#define FUSION_VECTOR_TIE_07192005_1242 + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector_tie" FUSION_MAX_VECTOR_SIZE_STR".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + , typename Extra = void_ + > + struct vector_tie; + } + +#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_REF +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + #define TEXT(z, n, text) , text + struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > + #undef TEXT + { + typedef vector type; + }; + } + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + inline vector + vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & arg)) + { + return vector( + BOOST_PP_ENUM_PARAMS(N, arg)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/container/generation/make_list.hpp b/include/boost/fusion/container/generation/make_list.hpp index 8cfc7e62..e69de29b 100644 --- a/include/boost/fusion/container/generation/make_list.hpp +++ b/include/boost/fusion/container/generation/make_list.hpp @@ -1,115 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_LIST_07192005_1239) -#define FUSION_MAKE_LIST_07192005_1239 - -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_list" FUSION_MAX_LIST_SIZE_STR".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_LIST_SIZE, typename T, void_) - , typename Extra = void_ - > - struct make_list; - - template <> - struct make_list<> - { - typedef list<> type; - }; - } - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline list<> - make_list() - { - return list<>(); - } - -#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ - typename detail::as_fusion_element::type - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_AS_FUSION_ELEMENT - -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template - #define TEXT(z, n, text) , text - struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) > - #undef TEXT - { - typedef list type; - }; - } - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline list - make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg)) - { - return list( - BOOST_PP_ENUM_PARAMS(N, arg)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/container/generation/make_set.hpp b/include/boost/fusion/container/generation/make_set.hpp index 0bde4a9c..e69de29b 100644 --- a/include/boost/fusion/container/generation/make_set.hpp +++ b/include/boost/fusion/container/generation/make_set.hpp @@ -1,134 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_SET_09162005_1125) -#define FUSION_MAKE_SET_09162005_1125 - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_set" FUSION_MAX_SET_SIZE_STR".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#define FUSION_HASH # -#endif - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - , typename Extra = void_ - > - struct make_set; - - template <> - struct make_set<> - { - typedef set<> type; - }; - } - - // XXX: -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -FUSION_HASH else - BOOST_CONSTEXPR -FUSION_HASH endif -#else -#if defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -#else - BOOST_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED - inline set<> - make_set() - { - return set<>(); - } - -#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ - typename detail::as_fusion_element::type - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_ELEMENT -#undef BOOST_FUSION_AS_ELEMENT - -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#undef FUSION_HASH -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template - #define TEXT(z, n, text) , text - struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) > - #undef TEXT - { - typedef set type; - }; - } - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline set - make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg)) - { - return set( - BOOST_PP_ENUM_PARAMS(N, arg)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/container/generation/make_vector.hpp b/include/boost/fusion/container/generation/make_vector.hpp index 57cd9b10..e69de29b 100644 --- a/include/boost/fusion/container/generation/make_vector.hpp +++ b/include/boost/fusion/container/generation/make_vector.hpp @@ -1,115 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_VECTOR_07162005_0243) -#define FUSION_MAKE_VECTOR_07162005_0243 - -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_vector" FUSION_MAX_VECTOR_SIZE_STR".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - , typename Extra = void_ - > - struct make_vector; - - template <> - struct make_vector<> - { - typedef vector0<> type; - }; - } - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline vector0<> - make_vector() - { - return vector0<>(); - } - -#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ - typename detail::as_fusion_element::type - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_AS_FUSION_ELEMENT - -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template - #define TEXT(z, n, text) , text - struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > - #undef TEXT - { - typedef BOOST_PP_CAT(vector, N) type; - }; - } - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline BOOST_PP_CAT(vector, N) - make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg)) - { - return BOOST_PP_CAT(vector, N)( - BOOST_PP_ENUM_PARAMS(N, arg)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/container/generation/vector_tie.hpp b/include/boost/fusion/container/generation/vector_tie.hpp index 28efa3bd..e69de29b 100644 --- a/include/boost/fusion/container/generation/vector_tie.hpp +++ b/include/boost/fusion/container/generation/vector_tie.hpp @@ -1,100 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_VECTOR_TIE_07192005_1242) -#define FUSION_VECTOR_TIE_07192005_1242 - -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector_tie" FUSION_MAX_VECTOR_SIZE_STR".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct void_; - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - , typename Extra = void_ - > - struct vector_tie; - } - -#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_REF -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template - #define TEXT(z, n, text) , text - struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > - #undef TEXT - { - typedef vector type; - }; - } - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline vector - vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & arg)) - { - return vector( - BOOST_PP_ENUM_PARAMS(N, arg)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/container/list/detail/cpp03/limits.hpp b/include/boost/fusion/container/list/detail/cpp03/limits.hpp new file mode 100644 index 00000000..cc64ad72 --- /dev/null +++ b/include/boost/fusion/container/list/detail/cpp03/limits.hpp @@ -0,0 +1,23 @@ +/*============================================================================= + 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_LIST_LIMITS_07172005_0112) +#define FUSION_LIST_LIMITS_07172005_0112 + +#include + +#if !defined(FUSION_MAX_LIST_SIZE) +# define FUSION_MAX_LIST_SIZE 10 +#else +# if FUSION_MAX_LIST_SIZE < 3 +# undef FUSION_MAX_LIST_SIZE +# define FUSION_MAX_LIST_SIZE 10 +# endif +#endif + +#define FUSION_MAX_LIST_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_LIST_SIZE)) + +#endif diff --git a/include/boost/fusion/container/list/detail/cpp03/list.hpp b/include/boost/fusion/container/list/detail/cpp03/list.hpp new file mode 100644 index 00000000..5b584131 --- /dev/null +++ b/include/boost/fusion/container/list/detail/cpp03/list.hpp @@ -0,0 +1,103 @@ +/*============================================================================= + 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_LIST_07172005_1153) +#define FUSION_LIST_07172005_1153 + +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list" FUSION_MAX_LIST_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct nil_; + struct void_; + + template + struct list + : detail::list_to_cons::type + { + private: + typedef + detail::list_to_cons + list_to_cons; + + public: + typedef typename list_to_cons::type inherited_type; + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + list() + : inherited_type() {} + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + list(list const& rhs) + : inherited_type(rhs) {} + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + list(Sequence const& rhs + , typename boost::enable_if >::type* = 0) + : inherited_type(rhs) {} + + // Expand a couple of forwarding constructors for arguments + // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple: + // + // list( + // typename detail::call_param::type arg0 + // , typename detail::call_param::type arg1) + // : inherited_type(list_to_cons::call(arg0, arg1)) {} + #include + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + list& + operator=(list const& rhs) + { + inherited_type::operator=(rhs); + return *this; + } + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename boost::enable_if, list&>::type + operator=(Sequence const& rhs) + { + inherited_type::operator=(rhs); + return *this; + } + }; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp b/include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp new file mode 100644 index 00000000..a5c8aa66 --- /dev/null +++ b/include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp @@ -0,0 +1,48 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_LIST_FORWARD_CTOR_07172005_0113) +#define FUSION_LIST_FORWARD_CTOR_07172005_0113 + +#include +#include +#include +#include +#include + +#define FUSION_LIST_CTOR_MAKE_CONS(z, n, type) tie_cons(BOOST_PP_CAT(_, n) +#define FUSION_LIST_CL_PAREN(z, n, type) ) + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) +#include BOOST_PP_ITERATE() + +#undef FUSION_LIST_CTOR_MAKE_CONS +#undef FUSION_LIST_CL_PAREN + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED +#if N == 1 + explicit +#endif + list(BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type arg)) + : inherited_type(list_to_cons::call(BOOST_PP_ENUM_PARAMS(N, arg))) + {} + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp b/include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp new file mode 100644 index 00000000..d827d283 --- /dev/null +++ b/include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + 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_LIST_FORWARD_07172005_0224) +#define FUSION_LIST_FORWARD_07172005_0224 + +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list" FUSION_MAX_LIST_SIZE_STR "_fwd.hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_LIST_SIZE, typename T, void_) + > + struct list; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp b/include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp new file mode 100644 index 00000000..bc871863 --- /dev/null +++ b/include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp @@ -0,0 +1,76 @@ +/*============================================================================= + 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_LIST_TO_CONS_07172005_1041) +#define FUSION_LIST_TO_CONS_07172005_1041 + +#include +#include +#include +#include +#include +#include +#include + +#define FUSION_VOID(z, n, _) void_ + +namespace boost { namespace fusion +{ + struct nil_; + struct void_; +}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/list_to_cons" FUSION_MAX_LIST_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion { namespace detail +{ + template + struct list_to_cons + { + typedef T0 head_type; + typedef list_to_cons< + BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_LIST_SIZE, T), void_> + tail_list_to_cons; + typedef typename tail_list_to_cons::type tail_type; + + typedef cons type; + + #include + }; + + template <> + struct list_to_cons + { + typedef nil_ type; + }; +}}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#undef FUSION_VOID +#endif diff --git a/include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp b/include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp new file mode 100644 index 00000000..fbae5800 --- /dev/null +++ b/include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_LIST_TO_CONS_CALL_07192005_0138) +#define FUSION_LIST_TO_CONS_CALL_07192005_0138 + +#include +#include +#include + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) +#include BOOST_PP_ITERATE() + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#define N BOOST_PP_ITERATION() + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static type + call(BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type arg)) + { + return type(arg0 +#if N > 1 + , tail_list_to_cons::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, arg))); +#else + ); +#endif + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/container/list/detail/preprocessed/list.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list10.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list10.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list10_fwd.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list10_fwd.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list10_fwd.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list20.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list20.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list20_fwd.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list20_fwd.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list20_fwd.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list30.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list30.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list30_fwd.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list30_fwd.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list30_fwd.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list40.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list40.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list40_fwd.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list40_fwd.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list40_fwd.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list50.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list50.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list50_fwd.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list50_fwd.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list50_fwd.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list_fwd.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list_fwd.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list_to_cons.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list_to_cons.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons10.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons20.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons30.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons40.hpp diff --git a/include/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp similarity index 100% rename from include/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp rename to include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons50.hpp diff --git a/include/boost/fusion/container/list/detail/list_forward_ctor.hpp b/include/boost/fusion/container/list/detail/list_forward_ctor.hpp index a5c8aa66..e69de29b 100644 --- a/include/boost/fusion/container/list/detail/list_forward_ctor.hpp +++ b/include/boost/fusion/container/list/detail/list_forward_ctor.hpp @@ -1,48 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_LIST_FORWARD_CTOR_07172005_0113) -#define FUSION_LIST_FORWARD_CTOR_07172005_0113 - -#include -#include -#include -#include -#include - -#define FUSION_LIST_CTOR_MAKE_CONS(z, n, type) tie_cons(BOOST_PP_CAT(_, n) -#define FUSION_LIST_CL_PAREN(z, n, type) ) - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) -#include BOOST_PP_ITERATE() - -#undef FUSION_LIST_CTOR_MAKE_CONS -#undef FUSION_LIST_CL_PAREN - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#define N BOOST_PP_ITERATION() - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED -#if N == 1 - explicit -#endif - list(BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type arg)) - : inherited_type(list_to_cons::call(BOOST_PP_ENUM_PARAMS(N, arg))) - {} - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/container/list/detail/list_to_cons.hpp b/include/boost/fusion/container/list/detail/list_to_cons.hpp index bc871863..e69de29b 100644 --- a/include/boost/fusion/container/list/detail/list_to_cons.hpp +++ b/include/boost/fusion/container/list/detail/list_to_cons.hpp @@ -1,76 +0,0 @@ -/*============================================================================= - 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_LIST_TO_CONS_07172005_1041) -#define FUSION_LIST_TO_CONS_07172005_1041 - -#include -#include -#include -#include -#include -#include -#include - -#define FUSION_VOID(z, n, _) void_ - -namespace boost { namespace fusion -{ - struct nil_; - struct void_; -}} - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "preprocessed/list_to_cons" FUSION_MAX_LIST_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion { namespace detail -{ - template - struct list_to_cons - { - typedef T0 head_type; - typedef list_to_cons< - BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_LIST_SIZE, T), void_> - tail_list_to_cons; - typedef typename tail_list_to_cons::type tail_type; - - typedef cons type; - - #include - }; - - template <> - struct list_to_cons - { - typedef nil_ type; - }; -}}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#undef FUSION_VOID -#endif diff --git a/include/boost/fusion/container/list/detail/list_to_cons_call.hpp b/include/boost/fusion/container/list/detail/list_to_cons_call.hpp index fbae5800..e69de29b 100644 --- a/include/boost/fusion/container/list/detail/list_to_cons_call.hpp +++ b/include/boost/fusion/container/list/detail/list_to_cons_call.hpp @@ -1,44 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_LIST_TO_CONS_CALL_07192005_0138) -#define FUSION_LIST_TO_CONS_CALL_07192005_0138 - -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) -#include BOOST_PP_ITERATE() - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#define N BOOST_PP_ITERATION() - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static type - call(BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type arg)) - { - return type(arg0 -#if N > 1 - , tail_list_to_cons::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, arg))); -#else - ); -#endif - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/container/list/limits.hpp b/include/boost/fusion/container/list/limits.hpp index cc64ad72..e69de29b 100644 --- a/include/boost/fusion/container/list/limits.hpp +++ b/include/boost/fusion/container/list/limits.hpp @@ -1,23 +0,0 @@ -/*============================================================================= - 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_LIST_LIMITS_07172005_0112) -#define FUSION_LIST_LIMITS_07172005_0112 - -#include - -#if !defined(FUSION_MAX_LIST_SIZE) -# define FUSION_MAX_LIST_SIZE 10 -#else -# if FUSION_MAX_LIST_SIZE < 3 -# undef FUSION_MAX_LIST_SIZE -# define FUSION_MAX_LIST_SIZE 10 -# endif -#endif - -#define FUSION_MAX_LIST_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_LIST_SIZE)) - -#endif diff --git a/include/boost/fusion/container/list/list.hpp b/include/boost/fusion/container/list/list.hpp index 5b584131..e69de29b 100644 --- a/include/boost/fusion/container/list/list.hpp +++ b/include/boost/fusion/container/list/list.hpp @@ -1,103 +0,0 @@ -/*============================================================================= - 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_LIST_07172005_1153) -#define FUSION_LIST_07172005_1153 - -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list" FUSION_MAX_LIST_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct nil_; - struct void_; - - template - struct list - : detail::list_to_cons::type - { - private: - typedef - detail::list_to_cons - list_to_cons; - - public: - typedef typename list_to_cons::type inherited_type; - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - list() - : inherited_type() {} - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - list(list const& rhs) - : inherited_type(rhs) {} - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - list(Sequence const& rhs - , typename boost::enable_if >::type* = 0) - : inherited_type(rhs) {} - - // Expand a couple of forwarding constructors for arguments - // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple: - // - // list( - // typename detail::call_param::type arg0 - // , typename detail::call_param::type arg1) - // : inherited_type(list_to_cons::call(arg0, arg1)) {} - #include - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - list& - operator=(list const& rhs) - { - inherited_type::operator=(rhs); - return *this; - } - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename boost::enable_if, list&>::type - operator=(Sequence const& rhs) - { - inherited_type::operator=(rhs); - return *this; - } - }; -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif diff --git a/include/boost/fusion/container/list/list_fwd.hpp b/include/boost/fusion/container/list/list_fwd.hpp index d827d283..e69de29b 100644 --- a/include/boost/fusion/container/list/list_fwd.hpp +++ b/include/boost/fusion/container/list/list_fwd.hpp @@ -1,51 +0,0 @@ -/*============================================================================= - 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_LIST_FORWARD_07172005_0224) -#define FUSION_LIST_FORWARD_07172005_0224 - -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list" FUSION_MAX_LIST_SIZE_STR "_fwd.hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct void_; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_LIST_SIZE, typename T, void_) - > - struct list; -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif diff --git a/include/boost/fusion/container/set/detail/as_set.hpp b/include/boost/fusion/container/set/detail/as_set.hpp index a41498a3..e69de29b 100644 --- a/include/boost/fusion/container/set/detail/as_set.hpp +++ b/include/boost/fusion/container/set/detail/as_set.hpp @@ -1,139 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_AS_SET_0932005_1341) -#define FUSION_AS_SET_0932005_1341 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ -BOOST_FUSION_BARRIER_BEGIN - - template - struct as_set; - - template <> - struct as_set<0> - { - template - struct apply - { - typedef set<> type; - }; - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static typename apply::type - call(Iterator) - { - return set<>(); - } - }; - -BOOST_FUSION_BARRIER_END -}}} - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_set" FUSION_MAX_SET_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion { namespace detail -{ -BOOST_FUSION_BARRIER_BEGIN - -#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::next::type \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)); - -#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ - typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ - BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); - -#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::value_of::type \ - BOOST_PP_CAT(T, n); - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_NEXT_ITERATOR -#undef BOOST_FUSION_NEXT_CALL_ITERATOR -#undef BOOST_FUSION_VALUE_OF_ITERATOR - -BOOST_FUSION_BARRIER_END -}}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template <> - struct as_set - { - template - struct apply - { - BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) - BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) - typedef set type; - }; - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static typename apply::type - call(Iterator const& i0) - { - typedef apply gen; - typedef typename gen::type result; - BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) - return result(BOOST_PP_ENUM_PARAMS(N, *i)); - } - }; - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/container/set/detail/cpp03/as_set.hpp b/include/boost/fusion/container/set/detail/cpp03/as_set.hpp new file mode 100644 index 00000000..a41498a3 --- /dev/null +++ b/include/boost/fusion/container/set/detail/cpp03/as_set.hpp @@ -0,0 +1,139 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_AS_SET_0932005_1341) +#define FUSION_AS_SET_0932005_1341 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ +BOOST_FUSION_BARRIER_BEGIN + + template + struct as_set; + + template <> + struct as_set<0> + { + template + struct apply + { + typedef set<> type; + }; + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static typename apply::type + call(Iterator) + { + return set<>(); + } + }; + +BOOST_FUSION_BARRIER_END +}}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_set" FUSION_MAX_SET_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion { namespace detail +{ +BOOST_FUSION_BARRIER_BEGIN + +#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::next::type \ + BOOST_PP_CAT(I, BOOST_PP_INC(n)); + +#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ + typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ + BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); + +#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::value_of::type \ + BOOST_PP_CAT(T, n); + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_NEXT_ITERATOR +#undef BOOST_FUSION_NEXT_CALL_ITERATOR +#undef BOOST_FUSION_VALUE_OF_ITERATOR + +BOOST_FUSION_BARRIER_END +}}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template <> + struct as_set + { + template + struct apply + { + BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) + BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) + typedef set type; + }; + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static typename apply::type + call(Iterator const& i0) + { + typedef apply gen; + typedef typename gen::type result; + BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) + return result(BOOST_PP_ENUM_PARAMS(N, *i)); + } + }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/container/set/detail/cpp03/limits.hpp b/include/boost/fusion/container/set/detail/cpp03/limits.hpp new file mode 100644 index 00000000..adfecdbd --- /dev/null +++ b/include/boost/fusion/container/set/detail/cpp03/limits.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + 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_SET_LIMITS_09162005_1103) +#define FUSION_SET_LIMITS_09162005_1103 + +#include +#include + +#if !defined(FUSION_MAX_SET_SIZE) +# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE +#else +# if FUSION_MAX_SET_SIZE < 3 +# undef FUSION_MAX_SET_SIZE +# if (FUSION_MAX_VECTOR_SIZE > 10) +# define FUSION_MAX_SET_SIZE 10 +# else +# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE +# endif +# endif +#endif + +#define FUSION_MAX_SET_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_SET_SIZE)) + +#endif diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/as_set.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set10.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/as_set10.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set10.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set20.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/as_set20.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set20.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set30.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/as_set30.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set30.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set40.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/as_set40.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set40.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/as_set50.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/as_set50.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set50.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set10.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set10.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set10.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set10_fwd.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set10_fwd.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set10_fwd.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set20.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set20.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set20.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set20_fwd.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set20_fwd.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set20_fwd.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set30.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set30.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set30.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set30_fwd.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set30_fwd.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set30_fwd.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set40.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set40.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set40.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set40_fwd.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set40_fwd.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set40_fwd.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set50.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set50.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set50.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set50_fwd.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set50_fwd.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set50_fwd.hpp diff --git a/include/boost/fusion/container/set/detail/preprocessed/set_fwd.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp similarity index 100% rename from include/boost/fusion/container/set/detail/preprocessed/set_fwd.hpp rename to include/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp diff --git a/include/boost/fusion/container/set/detail/cpp03/set.hpp b/include/boost/fusion/container/set/detail/cpp03/set.hpp new file mode 100644 index 00000000..65a080b0 --- /dev/null +++ b/include/boost/fusion/container/set/detail/cpp03/set.hpp @@ -0,0 +1,106 @@ +/*============================================================================= + 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_SET_09162005_1104) +#define FUSION_SET_09162005_1104 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/set" FUSION_MAX_SET_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + struct fusion_sequence_tag; + + template + struct set : sequence_base > + { + struct category : forward_traversal_tag, associative_tag {}; + + typedef set_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + + typedef vector< + BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)> + storage_type; + + typedef typename storage_type::size size; + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + set() + : data() {} + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + set(Sequence const& rhs + , typename boost::enable_if >::type* = 0) + : data(rhs) {} + + #include + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + set& + operator=(T const& rhs) + { + data = rhs; + return *this; + } + + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + storage_type& get_data() { return data; } + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + storage_type const& get_data() const { return data; } + + private: + + storage_type data; + }; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp b/include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp new file mode 100644 index 00000000..5d396104 --- /dev/null +++ b/include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_SET_FORWARD_CTOR_09162005_1115) +#define FUSION_SET_FORWARD_CTOR_09162005_1115 + +#include +#include +#include + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) +#include BOOST_PP_ITERATE() + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED +#if N == 1 + explicit +#endif + set(BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type arg)) + : data(BOOST_PP_ENUM_PARAMS(N, arg)) {} + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp b/include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp new file mode 100644 index 00000000..2de3db6d --- /dev/null +++ b/include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp @@ -0,0 +1,53 @@ +/*============================================================================= + 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_SET_FORWARD_09162005_1102) +#define FUSION_SET_FORWARD_09162005_1102 + +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/set" FUSION_MAX_SET_SIZE_STR "_fwd.hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + struct set_tag; + struct set_iterator_tag; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_SET_SIZE, typename T, void_) + > + struct set; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/include/boost/fusion/container/set/detail/set_forward_ctor.hpp b/include/boost/fusion/container/set/detail/set_forward_ctor.hpp index 5d396104..e69de29b 100644 --- a/include/boost/fusion/container/set/detail/set_forward_ctor.hpp +++ b/include/boost/fusion/container/set/detail/set_forward_ctor.hpp @@ -1,40 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_SET_FORWARD_CTOR_09162005_1115) -#define FUSION_SET_FORWARD_CTOR_09162005_1115 - -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) -#include BOOST_PP_ITERATE() - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED -#if N == 1 - explicit -#endif - set(BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type arg)) - : data(BOOST_PP_ENUM_PARAMS(N, arg)) {} - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/container/set/limits.hpp b/include/boost/fusion/container/set/limits.hpp index adfecdbd..e69de29b 100644 --- a/include/boost/fusion/container/set/limits.hpp +++ b/include/boost/fusion/container/set/limits.hpp @@ -1,28 +0,0 @@ -/*============================================================================= - 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_SET_LIMITS_09162005_1103) -#define FUSION_SET_LIMITS_09162005_1103 - -#include -#include - -#if !defined(FUSION_MAX_SET_SIZE) -# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE -#else -# if FUSION_MAX_SET_SIZE < 3 -# undef FUSION_MAX_SET_SIZE -# if (FUSION_MAX_VECTOR_SIZE > 10) -# define FUSION_MAX_SET_SIZE 10 -# else -# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE -# endif -# endif -#endif - -#define FUSION_MAX_SET_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_SET_SIZE)) - -#endif diff --git a/include/boost/fusion/container/set/set.hpp b/include/boost/fusion/container/set/set.hpp index 65a080b0..e69de29b 100644 --- a/include/boost/fusion/container/set/set.hpp +++ b/include/boost/fusion/container/set/set.hpp @@ -1,106 +0,0 @@ -/*============================================================================= - 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_SET_09162005_1104) -#define FUSION_SET_09162005_1104 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/set" FUSION_MAX_SET_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct void_; - struct fusion_sequence_tag; - - template - struct set : sequence_base > - { - struct category : forward_traversal_tag, associative_tag {}; - - typedef set_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - - typedef vector< - BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)> - storage_type; - - typedef typename storage_type::size size; - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - set() - : data() {} - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - set(Sequence const& rhs - , typename boost::enable_if >::type* = 0) - : data(rhs) {} - - #include - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - set& - operator=(T const& rhs) - { - data = rhs; - return *this; - } - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - storage_type& get_data() { return data; } - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - storage_type const& get_data() const { return data; } - - private: - - storage_type data; - }; -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif diff --git a/include/boost/fusion/container/set/set_fwd.hpp b/include/boost/fusion/container/set/set_fwd.hpp index 2de3db6d..e69de29b 100644 --- a/include/boost/fusion/container/set/set_fwd.hpp +++ b/include/boost/fusion/container/set/set_fwd.hpp @@ -1,53 +0,0 @@ -/*============================================================================= - 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_SET_FORWARD_09162005_1102) -#define FUSION_SET_FORWARD_09162005_1102 - -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/set" FUSION_MAX_SET_SIZE_STR "_fwd.hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct void_; - struct set_tag; - struct set_iterator_tag; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_SET_SIZE, typename T, void_) - > - struct set; -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif diff --git a/include/boost/fusion/container/vector/detail/as_vector.hpp b/include/boost/fusion/container/vector/detail/as_vector.hpp index b5f5e2d0..e69de29b 100644 --- a/include/boost/fusion/container/vector/detail/as_vector.hpp +++ b/include/boost/fusion/container/vector/detail/as_vector.hpp @@ -1,139 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_AS_VECTOR_09222005_0950) -#define FUSION_AS_VECTOR_09222005_0950 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion { namespace detail -{ -BOOST_FUSION_BARRIER_BEGIN - - template - struct as_vector; - - template <> - struct as_vector<0> - { - template - struct apply - { - typedef vector0<> type; - }; - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static typename apply::type - call(Iterator) - { - return vector0<>(); - } - }; - -BOOST_FUSION_BARRIER_END -}}} - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_vector" FUSION_MAX_VECTOR_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion { namespace detail -{ -BOOST_FUSION_BARRIER_BEGIN - -#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::next::type \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)); - -#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ - typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ - BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); - -#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::value_of::type \ - BOOST_PP_CAT(T, n); - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_NEXT_ITERATOR -#undef BOOST_FUSION_NEXT_CALL_ITERATOR -#undef BOOST_FUSION_VALUE_OF_ITERATOR - -BOOST_FUSION_BARRIER_END -}}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template <> - struct as_vector - { - template - struct apply - { - BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) - BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) - typedef BOOST_PP_CAT(vector, N) type; - }; - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static typename apply::type - call(Iterator const& i0) - { - typedef apply gen; - typedef typename gen::type result; - BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) - return result(BOOST_PP_ENUM_PARAMS(N, *i)); - } - }; - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp new file mode 100644 index 00000000..b5f5e2d0 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp @@ -0,0 +1,139 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_AS_VECTOR_09222005_0950) +#define FUSION_AS_VECTOR_09222005_0950 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ +BOOST_FUSION_BARRIER_BEGIN + + template + struct as_vector; + + template <> + struct as_vector<0> + { + template + struct apply + { + typedef vector0<> type; + }; + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static typename apply::type + call(Iterator) + { + return vector0<>(); + } + }; + +BOOST_FUSION_BARRIER_END +}}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_vector" FUSION_MAX_VECTOR_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion { namespace detail +{ +BOOST_FUSION_BARRIER_BEGIN + +#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::next::type \ + BOOST_PP_CAT(I, BOOST_PP_INC(n)); + +#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ + typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ + BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); + +#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ + typedef typename fusion::result_of::value_of::type \ + BOOST_PP_CAT(T, n); + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_NEXT_ITERATOR +#undef BOOST_FUSION_NEXT_CALL_ITERATOR +#undef BOOST_FUSION_VALUE_OF_ITERATOR + +BOOST_FUSION_BARRIER_END +}}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template <> + struct as_vector + { + template + struct apply + { + BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) + BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) + typedef BOOST_PP_CAT(vector, N) type; + }; + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static typename apply::type + call(Iterator const& i0) + { + typedef apply gen; + typedef typename gen::type result; + BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) + return result(BOOST_PP_ENUM_PARAMS(N, *i)); + } + }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/container/vector/detail/cpp03/limits.hpp b/include/boost/fusion/container/vector/detail/cpp03/limits.hpp new file mode 100644 index 00000000..6e106144 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/limits.hpp @@ -0,0 +1,24 @@ +/*============================================================================= + 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_VECTOR_LIMITS_07072005_1246) +#define FUSION_VECTOR_LIMITS_07072005_1246 + +#include +#include + +#if !defined(FUSION_MAX_VECTOR_SIZE) +# define FUSION_MAX_VECTOR_SIZE 10 +#else +# if FUSION_MAX_VECTOR_SIZE < 3 +# undef FUSION_MAX_VECTOR_SIZE +# define FUSION_MAX_VECTOR_SIZE 10 +# endif +#endif + +#define FUSION_MAX_VECTOR_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_VECTOR_SIZE)) + +#endif diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/as_vector.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector10.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector10_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector10_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector20.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector20_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector20_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector30.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector30_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector30_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector40.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector40_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector40_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector50.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector50_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector50_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector_chooser.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser10.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector_chooser10.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser20.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector_chooser20.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser30.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector_chooser30.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser40.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector_chooser40.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector_chooser50.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector_chooser50.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector20_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector20_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector30_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector30_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector40_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector40_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp diff --git a/include/boost/fusion/container/vector/detail/preprocessed/vvector50_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp similarity index 100% rename from include/boost/fusion/container/vector/detail/preprocessed/vvector50_fwd.hpp rename to include/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp diff --git a/include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp b/include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp new file mode 100644 index 00000000..06402b43 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp @@ -0,0 +1,34 @@ +/*============================================================================= + 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_VALUE_AT_IMPL_05052005_0232) +#define FUSION_VALUE_AT_IMPL_05052005_0232 + +#include +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + { + typedef typename mpl::at::type type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector.hpp new file mode 100644 index 00000000..c1cea915 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector.hpp @@ -0,0 +1,257 @@ +/*============================================================================= + 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_VECTOR_07072005_1244) +#define FUSION_VECTOR_07072005_1244 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define FUSION_HASH # + +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) + +#define BOOST_FUSION_VECTOR_COPY_INIT() \ + ctor_helper(rhs, is_base_of()) \ + +#define BOOST_FUSION_VECTOR_CTOR_HELPER() \ + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \ + static vector_n const& \ + ctor_helper(vector const& rhs, mpl::true_) \ + { \ + return rhs.vec; \ + } \ + \ + template \ + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \ + static T const& \ + ctor_helper(T const& rhs, mpl::false_) \ + { \ + return rhs; \ + } + +#else + +#define BOOST_FUSION_VECTOR_COPY_INIT() \ + rhs \ + +#define BOOST_FUSION_VECTOR_CTOR_HELPER() + +#endif + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + struct fusion_sequence_tag; + + template + struct vector + : sequence_base > + { + private: + + typedef typename detail::vector_n_chooser< + BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>::type + vector_n; + + template + friend struct vector; + + public: + + typedef typename vector_n::types types; + typedef typename vector_n::fusion_tag fusion_tag; + typedef typename vector_n::tag tag; + typedef typename vector_n::size size; + typedef typename vector_n::category category; + typedef typename vector_n::is_view is_view; + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector() + : vec() {} + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector(vector const& rhs) + : vec(rhs.vec) {} + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector(vector const& rhs) + : vec(rhs.vec) {} + + template + // XXX: +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED + vector(Sequence const& rhs, + typename boost::enable_if >::type* = 0) + : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} + + // Expand a couple of forwarding constructors for arguments + // of type (T0), (T0, T1), (T0, T1, T2) etc. Example: + // + // vector( + // typename detail::call_param::type arg0 + // , typename detail::call_param::type arg1) + // : vec(arg0, arg1) {} + #include + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector const& rhs) + { + vec = rhs.vec; + return *this; + } + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector& + operator=(T const& rhs) + { + vec = rhs; + return *this; + } + + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector const& rhs) + { + vec = rhs.vec; + return *this; + } + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector(vector&& rhs) + : vec(std::forward(rhs.vec)) {} + + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector&& rhs) + { + vec = std::forward(rhs.vec); + return *this; + } + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector& + operator=(T&& rhs) + { + vec = BOOST_FUSION_FWD_ELEM(T, rhs); + return *this; + } +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif +#endif + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference< + typename mpl::at_c::type + >::type + at_impl(mpl::int_ index) + { + return vec.at_impl(index); + } + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference< + typename add_const< + typename mpl::at_c::type + >::type + >::type + at_impl(mpl::int_ index) const + { + return vec.at_impl(index); + } + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference< + typename mpl::at::type + >::type + at_impl(I /*index*/) + { + return vec.at_impl(mpl::int_()); + } + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference< + typename add_const< + typename mpl::at::type + >::type + >::type + at_impl(I /*index*/) const + { + return vec.at_impl(mpl::int_()); + } + + private: + + BOOST_FUSION_VECTOR_CTOR_HELPER() + vector_n vec; + }; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#undef FUSION_HASH +#endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector10.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector10.hpp new file mode 100644 index 00000000..a5ef4754 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector10.hpp @@ -0,0 +1,105 @@ +/*============================================================================= + 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_VECTOR10_05042005_0257) +#define FUSION_VECTOR10_05042005_0257 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_traversal_tag; + + template + struct vector0 : sequence_base > + { + typedef mpl::vector0<> types; + typedef vector_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + typedef random_access_traversal_tag category; + typedef mpl::int_<0> size; + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector0() BOOST_NOEXCEPT {} + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector0(Sequence const& /*seq*/) BOOST_NOEXCEPT + {} + }; +}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector10.hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_traversal_tag; + +#define FUSION_HASH # +// expand vector1 to vector10 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, 10) +#include BOOST_PP_ITERATE() +#undef FUSION_HASH +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp new file mode 100644 index 00000000..ce5cb1e8 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp @@ -0,0 +1,64 @@ +#ifndef BOOST_PP_IS_ITERATING +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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(BOOST_FUSION_VECTOR10_FWD_HPP_INCLUDED) +#define BOOST_FUSION_VECTOR10_FWD_HPP_INCLUDED + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + template + struct vector0; +}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector10_fwd.hpp") +#endif + +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + // expand vector1 to vector10 + #define BOOST_PP_FILENAME_1 + #define BOOST_PP_ITERATION_LIMITS (1, 10) + #include BOOST_PP_ITERATE() +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + +#else + + template + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector20.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector20.hpp new file mode 100644 index 00000000..61978dcb --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector20.hpp @@ -0,0 +1,81 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + 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_VECTOR20_05052005_0205) +#define FUSION_VECTOR20_05052005_0205 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector20.hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_traversal_tag; + +#define FUSION_HASH # +// expand vector11 to vector20 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (11, 20) +#include BOOST_PP_ITERATE() +#undef FUSION_HASH +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp new file mode 100644 index 00000000..bf1b39b4 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp @@ -0,0 +1,59 @@ +#ifndef BOOST_PP_IS_ITERATING +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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(BOOST_FUSION_VECTOR20_FWD_HPP_INCLUDED) +#define BOOST_FUSION_VECTOR20_FWD_HPP_INCLUDED + +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector20_fwd.hpp") +#endif + +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + // expand vector11 to vector20 + #define BOOST_PP_FILENAME_1 + #define BOOST_PP_ITERATION_LIMITS (11, 20) + #include BOOST_PP_ITERATE() +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + +#else + + template + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector30.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector30.hpp new file mode 100644 index 00000000..f034abd5 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector30.hpp @@ -0,0 +1,80 @@ +/*============================================================================= + 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_VECTOR30_05052005_0206) +#define FUSION_VECTOR30_05052005_0206 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector30.hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_traversal_tag; + +#define FUSION_HASH # +// expand vector21 to vector30 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (21, 30) +#include BOOST_PP_ITERATE() +#undef FUSION_HASH +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp new file mode 100644 index 00000000..23b38569 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp @@ -0,0 +1,59 @@ +#ifndef BOOST_PP_IS_ITERATING +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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(BOOST_FUSION_VECTOR30_FWD_HPP_INCLUDED) +#define BOOST_FUSION_VECTOR30_FWD_HPP_INCLUDED + +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector30_fwd.hpp") +#endif + +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + // expand vector21 to vector30 + #define BOOST_PP_FILENAME_1 + #define BOOST_PP_ITERATION_LIMITS (21, 30) + #include BOOST_PP_ITERATE() +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + +#else + + template + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector40.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector40.hpp new file mode 100644 index 00000000..5a7bb44c --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector40.hpp @@ -0,0 +1,81 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + 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_VECTOR40_05052005_0208) +#define FUSION_VECTOR40_05052005_0208 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector40.hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_traversal_tag; + +#define FUSION_HASH # +// expand vector31 to vector40 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (31, 40) +#include BOOST_PP_ITERATE() +#undef FUSION_HASH +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp new file mode 100644 index 00000000..fc3d29d1 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp @@ -0,0 +1,59 @@ +#ifndef BOOST_PP_IS_ITERATING +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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(BOOST_FUSION_VECTOR40_FWD_HPP_INCLUDED) +#define BOOST_FUSION_VECTOR40_FWD_HPP_INCLUDED + +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector40_fwd.hpp") +#endif + +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + // expand vector31 to vector40 + #define BOOST_PP_FILENAME_1 + #define BOOST_PP_ITERATION_LIMITS (31, 40) + #include BOOST_PP_ITERATE() +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + +#else + + template + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector50.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector50.hpp new file mode 100644 index 00000000..2448d51e --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector50.hpp @@ -0,0 +1,80 @@ +/*============================================================================= + 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_VECTOR50_05052005_0207) +#define FUSION_VECTOR50_05052005_0207 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector50.hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_traversal_tag; + +#define FUSION_HASH # +// expand vector41 to vector50 +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (41, 50) +#include BOOST_PP_ITERATE() +#undef FUSION_HASH +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp new file mode 100644 index 00000000..52083ad4 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp @@ -0,0 +1,59 @@ +#ifndef BOOST_PP_IS_ITERATING +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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(BOOST_FUSION_VECTOR50_FWD_HPP_INCLUDED) +#define BOOST_FUSION_VECTOR50_FWD_HPP_INCLUDED + +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector50_fwd.hpp") +#endif + +/*============================================================================= + Copyright (c) 2011 Eric Niebler + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + // expand vector41 to vector50 + #define BOOST_PP_FILENAME_1 + #define BOOST_PP_ITERATION_LIMITS (41, 50) + #include BOOST_PP_ITERATE() +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + +#else + + template + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp new file mode 100644 index 00000000..8ec63607 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp @@ -0,0 +1,75 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_VECTOR_FORWARD_CTOR_07122005_1123) +#define FUSION_VECTOR_FORWARD_CTOR_07122005_1123 + +#define FUSION_FORWARD_CTOR_FORWARD(z, n, _) BOOST_FUSION_FWD_ELEM(U##n, _##n) + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef FUSION_FORWARD_CTOR_FORWARD +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define M BOOST_PP_ITERATION() + + // XXX: +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED +#if M == 1 + explicit +#endif + vector(BOOST_PP_ENUM_BINARY_PARAMS( + M, typename detail::call_param::type arg)) + : vec(BOOST_PP_ENUM_PARAMS(M, arg)) {} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + template + // XXX: +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED +#if M == 1 + explicit +#endif + vector(BOOST_PP_ENUM_BINARY_PARAMS(M, U, && arg)) + : vec(BOOST_PP_ENUM(M, FUSION_FORWARD_CTOR_FORWARD, arg)) {} +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif +#endif + +#undef M +#endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp new file mode 100644 index 00000000..d157ea81 --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp @@ -0,0 +1,66 @@ +/*============================================================================= + Copyright (c) 1999-2003 Jaakko Jarvi + 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_VECTOR_FORWARD_07072005_0125) +#define FUSION_VECTOR_FORWARD_07072005_0125 + +#include +#include +#include + +#include +#if (FUSION_MAX_VECTOR_SIZE > 10) +#include +#endif +#if (FUSION_MAX_VECTOR_SIZE > 20) +#include +#endif +#if (FUSION_MAX_VECTOR_SIZE > 30) +#include +#endif +#if (FUSION_MAX_VECTOR_SIZE > 40) +#include +#endif + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR "_fwd.hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + > + struct vector; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector_n.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector_n.hpp new file mode 100644 index 00000000..932ce36c --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector_n.hpp @@ -0,0 +1,354 @@ +/*============================================================================= + 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) +==============================================================================*/ +// No include guard. This file is meant to be included many times + +#if !defined(FUSION_MACRO_05042005) +#define FUSION_MACRO_05042005 + +#define FUSION_VECTOR_CTOR_DEFAULT_INIT(z, n, _) \ + m##n() + +#define FUSION_VECTOR_CTOR_INIT(z, n, _) \ + m##n(_##n) + +#define FUSION_VECTOR_MEMBER_CTOR_INIT(z, n, _) \ + m##n(other.m##n) + +#define FUSION_VECTOR_CTOR_FORWARD(z, n, _) \ + m##n(BOOST_FUSION_FWD_ELEM(T##n, other.m##n)) + +#define FUSION_VECTOR_CTOR_ARG_FWD(z, n, _) \ + m##n(BOOST_FUSION_FWD_ELEM(U##n, _##n)) + +#define FUSION_VECTOR_MEMBER_DECL(z, n, _) \ + T##n m##n; + +#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) \ + BOOST_FUSION_FWD_ELEM(U##n, _##n) + +#define FUSION_VECTOR_MEMBER_ASSIGN(z, n, _) \ + this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n); + +#define FUSION_VECTOR_MEMBER_DEREF_ASSIGN(z, n, _) \ + this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n); + +#define FUSION_VECTOR_MEMBER_MOVE(z, n, _) \ + this->BOOST_PP_CAT(m, n) = std::forward< \ + BOOST_PP_CAT(T, n)>(vec.BOOST_PP_CAT(m, n)); + +#define FUSION_VECTOR_MEMBER_AT_IMPL(z, n, _) \ + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED \ + typename add_reference::type \ + at_impl(mpl::int_) { return this->m##n; } \ + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \ + typename add_reference::type>::type \ + at_impl(mpl::int_) const { return this->m##n; } + +#define FUSION_VECTOR_MEMBER_ITER_DECL_VAR(z, n, _) \ + typedef typename result_of::next< \ + BOOST_PP_CAT(I, BOOST_PP_DEC(n))>::type BOOST_PP_CAT(I, n); \ + BOOST_PP_CAT(I, n) BOOST_PP_CAT(i, n) \ + = fusion::next(BOOST_PP_CAT(i, BOOST_PP_DEC(n))); + +#endif + +#define N BOOST_PP_ITERATION() + + template + struct BOOST_PP_CAT(vector_data, N) + { + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector_data, N)() + : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_DEFAULT_INIT, _) {} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + template +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && arg) + , typename boost::enable_if >::type* /*dummy*/ = 0 + ) + : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_ARG_FWD, arg) {} + + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector_data, N)( + BOOST_PP_CAT(vector_data, N)&& other) + : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_FORWARD, arg) {} +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif +#endif + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector_data, N)( + BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type arg)) + : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_INIT, arg) {} + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector_data, N)( + BOOST_PP_CAT(vector_data, N) const& other) + : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_CTOR_INIT, _) {} + + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector_data, N)& + operator=(BOOST_PP_CAT(vector_data, N) const& vec) + { + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _) + return *this; + } + + template +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED + static BOOST_PP_CAT(vector_data, N) + init_from_sequence(Sequence const& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) + return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); + } + + template +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED + static BOOST_PP_CAT(vector_data, N) + init_from_sequence(Sequence& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) + return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); + } + + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DECL, _) + }; + + template + struct BOOST_PP_CAT(vector, N) + : BOOST_PP_CAT(vector_data, N) + , sequence_base > + { + typedef BOOST_PP_CAT(vector, N) this_type; + typedef BOOST_PP_CAT(vector_data, N) base_type; + typedef mpl::BOOST_PP_CAT(vector, N) types; + typedef vector_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + typedef random_access_traversal_tag category; + typedef mpl::int_ size; + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)() {} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED +#if (N == 1) + explicit +#endif + BOOST_PP_CAT(vector, N)( + BOOST_PP_ENUM_BINARY_PARAMS( + N, typename detail::call_param::type arg)) + : base_type(BOOST_PP_ENUM_PARAMS(N, arg)) {} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + template +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED +#if (N == 1) + explicit + BOOST_PP_CAT(vector, N)(U0&& _0 + , typename boost::enable_if >::type* /*dummy*/ = 0 + ) + : base_type(BOOST_FUSION_FWD_ELEM(U0, _0)) {} +#else + BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && arg)) + : base_type(BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FORWARD, arg)) {} +#endif + + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N)&& rhs) + : base_type(std::forward(rhs)) {} + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N) const& rhs) + : base_type(static_cast(rhs)) {} + + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)& + operator=(BOOST_PP_CAT(vector, N) const& vec) + { + base_type::operator=(vec); + return *this; + } + + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)& + operator=(BOOST_PP_CAT(vector, N)&& vec) + { + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MOVE, _) + return *this; + } +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif +#endif + + template +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)( + BOOST_PP_CAT(vector, N) const& vec) + : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {} + + template +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)( + Sequence const& seq + , typename boost::enable_if >::type* = 0 +#if (N == 1) + , typename boost::disable_if >::type* /*dummy*/ = 0 +#endif + ) + : base_type(base_type::init_from_sequence(seq)) {} + + template +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +FUSION_HASH endif +#else +#if !defined(BOOST_CLANG) + BOOST_CXX14_CONSTEXPR +#endif +#endif + BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)( + Sequence& seq + , typename boost::enable_if >::type* = 0 +#if (N == 1) + , typename boost::disable_if >::type* /*dummy*/ = 0 +#endif + ) + : base_type(base_type::init_from_sequence(seq)) {} + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)& + operator=(BOOST_PP_CAT(vector, N) const& vec) + { + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _) + return *this; + } + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename boost::disable_if, this_type&>::type + operator=(Sequence const& seq) + { + typedef typename result_of::begin::type I0; + I0 i0 = fusion::begin(seq); + BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_ASSIGN, _) + return *this; + } + + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_AT_IMPL, _) + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference::type>::type + at_impl(I) + { + return this->at_impl(mpl::int_()); + } + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference::type>::type>::type + at_impl(I) const + { + return this->at_impl(mpl::int_()); + } + }; + +#undef N diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp new file mode 100644 index 00000000..b0e69afc --- /dev/null +++ b/include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp @@ -0,0 +1,107 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_VECTOR_N_CHOOSER_07072005_1248) +#define FUSION_VECTOR_N_CHOOSER_07072005_1248 + +#include + +// include vector0..N where N is FUSION_MAX_VECTOR_SIZE +#include +#if (FUSION_MAX_VECTOR_SIZE > 10) +#include +#endif +#if (FUSION_MAX_VECTOR_SIZE > 20) +#include +#endif +#if (FUSION_MAX_VECTOR_SIZE > 30) +#include +#endif +#if (FUSION_MAX_VECTOR_SIZE > 40) +#include +#endif + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; +}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector_chooser" FUSION_MAX_VECTOR_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion { namespace detail +{ + template + struct vector_n_chooser + { + typedef BOOST_PP_CAT(vector, FUSION_MAX_VECTOR_SIZE) type; + }; + + template <> + struct vector_n_chooser + { + typedef vector0<> type; + }; + +#define BOOST_PP_FILENAME_1 \ + +#define BOOST_PP_ITERATION_LIMITS (1, BOOST_PP_DEC(FUSION_MAX_VECTOR_SIZE)) +#include BOOST_PP_ITERATE() + +}}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// +#else // defined(BOOST_PP_IS_ITERATING) + +#define N BOOST_PP_ITERATION() + + template + struct vector_n_chooser< + BOOST_PP_ENUM_PARAMS(N, T) + BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SUB(FUSION_MAX_VECTOR_SIZE, N), void_ BOOST_PP_INTERCEPT)> + { + typedef BOOST_PP_CAT(vector, N) type; + }; + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/container/vector/detail/value_at_impl.hpp b/include/boost/fusion/container/vector/detail/value_at_impl.hpp index 06402b43..e69de29b 100644 --- a/include/boost/fusion/container/vector/detail/value_at_impl.hpp +++ b/include/boost/fusion/container/vector/detail/value_at_impl.hpp @@ -1,34 +0,0 @@ -/*============================================================================= - 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_VALUE_AT_IMPL_05052005_0232) -#define FUSION_VALUE_AT_IMPL_05052005_0232 - -#include -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - - namespace extension - { - template - struct value_at_impl; - - template <> - struct value_at_impl - { - template - struct apply - { - typedef typename mpl::at::type type; - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp b/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp index 8ec63607..e69de29b 100644 --- a/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp +++ b/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp @@ -1,75 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_VECTOR_FORWARD_CTOR_07122005_1123) -#define FUSION_VECTOR_FORWARD_CTOR_07122005_1123 - -#define FUSION_FORWARD_CTOR_FORWARD(z, n, _) BOOST_FUSION_FWD_ELEM(U##n, _##n) - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef FUSION_FORWARD_CTOR_FORWARD -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define M BOOST_PP_ITERATION() - - // XXX: -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED -#if M == 1 - explicit -#endif - vector(BOOST_PP_ENUM_BINARY_PARAMS( - M, typename detail::call_param::type arg)) - : vec(BOOST_PP_ENUM_PARAMS(M, arg)) {} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) -#endif -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ - (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) - template - // XXX: -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED -#if M == 1 - explicit -#endif - vector(BOOST_PP_ENUM_BINARY_PARAMS(M, U, && arg)) - : vec(BOOST_PP_ENUM(M, FUSION_FORWARD_CTOR_FORWARD, arg)) {} -#endif -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH endif -#endif - -#undef M -#endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/container/vector/detail/vector_n.hpp b/include/boost/fusion/container/vector/detail/vector_n.hpp index 932ce36c..e69de29b 100644 --- a/include/boost/fusion/container/vector/detail/vector_n.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n.hpp @@ -1,354 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -// No include guard. This file is meant to be included many times - -#if !defined(FUSION_MACRO_05042005) -#define FUSION_MACRO_05042005 - -#define FUSION_VECTOR_CTOR_DEFAULT_INIT(z, n, _) \ - m##n() - -#define FUSION_VECTOR_CTOR_INIT(z, n, _) \ - m##n(_##n) - -#define FUSION_VECTOR_MEMBER_CTOR_INIT(z, n, _) \ - m##n(other.m##n) - -#define FUSION_VECTOR_CTOR_FORWARD(z, n, _) \ - m##n(BOOST_FUSION_FWD_ELEM(T##n, other.m##n)) - -#define FUSION_VECTOR_CTOR_ARG_FWD(z, n, _) \ - m##n(BOOST_FUSION_FWD_ELEM(U##n, _##n)) - -#define FUSION_VECTOR_MEMBER_DECL(z, n, _) \ - T##n m##n; - -#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) \ - BOOST_FUSION_FWD_ELEM(U##n, _##n) - -#define FUSION_VECTOR_MEMBER_ASSIGN(z, n, _) \ - this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n); - -#define FUSION_VECTOR_MEMBER_DEREF_ASSIGN(z, n, _) \ - this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n); - -#define FUSION_VECTOR_MEMBER_MOVE(z, n, _) \ - this->BOOST_PP_CAT(m, n) = std::forward< \ - BOOST_PP_CAT(T, n)>(vec.BOOST_PP_CAT(m, n)); - -#define FUSION_VECTOR_MEMBER_AT_IMPL(z, n, _) \ - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED \ - typename add_reference::type \ - at_impl(mpl::int_) { return this->m##n; } \ - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \ - typename add_reference::type>::type \ - at_impl(mpl::int_) const { return this->m##n; } - -#define FUSION_VECTOR_MEMBER_ITER_DECL_VAR(z, n, _) \ - typedef typename result_of::next< \ - BOOST_PP_CAT(I, BOOST_PP_DEC(n))>::type BOOST_PP_CAT(I, n); \ - BOOST_PP_CAT(I, n) BOOST_PP_CAT(i, n) \ - = fusion::next(BOOST_PP_CAT(i, BOOST_PP_DEC(n))); - -#endif - -#define N BOOST_PP_ITERATION() - - template - struct BOOST_PP_CAT(vector_data, N) - { - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector_data, N)() - : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_DEFAULT_INIT, _) {} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) -#endif -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ - (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) - template -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && arg) - , typename boost::enable_if >::type* /*dummy*/ = 0 - ) - : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_ARG_FWD, arg) {} - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector_data, N)( - BOOST_PP_CAT(vector_data, N)&& other) - : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_FORWARD, arg) {} -#endif -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH endif -#endif - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector_data, N)( - BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type arg)) - : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_INIT, arg) {} - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector_data, N)( - BOOST_PP_CAT(vector_data, N) const& other) - : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_CTOR_INIT, _) {} - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector_data, N)& - operator=(BOOST_PP_CAT(vector_data, N) const& vec) - { - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _) - return *this; - } - - template -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED - static BOOST_PP_CAT(vector_data, N) - init_from_sequence(Sequence const& seq) - { - typedef typename result_of::begin::type I0; - I0 i0 = fusion::begin(seq); - BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) - return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); - } - - template -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED - static BOOST_PP_CAT(vector_data, N) - init_from_sequence(Sequence& seq) - { - typedef typename result_of::begin::type I0; - I0 i0 = fusion::begin(seq); - BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) - return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); - } - - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DECL, _) - }; - - template - struct BOOST_PP_CAT(vector, N) - : BOOST_PP_CAT(vector_data, N) - , sequence_base > - { - typedef BOOST_PP_CAT(vector, N) this_type; - typedef BOOST_PP_CAT(vector_data, N) base_type; - typedef mpl::BOOST_PP_CAT(vector, N) types; - typedef vector_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - typedef random_access_traversal_tag category; - typedef mpl::int_ size; - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector, N)() {} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED -#if (N == 1) - explicit -#endif - BOOST_PP_CAT(vector, N)( - BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type arg)) - : base_type(BOOST_PP_ENUM_PARAMS(N, arg)) {} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) -#endif -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ - (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) - template -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED -#if (N == 1) - explicit - BOOST_PP_CAT(vector, N)(U0&& _0 - , typename boost::enable_if >::type* /*dummy*/ = 0 - ) - : base_type(BOOST_FUSION_FWD_ELEM(U0, _0)) {} -#else - BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && arg)) - : base_type(BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FORWARD, arg)) {} -#endif - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N)&& rhs) - : base_type(std::forward(rhs)) {} - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N) const& rhs) - : base_type(static_cast(rhs)) {} - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector, N)& - operator=(BOOST_PP_CAT(vector, N) const& vec) - { - base_type::operator=(vec); - return *this; - } - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector, N)& - operator=(BOOST_PP_CAT(vector, N)&& vec) - { - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MOVE, _) - return *this; - } -#endif -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH endif -#endif - - template -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector, N)( - BOOST_PP_CAT(vector, N) const& vec) - : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {} - - template -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector, N)( - Sequence const& seq - , typename boost::enable_if >::type* = 0 -#if (N == 1) - , typename boost::disable_if >::type* /*dummy*/ = 0 -#endif - ) - : base_type(base_type::init_from_sequence(seq)) {} - - template -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CXX14_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector, N)( - Sequence& seq - , typename boost::enable_if >::type* = 0 -#if (N == 1) - , typename boost::disable_if >::type* /*dummy*/ = 0 -#endif - ) - : base_type(base_type::init_from_sequence(seq)) {} - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - BOOST_PP_CAT(vector, N)& - operator=(BOOST_PP_CAT(vector, N) const& vec) - { - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _) - return *this; - } - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename boost::disable_if, this_type&>::type - operator=(Sequence const& seq) - { - typedef typename result_of::begin::type I0; - I0 i0 = fusion::begin(seq); - BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_ASSIGN, _) - return *this; - } - - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_AT_IMPL, _) - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename add_reference::type>::type - at_impl(I) - { - return this->at_impl(mpl::int_()); - } - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename add_reference::type>::type>::type - at_impl(I) const - { - return this->at_impl(mpl::int_()); - } - }; - -#undef N diff --git a/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp b/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp index b0e69afc..e69de29b 100644 --- a/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp +++ b/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp @@ -1,107 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_VECTOR_N_CHOOSER_07072005_1248) -#define FUSION_VECTOR_N_CHOOSER_07072005_1248 - -#include - -// include vector0..N where N is FUSION_MAX_VECTOR_SIZE -#include -#if (FUSION_MAX_VECTOR_SIZE > 10) -#include -#endif -#if (FUSION_MAX_VECTOR_SIZE > 20) -#include -#endif -#if (FUSION_MAX_VECTOR_SIZE > 30) -#include -#endif -#if (FUSION_MAX_VECTOR_SIZE > 40) -#include -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct void_; -}} - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector_chooser" FUSION_MAX_VECTOR_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion { namespace detail -{ - template - struct vector_n_chooser - { - typedef BOOST_PP_CAT(vector, FUSION_MAX_VECTOR_SIZE) type; - }; - - template <> - struct vector_n_chooser - { - typedef vector0<> type; - }; - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, BOOST_PP_DEC(FUSION_MAX_VECTOR_SIZE)) -#include BOOST_PP_ITERATE() - -}}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() - - template - struct vector_n_chooser< - BOOST_PP_ENUM_PARAMS(N, T) - BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SUB(FUSION_MAX_VECTOR_SIZE, N), void_ BOOST_PP_INTERCEPT)> - { - typedef BOOST_PP_CAT(vector, N) type; - }; - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) diff --git a/include/boost/fusion/container/vector/limits.hpp b/include/boost/fusion/container/vector/limits.hpp index 6e106144..e69de29b 100644 --- a/include/boost/fusion/container/vector/limits.hpp +++ b/include/boost/fusion/container/vector/limits.hpp @@ -1,24 +0,0 @@ -/*============================================================================= - 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_VECTOR_LIMITS_07072005_1246) -#define FUSION_VECTOR_LIMITS_07072005_1246 - -#include -#include - -#if !defined(FUSION_MAX_VECTOR_SIZE) -# define FUSION_MAX_VECTOR_SIZE 10 -#else -# if FUSION_MAX_VECTOR_SIZE < 3 -# undef FUSION_MAX_VECTOR_SIZE -# define FUSION_MAX_VECTOR_SIZE 10 -# endif -#endif - -#define FUSION_MAX_VECTOR_SIZE_STR BOOST_PP_STRINGIZE(BOOST_FUSION_PP_ROUND_UP(FUSION_MAX_VECTOR_SIZE)) - -#endif diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index c1cea915..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -1,257 +0,0 @@ -/*============================================================================= - 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_VECTOR_07072005_1244) -#define FUSION_VECTOR_07072005_1244 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define FUSION_HASH # - -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) - -#define BOOST_FUSION_VECTOR_COPY_INIT() \ - ctor_helper(rhs, is_base_of()) \ - -#define BOOST_FUSION_VECTOR_CTOR_HELPER() \ - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \ - static vector_n const& \ - ctor_helper(vector const& rhs, mpl::true_) \ - { \ - return rhs.vec; \ - } \ - \ - template \ - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \ - static T const& \ - ctor_helper(T const& rhs, mpl::false_) \ - { \ - return rhs; \ - } - -#else - -#define BOOST_FUSION_VECTOR_COPY_INIT() \ - rhs \ - -#define BOOST_FUSION_VECTOR_CTOR_HELPER() - -#endif - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct void_; - struct fusion_sequence_tag; - - template - struct vector - : sequence_base > - { - private: - - typedef typename detail::vector_n_chooser< - BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>::type - vector_n; - - template - friend struct vector; - - public: - - typedef typename vector_n::types types; - typedef typename vector_n::fusion_tag fusion_tag; - typedef typename vector_n::tag tag; - typedef typename vector_n::size size; - typedef typename vector_n::category category; - typedef typename vector_n::is_view is_view; - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector() - : vec() {} - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector(vector const& rhs) - : vec(rhs.vec) {} - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector(vector const& rhs) - : vec(rhs.vec) {} - - template - // XXX: -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -#endif -#endif - BOOST_FUSION_GPU_ENABLED - vector(Sequence const& rhs, - typename boost::enable_if >::type* = 0) - : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} - - // Expand a couple of forwarding constructors for arguments - // of type (T0), (T0, T1), (T0, T1, T2) etc. Example: - // - // vector( - // typename detail::call_param::type arg0 - // , typename detail::call_param::type arg1) - // : vec(arg0, arg1) {} - #include - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector& - operator=(vector const& rhs) - { - vec = rhs.vec; - return *this; - } - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector& - operator=(T const& rhs) - { - vec = rhs; - return *this; - } - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector& - operator=(vector const& rhs) - { - vec = rhs.vec; - return *this; - } - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) -#endif -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ - (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector(vector&& rhs) - : vec(std::forward(rhs.vec)) {} - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector& - operator=(vector&& rhs) - { - vec = std::forward(rhs.vec); - return *this; - } - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector& - operator=(T&& rhs) - { - vec = BOOST_FUSION_FWD_ELEM(T, rhs); - return *this; - } -#endif -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH endif -#endif - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename add_reference< - typename mpl::at_c::type - >::type - at_impl(mpl::int_ index) - { - return vec.at_impl(index); - } - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename add_reference< - typename add_const< - typename mpl::at_c::type - >::type - >::type - at_impl(mpl::int_ index) const - { - return vec.at_impl(index); - } - - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename add_reference< - typename mpl::at::type - >::type - at_impl(I /*index*/) - { - return vec.at_impl(mpl::int_()); - } - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename add_reference< - typename add_const< - typename mpl::at::type - >::type - >::type - at_impl(I /*index*/) const - { - return vec.at_impl(mpl::int_()); - } - - private: - - BOOST_FUSION_VECTOR_CTOR_HELPER() - vector_n vec; - }; -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#undef FUSION_HASH -#endif diff --git a/include/boost/fusion/container/vector/vector10.hpp b/include/boost/fusion/container/vector/vector10.hpp index a5ef4754..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector10.hpp +++ b/include/boost/fusion/container/vector/vector10.hpp @@ -1,105 +0,0 @@ -/*============================================================================= - 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_VECTOR10_05042005_0257) -#define FUSION_VECTOR10_05042005_0257 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - - template - struct vector0 : sequence_base > - { - typedef mpl::vector0<> types; - typedef vector_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - typedef random_access_traversal_tag category; - typedef mpl::int_<0> size; - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector0() BOOST_NOEXCEPT {} - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector0(Sequence const& /*seq*/) BOOST_NOEXCEPT - {} - }; -}} - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector10.hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - -#define FUSION_HASH # -// expand vector1 to vector10 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, 10) -#include BOOST_PP_ITERATE() -#undef FUSION_HASH -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif diff --git a/include/boost/fusion/container/vector/vector10_fwd.hpp b/include/boost/fusion/container/vector/vector10_fwd.hpp index ce5cb1e8..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector10_fwd.hpp +++ b/include/boost/fusion/container/vector/vector10_fwd.hpp @@ -1,64 +0,0 @@ -#ifndef BOOST_PP_IS_ITERATING -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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(BOOST_FUSION_VECTOR10_FWD_HPP_INCLUDED) -#define BOOST_FUSION_VECTOR10_FWD_HPP_INCLUDED - -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - template - struct vector0; -}} - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector10_fwd.hpp") -#endif - -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - // expand vector1 to vector10 - #define BOOST_PP_FILENAME_1 - #define BOOST_PP_ITERATION_LIMITS (1, 10) - #include BOOST_PP_ITERATE() -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - -#else - - template - struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); - -#endif diff --git a/include/boost/fusion/container/vector/vector20.hpp b/include/boost/fusion/container/vector/vector20.hpp index 61978dcb..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector20.hpp +++ b/include/boost/fusion/container/vector/vector20.hpp @@ -1,81 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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_VECTOR20_05052005_0205) -#define FUSION_VECTOR20_05052005_0205 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector20.hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - -#define FUSION_HASH # -// expand vector11 to vector20 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (11, 20) -#include BOOST_PP_ITERATE() -#undef FUSION_HASH -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - diff --git a/include/boost/fusion/container/vector/vector20_fwd.hpp b/include/boost/fusion/container/vector/vector20_fwd.hpp index bf1b39b4..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector20_fwd.hpp +++ b/include/boost/fusion/container/vector/vector20_fwd.hpp @@ -1,59 +0,0 @@ -#ifndef BOOST_PP_IS_ITERATING -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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(BOOST_FUSION_VECTOR20_FWD_HPP_INCLUDED) -#define BOOST_FUSION_VECTOR20_FWD_HPP_INCLUDED - -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector20_fwd.hpp") -#endif - -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - // expand vector11 to vector20 - #define BOOST_PP_FILENAME_1 - #define BOOST_PP_ITERATION_LIMITS (11, 20) - #include BOOST_PP_ITERATE() -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - -#else - - template - struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); - -#endif diff --git a/include/boost/fusion/container/vector/vector30.hpp b/include/boost/fusion/container/vector/vector30.hpp index f034abd5..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector30.hpp +++ b/include/boost/fusion/container/vector/vector30.hpp @@ -1,80 +0,0 @@ -/*============================================================================= - 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_VECTOR30_05052005_0206) -#define FUSION_VECTOR30_05052005_0206 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector30.hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - -#define FUSION_HASH # -// expand vector21 to vector30 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (21, 30) -#include BOOST_PP_ITERATE() -#undef FUSION_HASH -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - diff --git a/include/boost/fusion/container/vector/vector30_fwd.hpp b/include/boost/fusion/container/vector/vector30_fwd.hpp index 23b38569..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector30_fwd.hpp +++ b/include/boost/fusion/container/vector/vector30_fwd.hpp @@ -1,59 +0,0 @@ -#ifndef BOOST_PP_IS_ITERATING -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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(BOOST_FUSION_VECTOR30_FWD_HPP_INCLUDED) -#define BOOST_FUSION_VECTOR30_FWD_HPP_INCLUDED - -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector30_fwd.hpp") -#endif - -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - // expand vector21 to vector30 - #define BOOST_PP_FILENAME_1 - #define BOOST_PP_ITERATION_LIMITS (21, 30) - #include BOOST_PP_ITERATE() -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - -#else - - template - struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); - -#endif diff --git a/include/boost/fusion/container/vector/vector40.hpp b/include/boost/fusion/container/vector/vector40.hpp index 5a7bb44c..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector40.hpp +++ b/include/boost/fusion/container/vector/vector40.hpp @@ -1,81 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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_VECTOR40_05052005_0208) -#define FUSION_VECTOR40_05052005_0208 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector40.hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - -#define FUSION_HASH # -// expand vector31 to vector40 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (31, 40) -#include BOOST_PP_ITERATE() -#undef FUSION_HASH -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - diff --git a/include/boost/fusion/container/vector/vector40_fwd.hpp b/include/boost/fusion/container/vector/vector40_fwd.hpp index fc3d29d1..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector40_fwd.hpp +++ b/include/boost/fusion/container/vector/vector40_fwd.hpp @@ -1,59 +0,0 @@ -#ifndef BOOST_PP_IS_ITERATING -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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(BOOST_FUSION_VECTOR40_FWD_HPP_INCLUDED) -#define BOOST_FUSION_VECTOR40_FWD_HPP_INCLUDED - -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector40_fwd.hpp") -#endif - -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - // expand vector31 to vector40 - #define BOOST_PP_FILENAME_1 - #define BOOST_PP_ITERATION_LIMITS (31, 40) - #include BOOST_PP_ITERATE() -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - -#else - - template - struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); - -#endif diff --git a/include/boost/fusion/container/vector/vector50.hpp b/include/boost/fusion/container/vector/vector50.hpp index 2448d51e..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector50.hpp +++ b/include/boost/fusion/container/vector/vector50.hpp @@ -1,80 +0,0 @@ -/*============================================================================= - 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_VECTOR50_05052005_0207) -#define FUSION_VECTOR50_05052005_0207 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector50.hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct vector_tag; - struct fusion_sequence_tag; - struct random_access_traversal_tag; - -#define FUSION_HASH # -// expand vector41 to vector50 -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (41, 50) -#include BOOST_PP_ITERATE() -#undef FUSION_HASH -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - diff --git a/include/boost/fusion/container/vector/vector50_fwd.hpp b/include/boost/fusion/container/vector/vector50_fwd.hpp index 52083ad4..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector50_fwd.hpp +++ b/include/boost/fusion/container/vector/vector50_fwd.hpp @@ -1,59 +0,0 @@ -#ifndef BOOST_PP_IS_ITERATING -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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(BOOST_FUSION_VECTOR50_FWD_HPP_INCLUDED) -#define BOOST_FUSION_VECTOR50_FWD_HPP_INCLUDED - -#include -#include -#include -#include - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector50_fwd.hpp") -#endif - -/*============================================================================= - Copyright (c) 2011 Eric Niebler - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - // expand vector41 to vector50 - #define BOOST_PP_FILENAME_1 - #define BOOST_PP_ITERATION_LIMITS (41, 50) - #include BOOST_PP_ITERATE() -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif - -#else - - template - struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); - -#endif diff --git a/include/boost/fusion/container/vector/vector_fwd.hpp b/include/boost/fusion/container/vector/vector_fwd.hpp index d157ea81..e69de29b 100644 --- a/include/boost/fusion/container/vector/vector_fwd.hpp +++ b/include/boost/fusion/container/vector/vector_fwd.hpp @@ -1,66 +0,0 @@ -/*============================================================================= - Copyright (c) 1999-2003 Jaakko Jarvi - 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_VECTOR_FORWARD_07072005_0125) -#define FUSION_VECTOR_FORWARD_07072005_0125 - -#include -#include -#include - -#include -#if (FUSION_MAX_VECTOR_SIZE > 10) -#include -#endif -#if (FUSION_MAX_VECTOR_SIZE > 20) -#include -#endif -#if (FUSION_MAX_VECTOR_SIZE > 30) -#include -#endif -#if (FUSION_MAX_VECTOR_SIZE > 40) -#include -#endif - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR "_fwd.hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct void_; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - > - struct vector; -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif diff --git a/include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp b/include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp new file mode 100644 index 00000000..e0d93356 --- /dev/null +++ b/include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp @@ -0,0 +1,78 @@ +/*============================================================================= + Copyright (c) 2009 Hartmut Kaiser + + 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_PP_IS_ITERATING + +#if !defined(BOOST_FUSION_NVIEW_IMPL_SEP_23_2009_1017PM) +#define BOOST_FUSION_NVIEW_IMPL_SEP_23_2009_1017PM + +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_PP_ITERATION_PARAMS_1 \ + (3, (1, FUSION_MAX_VECTOR_SIZE, \ + "boost/fusion/view/nview/detail/nview_impl.hpp")) \ + /**/ + +/////////////////////////////////////////////////////////////////////////////// +namespace boost { namespace fusion { namespace result_of +{ + template + struct as_nview + { + typedef mpl::vector_c< + int, BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, I) + > index_type; + typedef nview type; + }; +}}} + +#include BOOST_PP_ITERATE() + +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Preprocessor vertical repetition code +/////////////////////////////////////////////////////////////////////////////// +#else // defined(BOOST_PP_IS_ITERATING) + +#define N BOOST_PP_ITERATION() + +#if N < FUSION_MAX_VECTOR_SIZE +namespace boost { namespace fusion { namespace result_of +{ + template + struct as_nview + { + typedef mpl::vector_c index_type; + typedef nview type; + }; +}}} +#endif + +namespace boost { namespace fusion +{ + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + inline nview > + as_nview(Sequence& s) + { + typedef mpl::vector_c index_type; + return nview(s); + } + +}} + +#undef N + +#endif diff --git a/include/boost/fusion/view/nview/detail/nview_impl.hpp b/include/boost/fusion/view/nview/detail/nview_impl.hpp index e0d93356..e69de29b 100644 --- a/include/boost/fusion/view/nview/detail/nview_impl.hpp +++ b/include/boost/fusion/view/nview/detail/nview_impl.hpp @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2009 Hartmut Kaiser - - 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_PP_IS_ITERATING - -#if !defined(BOOST_FUSION_NVIEW_IMPL_SEP_23_2009_1017PM) -#define BOOST_FUSION_NVIEW_IMPL_SEP_23_2009_1017PM - -#include -#include -#include -#include -#include -#include -#include - -#define BOOST_PP_ITERATION_PARAMS_1 \ - (3, (1, FUSION_MAX_VECTOR_SIZE, \ - "boost/fusion/view/nview/detail/nview_impl.hpp")) \ - /**/ - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace fusion { namespace result_of -{ - template - struct as_nview - { - typedef mpl::vector_c< - int, BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, I) - > index_type; - typedef nview type; - }; -}}} - -#include BOOST_PP_ITERATE() - -#endif - -/////////////////////////////////////////////////////////////////////////////// -// Preprocessor vertical repetition code -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() - -#if N < FUSION_MAX_VECTOR_SIZE -namespace boost { namespace fusion { namespace result_of -{ - template - struct as_nview - { - typedef mpl::vector_c index_type; - typedef nview type; - }; -}}} -#endif - -namespace boost { namespace fusion -{ - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline nview > - as_nview(Sequence& s) - { - typedef mpl::vector_c index_type; - return nview(s); - } - -}} - -#undef N - -#endif From 0fcd2aa32808ba5b5957aeaa37ba937554365dc9 Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Wed, 1 Apr 2015 15:14:56 +0200 Subject: [PATCH 04/30] doc: fix typo in documentation of fused_procedure --- doc/functional.qbk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/functional.qbk b/doc/functional.qbk index 4a8e3d81..7205a0b2 100644 --- a/doc/functional.qbk +++ b/doc/functional.qbk @@ -689,7 +689,7 @@ is not implemented). [[`R`] [A possibly const qualified __callable_obj__ type or reference type thereof]] [[`r`] [An object convertible to `R`]] [[`s`] [A __sequence__ of arguments that are accepted by `r`]] - [[`f`] [An instance of `fused`]] + [[`f`] [An instance of `fused_procedure`]] ] [heading Expression Semantics] From 94f53a8d4ca06f24205d49ed75dd661258f70117 Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Thu, 2 Apr 2015 15:46:37 +0200 Subject: [PATCH 05/30] fix a typo --- doc/extension.qbk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/extension.qbk b/doc/extension.qbk index cbb61ce5..21ebd849 100644 --- a/doc/extension.qbk +++ b/doc/extension.qbk @@ -400,7 +400,7 @@ producing a conforming Fusion sequence. [heading Usage] The user of __sequence_facade__ derives his sequence type from a specialization of __sequence_facade__ and passes the derived sequence type as the first template parameter. The second template parameter should be the traversal category of the sequence being implemented. The 3rd parameter should be set to `mpl::true_` if the sequence is a view. -The user must the implement the key expressions required by their sequence type. +The user must implement the key expressions required by their sequence type. [table Parameters [[Name][Description]] @@ -447,7 +447,7 @@ producing a conforming Fusion iterator. [heading Usage] The user of iterator_facade derives his iterator type from a specialization of iterator_facade and passes the derived iterator type as the first template parameter. The second template parameter should be the traversal category of the iterator being implemented. -The user must the implement the key expressions required by their iterator type. +The user must implement the key expressions required by their iterator type. [table Parameters [[Name][Description]] From 91966ae5244c6fda7ed53e6a5a0767cb3b34a65e Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Tue, 21 Apr 2015 03:45:39 +0800 Subject: [PATCH 06/30] added test case for https://svn.boost.org/trac/boost/ticket/11211 --- test/sequence/define_struct.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test/sequence/define_struct.cpp b/test/sequence/define_struct.cpp index 795fdf6e..cd65ad09 100644 --- a/test/sequence/define_struct.cpp +++ b/test/sequence/define_struct.cpp @@ -24,6 +24,13 @@ BOOST_FUSION_DEFINE_STRUCT( (int, y) ) +// Tutorial (compile test only) +BOOST_FUSION_DEFINE_STRUCT( + (demo), employee, + (std::string, name) + (int, age) +) + BOOST_FUSION_DEFINE_STRUCT(BOOST_PP_EMPTY(), s, (int, m)) int @@ -102,4 +109,3 @@ main() return boost::report_errors(); } - From 2445f6098188290c4b930ace7901044b80cf8829 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Tue, 5 May 2015 14:09:20 +0900 Subject: [PATCH 07/30] Fix #11249: missing includes. --- include/boost/fusion/algorithm/iteration/reverse_fold.hpp | 1 + include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp | 1 + 2 files changed, 2 insertions(+) diff --git a/include/boost/fusion/algorithm/iteration/reverse_fold.hpp b/include/boost/fusion/algorithm/iteration/reverse_fold.hpp index 76e6bf25..dffff79e 100644 --- a/include/boost/fusion/algorithm/iteration/reverse_fold.hpp +++ b/include/boost/fusion/algorithm/iteration/reverse_fold.hpp @@ -10,6 +10,7 @@ #define BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_FOLD_HPP #include +#include #include #include #include diff --git a/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp b/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp index e49f8b83..d36861f3 100644 --- a/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp +++ b/include/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp @@ -9,6 +9,7 @@ #define BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_ITER_FOLD_HPP #include +#include #include #include #include From 8b1da45bfe2bd13f34b1c0ae3b06af4c545a1874 Mon Sep 17 00:00:00 2001 From: "Damien Buhl (alias daminetreg)" Date: Wed, 6 May 2015 08:21:02 +0200 Subject: [PATCH 08/30] Fix 11269 (https://svn.boost.org/trac/boost/ticket/11269) and add test case for it. --- .../fusion/adapted/struct/adapt_struct.hpp | 19 ++++++++++++------- .../struct/detail/adapt_base_attr_filler.hpp | 10 ++++++---- test/sequence/adapt_struct.cpp | 3 +++ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/include/boost/fusion/adapted/struct/adapt_struct.hpp b/include/boost/fusion/adapted/struct/adapt_struct.hpp index e96e7c76..2744f5b2 100644 --- a/include/boost/fusion/adapted/struct/adapt_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_struct.hpp @@ -17,6 +17,8 @@ #include #include #include +#include +#include #include #include #include @@ -61,25 +63,28 @@ (1)NAME_SEQ, \ struct_tag, \ 0, \ - BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER(__VA_ARGS__), \ + BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER( \ + BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)), \ BOOST_FUSION_ADAPT_STRUCT_C) -# define BOOST_FUSION_ADAPT_STRUCT(NAME, ...) \ +# define BOOST_FUSION_ADAPT_STRUCT(...) \ BOOST_FUSION_ADAPT_STRUCT_BASE( \ (0), \ - (0)(NAME), \ + (0)(BOOST_PP_SEQ_HEAD(BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))), \ struct_tag, \ 0, \ - BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER(__VA_ARGS__), \ + BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER( \ + BOOST_PP_SEQ_TAIL(BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))), \ BOOST_FUSION_ADAPT_STRUCT_C) -# define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(NAME, ...) \ +# define BOOST_FUSION_ADAPT_STRUCT_AS_VIEW(...) \ BOOST_FUSION_ADAPT_STRUCT_BASE( \ (0), \ - (0)(NAME), \ + (0)(BOOST_PP_SEQ_HEAD(BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))), \ struct_tag, \ 1, \ - BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER(__VA_ARGS__), \ + BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER( \ + BOOST_PP_SEQ_TAIL(BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))), \ BOOST_FUSION_ADAPT_STRUCT_C) #else // BOOST_PP_VARIADICS diff --git a/include/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp b/include/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp index 69d5b204..7a83bb34 100644 --- a/include/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp +++ b/include/boost/fusion/adapted/struct/detail/adapt_base_attr_filler.hpp @@ -49,14 +49,16 @@ # define BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER_OP(r, unused, elem) \ BOOST_PP_IF(BOOST_FUSION_PP_IS_SEQ(elem), \ BOOST_PP_CAT( BOOST_FUSION_ADAPT_STRUCT_FILLER_0 elem ,_END), \ - BOOST_FUSION_ADAPT_STRUCT_WRAP_ATTR(BOOST_FUSION_ADAPT_AUTO, \ - elem)) + BOOST_PP_IF(BOOST_PP_IS_EMPTY(elem), \ + BOOST_PP_EMPTY(), \ + BOOST_FUSION_ADAPT_STRUCT_WRAP_ATTR(BOOST_FUSION_ADAPT_AUTO,elem))\ + ) -# define BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER(...) \ +# define BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER(VA_ARGS_SEQ) \ BOOST_PP_SEQ_PUSH_FRONT( \ BOOST_PP_SEQ_FOR_EACH( \ BOOST_FUSION_ADAPT_STRUCT_ATTRIBUTES_FILLER_OP, \ - unused, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)), \ + unused, VA_ARGS_SEQ), \ (0,0)) #endif // BOOST_PP_VARIADICS diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp index 121827f5..37b76923 100644 --- a/test/sequence/adapt_struct.cpp +++ b/test/sequence/adapt_struct.cpp @@ -149,6 +149,9 @@ namespace ns #endif +struct empty_struct {}; +BOOST_FUSION_ADAPT_STRUCT(empty_struct,); + int main() { From 9911e05838000de6c8ab96c114d40e99b12111ff Mon Sep 17 00:00:00 2001 From: "Damien Buhl (alias daminetreg)" Date: Fri, 15 May 2015 09:09:10 +0200 Subject: [PATCH 09/30] Adds test for each case adapter macros we support to adapt an empty type. --- test/sequence/adapt_adt.cpp | 3 +++ test/sequence/adapt_adt_named.cpp | 4 ++++ test/sequence/adapt_assoc_adt.cpp | 3 +++ test/sequence/adapt_assoc_adt_named.cpp | 3 +++ test/sequence/adapt_assoc_struct.cpp | 3 +++ test/sequence/adapt_assoc_struct_named.cpp | 3 +++ test/sequence/adapt_assoc_tpl_adt.cpp | 14 ++++++++++++++ test/sequence/adapt_assoc_tpl_struct.cpp | 14 ++++++++++++++ test/sequence/adapt_struct.cpp | 2 +- test/sequence/adapt_struct_named.cpp | 4 ++++ test/sequence/adapt_tpl_adt.cpp | 14 ++++++++++++++ test/sequence/adapt_tpl_struct.cpp | 13 +++++++++++++ 12 files changed, 79 insertions(+), 1 deletion(-) diff --git a/test/sequence/adapt_adt.cpp b/test/sequence/adapt_adt.cpp index 265cfca5..bf5d4ca0 100644 --- a/test/sequence/adapt_adt.cpp +++ b/test/sequence/adapt_adt.cpp @@ -149,6 +149,9 @@ namespace ns #endif +class empty_adt{}; +BOOST_FUSION_ADAPT_ADT(empty_adt,) + int main() { diff --git a/test/sequence/adapt_adt_named.cpp b/test/sequence/adapt_adt_named.cpp index 8924ce41..f7e115aa 100644 --- a/test/sequence/adapt_adt_named.cpp +++ b/test/sequence/adapt_adt_named.cpp @@ -77,6 +77,10 @@ BOOST_FUSION_ADAPT_ADT_NAMED( #endif // BOOST_PP_VARIADICS + +class empty_adt{}; +BOOST_FUSION_ADAPT_ADT_NAMED(empty_adt,renamed_empty_adt,) + int main() { diff --git a/test/sequence/adapt_assoc_adt.cpp b/test/sequence/adapt_assoc_adt.cpp index a03605f1..fca3941d 100644 --- a/test/sequence/adapt_assoc_adt.cpp +++ b/test/sequence/adapt_assoc_adt.cpp @@ -70,6 +70,9 @@ BOOST_FUSION_ADAPT_ASSOC_ADT( #endif +class empty_adt{}; +BOOST_FUSION_ADAPT_ASSOC_ADT(empty_adt,) + int main() { diff --git a/test/sequence/adapt_assoc_adt_named.cpp b/test/sequence/adapt_assoc_adt_named.cpp index 8ef9aa27..d685528d 100644 --- a/test/sequence/adapt_assoc_adt_named.cpp +++ b/test/sequence/adapt_assoc_adt_named.cpp @@ -52,6 +52,9 @@ BOOST_FUSION_ADAPT_ASSOC_ADT_NAMED( (int, int, obj.get_y(), obj.set_y(val), ns::y_member) ) +class empty_adt{}; +BOOST_FUSION_ADAPT_ASSOC_ADT_NAMED(empty_adt, renamed_empty_adt,) + int main() { diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp index 4cdabb87..6bb4a8ee 100644 --- a/test/sequence/adapt_assoc_struct.cpp +++ b/test/sequence/adapt_assoc_struct.cpp @@ -71,6 +71,9 @@ namespace ns #endif +struct empty_struct {}; +BOOST_FUSION_ADAPT_ASSOC_STRUCT(empty_struct,); + int main() { diff --git a/test/sequence/adapt_assoc_struct_named.cpp b/test/sequence/adapt_assoc_struct_named.cpp index f24dadd9..fd7fdc50 100644 --- a/test/sequence/adapt_assoc_struct_named.cpp +++ b/test/sequence/adapt_assoc_struct_named.cpp @@ -38,6 +38,9 @@ BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED( (int, y, ns::y_member) ) +struct empty_struct {}; +BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(empty_struct, renamed_empty_struct,); + int main() { diff --git a/test/sequence/adapt_assoc_tpl_adt.cpp b/test/sequence/adapt_assoc_tpl_adt.cpp index 8aa600ff..e0b89dca 100644 --- a/test/sequence/adapt_assoc_tpl_adt.cpp +++ b/test/sequence/adapt_assoc_tpl_adt.cpp @@ -71,6 +71,20 @@ BOOST_FUSION_ADAPT_ASSOC_TPL_ADT( #endif +template +class empty_adt_templated_factory { + + TypeToConstruct operator()() { + return TypeToConstruct(); + } + +}; + +BOOST_FUSION_ADAPT_ASSOC_TPL_ADT( + (TypeToConstruct), + (empty_adt_templated_factory)(TypeToConstruct), +) + int main() { diff --git a/test/sequence/adapt_assoc_tpl_struct.cpp b/test/sequence/adapt_assoc_tpl_struct.cpp index 6adcc931..a949dad0 100644 --- a/test/sequence/adapt_assoc_tpl_struct.cpp +++ b/test/sequence/adapt_assoc_tpl_struct.cpp @@ -69,6 +69,20 @@ namespace ns ) #endif +template +struct empty_struct_templated_factory { + + TypeToConstruct operator()() { + return TypeToConstruct(); + } + +}; + +BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT( + (TypeToConstruct), + (empty_struct_templated_factory)(TypeToConstruct), +) + int main() { diff --git a/test/sequence/adapt_struct.cpp b/test/sequence/adapt_struct.cpp index 37b76923..e4c8f6ee 100644 --- a/test/sequence/adapt_struct.cpp +++ b/test/sequence/adapt_struct.cpp @@ -150,7 +150,7 @@ namespace ns #endif struct empty_struct {}; -BOOST_FUSION_ADAPT_STRUCT(empty_struct,); +BOOST_FUSION_ADAPT_STRUCT(empty_struct,) int main() diff --git a/test/sequence/adapt_struct_named.cpp b/test/sequence/adapt_struct_named.cpp index aab11d2d..63fc3f5f 100644 --- a/test/sequence/adapt_struct_named.cpp +++ b/test/sequence/adapt_struct_named.cpp @@ -71,6 +71,10 @@ namespace ns #endif +struct empty_struct {}; +BOOST_FUSION_ADAPT_STRUCT_NAMED(empty_struct, renamed_empty_struct, ) +BOOST_FUSION_ADAPT_STRUCT_NAMED_NS(empty_struct, (ns1), renamed_empty_struct1, ) + int main() { diff --git a/test/sequence/adapt_tpl_adt.cpp b/test/sequence/adapt_tpl_adt.cpp index bbd1d07f..c454baa5 100644 --- a/test/sequence/adapt_tpl_adt.cpp +++ b/test/sequence/adapt_tpl_adt.cpp @@ -79,6 +79,20 @@ namespace ns ) #endif +template +class empty_adt_templated_factory { + + TypeToConstruct operator()() { + return TypeToConstruct(); + } + +}; + +BOOST_FUSION_ADAPT_TPL_ADT( + (TypeToConstruct), + (empty_adt_templated_factory)(TypeToConstruct), +) + int main() { diff --git a/test/sequence/adapt_tpl_struct.cpp b/test/sequence/adapt_tpl_struct.cpp index 86face6d..861bab65 100644 --- a/test/sequence/adapt_tpl_struct.cpp +++ b/test/sequence/adapt_tpl_struct.cpp @@ -69,6 +69,19 @@ namespace ns #endif +template +struct empty_struct_templated_factory { + + TypeToConstruct operator()() { + return TypeToConstruct(); + } + +}; + +BOOST_FUSION_ADAPT_TPL_STRUCT( + (TypeToConstruct), + (empty_struct_templated_factory)(TypeToConstruct), +) int main() From cac994a7c604c7c66ccfdb1961c3068750f06319 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 21 May 2015 19:14:12 +0100 Subject: [PATCH 10/30] Stop Using type_traits details. Best not to use type_traits undocumented details, these will be moving soon, and use of this header will warn loud and clear if you continue to use it. --- .../fusion/functional/invocation/detail/that_ptr.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/include/boost/fusion/functional/invocation/detail/that_ptr.hpp b/include/boost/fusion/functional/invocation/detail/that_ptr.hpp index 7a1a5c57..33ee93bf 100644 --- a/include/boost/fusion/functional/invocation/detail/that_ptr.hpp +++ b/include/boost/fusion/functional/invocation/detail/that_ptr.hpp @@ -12,7 +12,6 @@ #include #include #include -#include #include namespace boost { namespace fusion { namespace detail @@ -61,10 +60,16 @@ namespace boost { namespace fusion { namespace detail template struct non_const_pointee; - namespace adl_barrier +#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32)) +# define BOOST_FUSION_TRAIT_DECL __cdecl +#else +# define BOOST_FUSION_TRAIT_DECL /**/ +#endif + +namespace adl_barrier { using boost::get_pointer; - void const * BOOST_TT_DECL get_pointer(...); // fallback + void const * BOOST_FUSION_TRAIT_DECL get_pointer(...); // fallback template< typename T> char const_tester(T *); template< typename T> long const_tester(T const *); From 869513768decbaf82460372216fcec879dba4ef3 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sat, 23 May 2015 09:51:06 +0900 Subject: [PATCH 11/30] Remove obsolete workaround. now it doesn't work properly. --- .../fusion/sequence/comparison/less_equal.hpp | 32 ------------------- 1 file changed, 32 deletions(-) diff --git a/include/boost/fusion/sequence/comparison/less_equal.hpp b/include/boost/fusion/sequence/comparison/less_equal.hpp index 53159926..c5dfa8d5 100644 --- a/include/boost/fusion/sequence/comparison/less_equal.hpp +++ b/include/boost/fusion/sequence/comparison/less_equal.hpp @@ -13,7 +13,6 @@ #include #include #include -#include #if defined(FUSION_DIRECT_OPERATOR_USAGE) #include @@ -38,36 +37,6 @@ namespace boost { namespace fusion namespace operators { -#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1400) -// Workaround for VC8.0 and VC7.1 - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline bool - operator<=(sequence_base const& a, sequence_base const& b) - { - return less_equal(a.derived(), b.derived()); - } - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline typename disable_if, bool>::type - operator<=(sequence_base const& a, Seq2 const& b) - { - return less_equal(a.derived(), b); - } - - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline typename disable_if, bool>::type - operator<=(Seq1 const& a, sequence_base const& b) - { - return less_equal(a, b.derived()); - } - -#else -// Somehow VC8.0 and VC7.1 does not like this code -// but barfs somewhere else. - template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline typename @@ -79,7 +48,6 @@ namespace boost { namespace fusion { return fusion::less_equal(a, b); } -#endif } using operators::operator<=; }} From e0f10734b13d7e95afacf9338c2a179affb38f34 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Mon, 8 Jun 2015 11:53:17 +0900 Subject: [PATCH 12/30] Fix issue 11267. Compiler yields compile error within a function witch used in unevaluate context of constexpr function because of CWG 1581 [2]. 1. https://llvm.org/bugs/show_bug.cgi?id=23135 2. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1581 --- .../container/deque/detail/cpp03/deque.hpp | 8 +-- include/boost/fusion/container/list/cons.hpp | 2 +- include/boost/fusion/container/list/list.hpp | 2 +- .../fusion/container/map/detail/cpp03/map.hpp | 2 +- include/boost/fusion/container/map/map.hpp | 8 +-- .../boost/fusion/container/vector/vector.hpp | 10 ---- include/boost/fusion/support/pair.hpp | 2 +- test/Jamfile | 4 ++ test/sequence/deque_nest.cpp | 19 ++++++ test/sequence/list_nest.cpp | 19 ++++++ test/sequence/nest.hpp | 58 +++++++++++++++++++ test/sequence/vector_nest.cpp | 19 ++++++ test/support/pair_nest.cpp | 24 ++++++++ 13 files changed, 155 insertions(+), 22 deletions(-) create mode 100644 test/sequence/deque_nest.cpp create mode 100644 test/sequence/list_nest.cpp create mode 100644 test/sequence/nest.hpp create mode 100644 test/sequence/vector_nest.cpp create mode 100644 test/support/pair_nest.cpp diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp index 7c9417e5..db8a967a 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/deque.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/deque.hpp @@ -94,13 +94,13 @@ namespace boost { namespace fusion { {} template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED deque(deque const& seq) : base(seq) {} template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq, typename disable_if >::type* /*dummy*/ = 0) : base(base::from_iterator(fusion::begin(seq))) {} @@ -129,7 +129,7 @@ FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED explicit deque(T0_&& t0 , typename enable_if >::type* /*dummy*/ = 0 ) @@ -140,7 +140,7 @@ FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) : base(std::forward(rhs)) {} template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED deque(deque&& seq , typename disable_if< is_convertible, T0> diff --git a/include/boost/fusion/container/list/cons.hpp b/include/boost/fusion/container/list/cons.hpp index 61d8dbcf..d649068a 100644 --- a/include/boost/fusion/container/list/cons.hpp +++ b/include/boost/fusion/container/list/cons.hpp @@ -73,7 +73,7 @@ namespace boost { namespace fusion : car(rhs.car), cdr(rhs.cdr) {} template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED cons( Sequence const& seq , typename boost::enable_if< diff --git a/include/boost/fusion/container/list/list.hpp b/include/boost/fusion/container/list/list.hpp index 5b584131..6a06ef4c 100644 --- a/include/boost/fusion/container/list/list.hpp +++ b/include/boost/fusion/container/list/list.hpp @@ -60,7 +60,7 @@ namespace boost { namespace fusion : inherited_type(rhs) {} template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs , typename boost::enable_if >::type* = 0) : inherited_type(rhs) {} diff --git a/include/boost/fusion/container/map/detail/cpp03/map.hpp b/include/boost/fusion/container/map/detail/cpp03/map.hpp index e2f471b5..3ff1d05d 100644 --- a/include/boost/fusion/container/map/detail/cpp03/map.hpp +++ b/include/boost/fusion/container/map/detail/cpp03/map.hpp @@ -85,7 +85,7 @@ namespace boost { namespace fusion : data(rhs.data) {} template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED map(Sequence const& rhs) : data(rhs) {} diff --git a/include/boost/fusion/container/map/map.hpp b/include/boost/fusion/container/map/map.hpp index f93a693f..e90d28a9 100644 --- a/include/boost/fusion/container/map/map.hpp +++ b/include/boost/fusion/container/map/map.hpp @@ -66,21 +66,21 @@ namespace boost { namespace fusion {} template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED map(Sequence const& seq , typename enable_if>::type* /*dummy*/ = 0) : base_type(begin(seq), detail::map_impl_from_iterator()) {} template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED map(Sequence& seq , typename enable_if>::type* /*dummy*/ = 0) : base_type(begin(seq), detail::map_impl_from_iterator()) {} template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED map(Sequence&& seq , typename enable_if>::type* /*dummy*/ = 0) : base_type(begin(seq), detail::map_impl_from_iterator()) @@ -93,7 +93,7 @@ namespace boost { namespace fusion {} template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED map(First&& first, T_&&... rest) : base_type(BOOST_FUSION_FWD_ELEM(First, first), BOOST_FUSION_FWD_ELEM(T_, rest)...) {} diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp index c1cea915..234fa986 100644 --- a/include/boost/fusion/container/vector/vector.hpp +++ b/include/boost/fusion/container/vector/vector.hpp @@ -116,16 +116,6 @@ namespace boost { namespace fusion : vec(rhs.vec) {} template - // XXX: -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -FUSION_HASH if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -FUSION_HASH endif -#else -#if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -#endif -#endif BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, typename boost::enable_if >::type* = 0) diff --git a/include/boost/fusion/support/pair.hpp b/include/boost/fusion/support/pair.hpp index fd5d57e6..a4cd1ff0 100644 --- a/include/boost/fusion/support/pair.hpp +++ b/include/boost/fusion/support/pair.hpp @@ -49,7 +49,7 @@ namespace boost { namespace fusion #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + BOOST_FUSION_GPU_ENABLED pair(Second2&& val , typename boost::disable_if >::type* /* dummy */ = 0 , typename boost::enable_if >::type* /*dummy*/ = 0 diff --git a/test/Jamfile b/test/Jamfile index 752a798a..a21303eb 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -78,6 +78,7 @@ project [ run sequence/list_make.cpp : : : : ] [ run sequence/list_misc.cpp : : : : ] [ run sequence/list_mutate.cpp : : : : ] + [ run sequence/list_nest.cpp : : : : ] [ run sequence/list_tie.cpp : : : : ] [ run sequence/list_value_at.cpp : : : : ] [ run sequence/deque_comparison.cpp : : : : ] @@ -89,6 +90,7 @@ project [ run sequence/deque_misc.cpp : : : : ] [ run sequence/deque_move.cpp : : : : ] [ run sequence/deque_mutate.cpp : : : : ] + [ run sequence/deque_nest.cpp : : : : ] [ run sequence/deque_tie.cpp : : : : ] [ run sequence/deque_value_at.cpp : : : : ] [ run sequence/front_extended_deque.cpp : : : : ] @@ -131,6 +133,7 @@ project [ run sequence/vector_move.cpp : : : : ] [ run sequence/vector_mutate.cpp : : : : ] [ run sequence/vector_n.cpp : : : : ] + [ run sequence/vector_nest.cpp : : : : ] [ run sequence/vector_hash.cpp : : : : ] [ run sequence/vector_tie.cpp : : : : ] [ run sequence/vector_value_at.cpp : : : : ] @@ -184,6 +187,7 @@ project [ compile support/pair_map.cpp : : : : ] [ compile support/pair_set.cpp : : : : ] [ compile support/pair_vector.cpp : : : : ] + [ compile support/pair_nest.cpp : : : : ] # [ compile-fail xxx.cpp : : : : ] diff --git a/test/sequence/deque_nest.cpp b/test/sequence/deque_nest.cpp new file mode 100644 index 00000000..6f70ee9a --- /dev/null +++ b/test/sequence/deque_nest.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (C) 2015 Kohei Takahshi + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#include +#include + +#define FUSION_SEQUENCE deque +#include "nest.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/list_nest.cpp b/test/sequence/list_nest.cpp new file mode 100644 index 00000000..ff97b807 --- /dev/null +++ b/test/sequence/list_nest.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (C) 2015 Kohei Takahshi + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#include +#include + +#define FUSION_SEQUENCE list +#include "nest.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/sequence/nest.hpp b/test/sequence/nest.hpp new file mode 100644 index 00000000..e8087320 --- /dev/null +++ b/test/sequence/nest.hpp @@ -0,0 +1,58 @@ +/*============================================================================= + Copyright (C) 2015 Kohei Takahshi + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#include +#include + +template +void test_copy() +{ + C src; + C dst = src; + (void)dst; +} + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +template +void test_move() +{ + C src; + C dst = std::move(src); + (void)dst; +} +#endif + +template +void test_all() +{ + test_copy(); +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + test_move(); +#endif +} + +void +test() +{ + using namespace boost::fusion; + + test_all > >(); + test_all, int> >(); + test_all > >(); + test_all, float> >(); + + test_all > >(); + test_all, int> >(); + test_all > >(); + test_all, float> >(); + + test_all > >(); + test_all, int> >(); + test_all > >(); + test_all, float> >(); +} + diff --git a/test/sequence/vector_nest.cpp b/test/sequence/vector_nest.cpp new file mode 100644 index 00000000..a0cb76c6 --- /dev/null +++ b/test/sequence/vector_nest.cpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (C) 2015 Kohei Takahshi + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#include +#include + +#define FUSION_SEQUENCE vector +#include "nest.hpp" + +int +main() +{ + test(); + return boost::report_errors(); +} + diff --git a/test/support/pair_nest.cpp b/test/support/pair_nest.cpp new file mode 100644 index 00000000..fbc253cb --- /dev/null +++ b/test/support/pair_nest.cpp @@ -0,0 +1,24 @@ +/*============================================================================= + Copyright (c) 2015 Kohei Takahashi + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#include +#include + +using namespace boost::fusion; + +template +void copy() +{ + pair src; + pair dest = src; + boost::ignore_unused(dest); +} + +int main() +{ + copy >(); +} + From ff25066be20df3c4951c86c384694854ffcf21af Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Mon, 8 Jun 2015 13:36:49 +0900 Subject: [PATCH 13/30] Remove unnecessary include of mpl::print. --- .../fusion/container/deque/detail/cpp03/deque_keyed_values.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp index 21b49345..fcbd74a7 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp @@ -24,7 +24,6 @@ #include #include -#include #define FUSION_VOID(z, n, _) void_ From 3521ea34173d9e26f86b82f39dcbd226478af42b Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Mon, 8 Jun 2015 21:41:54 +0900 Subject: [PATCH 14/30] Suppress warnings. --- test/algorithm/pop_back.cpp | 4 ++-- test/sequence/iterator.hpp | 2 ++ test/sequence/map.cpp | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/test/algorithm/pop_back.cpp b/test/algorithm/pop_back.cpp index b594f6c8..5e45e779 100644 --- a/test/algorithm/pop_back.cpp +++ b/test/algorithm/pop_back.cpp @@ -65,8 +65,8 @@ main() std::cout << pop_back(sv) << std::endl; // Compile check only - begin(pop_back(sv)) == end(sv); - end(pop_back(sv)) == begin(sv); + (void)(begin(pop_back(sv)) == end(sv)); + (void)(end(pop_back(sv)) == begin(sv)); } // $$$ JDG: TODO add compile fail facility $$$ diff --git a/test/sequence/iterator.hpp b/test/sequence/iterator.hpp index d9ef5e0f..d543f8eb 100644 --- a/test/sequence/iterator.hpp +++ b/test/sequence/iterator.hpp @@ -164,9 +164,11 @@ void test() BOOST_STATIC_ASSERT((is_same::type, int&>::value)); BOOST_STATIC_ASSERT((is_same::type, char&>::value)); + BOOST_STATIC_ASSERT((is_same::type, char&>::value)); BOOST_STATIC_ASSERT((is_same::type, int>::value)); BOOST_STATIC_ASSERT((is_same::type, char&>::value)); + BOOST_STATIC_ASSERT((is_same::type, char&>::value)); } { // Testing advance diff --git a/test/sequence/map.cpp b/test/sequence/map.cpp index 8dada167..5a130f8b 100644 --- a/test/sequence/map.cpp +++ b/test/sequence/map.cpp @@ -111,6 +111,7 @@ main() pair a = at_c<0>(m); (void) a; pair b = at_c<1>(m); pair c = at_c<2>(m); + (void)c; } // iterators & random access interface. @@ -154,6 +155,7 @@ main() // make sure that the correct constructor is called pair p1; pair p2 = p1; + (void)p2; } { From ddcd3cdf93d7d3abb96c093897f52ea07ab21ee3 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Wed, 17 Jun 2015 01:40:45 +0900 Subject: [PATCH 15/30] Likewise. --- .../container/deque/detail/cpp03/limits.hpp | 2 +- .../generation/detail/pp_make_list.hpp | 8 +- .../generation/detail/pp_make_set.hpp | 4 +- .../generation/detail/pp_make_vector.hpp | 4 +- .../generation/detail/pp_vector_tie.hpp | 4 +- .../fusion/container/generation/make_list.hpp | 16 +++ .../fusion/container/generation/make_set.hpp | 16 +++ .../container/generation/make_vector.hpp | 16 +++ .../container/generation/vector_tie.hpp | 15 +++ include/boost/fusion/container/list.hpp | 1 - .../container/list/detail/cpp03/list.hpp | 10 +- .../list/detail/cpp03/list_forward_ctor.hpp | 2 +- .../container/list/detail/cpp03/list_fwd.hpp | 6 +- .../list/detail/cpp03/list_to_cons.hpp | 6 +- .../list/detail/cpp03/list_to_cons_call.hpp | 2 +- .../list/detail/cpp03/preprocessed/list.hpp | 10 +- .../detail/cpp03/preprocessed/list_fwd.hpp | 10 +- .../cpp03/preprocessed/list_to_cons.hpp | 10 +- .../list/detail/list_forward_ctor.hpp | 0 .../container/list/detail/list_to_cons.hpp | 18 +++ .../list/detail/list_to_cons_call.hpp | 0 .../boost/fusion/container/list/limits.hpp | 0 include/boost/fusion/container/list/list.hpp | 18 +++ .../boost/fusion/container/list/list_fwd.hpp | 18 +++ .../container/map/detail/cpp03/limits.hpp | 2 +- include/boost/fusion/container/set.hpp | 1 - .../fusion/container/set/detail/as_set.hpp | 19 +++ .../container/set/detail/cpp03/as_set.hpp | 4 +- .../container/set/detail/cpp03/limits.hpp | 2 +- .../set/detail/cpp03/preprocessed/as_set.hpp | 10 +- .../set/detail/cpp03/preprocessed/set.hpp | 10 +- .../set/detail/cpp03/preprocessed/set_fwd.hpp | 10 +- .../fusion/container/set/detail/cpp03/set.hpp | 6 +- .../set/detail/cpp03/set_forward_ctor.hpp | 2 +- .../container/set/detail/cpp03/set_fwd.hpp | 6 +- .../container/set/detail/set_forward_ctor.hpp | 0 include/boost/fusion/container/set/limits.hpp | 0 include/boost/fusion/container/set/set.hpp | 20 +++ .../boost/fusion/container/set/set_fwd.hpp | 19 +++ include/boost/fusion/container/vector.hpp | 2 +- .../container/vector/detail/as_vector.hpp | 19 +++ .../vector/detail/cpp03/as_vector.hpp | 4 +- .../detail/cpp03/preprocessed/as_vector.hpp | 10 +- .../detail/cpp03/preprocessed/vector.hpp | 10 +- .../cpp03/preprocessed/vector_chooser.hpp | 10 +- .../detail/cpp03/preprocessed/vector_fwd.hpp | 10 +- .../vector/detail/cpp03/value_at_impl.hpp | 2 +- .../container/vector/detail/cpp03/vector.hpp | 8 +- .../vector/detail/cpp03/vector10.hpp | 8 +- .../vector/detail/cpp03/vector10_fwd.hpp | 6 +- .../vector/detail/cpp03/vector20.hpp | 8 +- .../vector/detail/cpp03/vector20_fwd.hpp | 6 +- .../vector/detail/cpp03/vector30.hpp | 8 +- .../vector/detail/cpp03/vector30_fwd.hpp | 6 +- .../vector/detail/cpp03/vector40.hpp | 8 +- .../vector/detail/cpp03/vector40_fwd.hpp | 6 +- .../vector/detail/cpp03/vector50.hpp | 8 +- .../vector/detail/cpp03/vector50_fwd.hpp | 6 +- .../detail/cpp03/vector_forward_ctor.hpp | 2 +- .../vector/detail/cpp03/vector_fwd.hpp | 16 +-- .../vector/detail/cpp03/vector_n_chooser.hpp | 16 +-- .../container/vector/detail/value_at_impl.hpp | 19 +++ .../vector/detail/vector_forward_ctor.hpp | 0 .../container/vector/detail/vector_n.hpp | 0 .../vector/detail/vector_n_chooser.hpp | 0 .../boost/fusion/container/vector/limits.hpp | 0 .../boost/fusion/container/vector/vector.hpp | 20 +++ .../fusion/container/vector/vector10.hpp | 19 +++ .../fusion/container/vector/vector10_fwd.hpp | 0 .../fusion/container/vector/vector20.hpp | 19 +++ .../fusion/container/vector/vector20_fwd.hpp | 0 .../fusion/container/vector/vector30.hpp | 19 +++ .../fusion/container/vector/vector30_fwd.hpp | 0 .../fusion/container/vector/vector40.hpp | 19 +++ .../fusion/container/vector/vector40_fwd.hpp | 0 .../fusion/container/vector/vector50.hpp | 19 +++ .../fusion/container/vector/vector50_fwd.hpp | 0 .../fusion/container/vector/vector_fwd.hpp | 19 +++ .../fusion/functional/adapter/limits.hpp | 2 +- .../boost/fusion/tuple/detail/make_tuple.hpp | 86 ++++++++++++ include/boost/fusion/tuple/detail/tuple.hpp | 122 ++++++++++++++++++ .../boost/fusion/tuple/detail/tuple_fwd.hpp | 52 ++++++++ .../boost/fusion/tuple/detail/tuple_tie.hpp | 76 +++++++++++ include/boost/fusion/tuple/make_tuple.hpp | 83 ++---------- include/boost/fusion/tuple/tuple.hpp | 117 +---------------- include/boost/fusion/tuple/tuple_fwd.hpp | 49 ++----- include/boost/fusion/tuple/tuple_tie.hpp | 73 ++--------- .../view/nview/detail/cpp03/nview_impl.hpp | 2 +- .../fusion/view/nview/detail/nview_impl.hpp | 18 +++ 89 files changed, 879 insertions(+), 440 deletions(-) delete mode 100644 include/boost/fusion/container/list/detail/list_forward_ctor.hpp delete mode 100644 include/boost/fusion/container/list/detail/list_to_cons_call.hpp delete mode 100644 include/boost/fusion/container/list/limits.hpp create mode 100644 include/boost/fusion/container/list/list.hpp delete mode 100644 include/boost/fusion/container/set/detail/set_forward_ctor.hpp delete mode 100644 include/boost/fusion/container/set/limits.hpp delete mode 100644 include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp delete mode 100644 include/boost/fusion/container/vector/detail/vector_n.hpp delete mode 100644 include/boost/fusion/container/vector/detail/vector_n_chooser.hpp delete mode 100644 include/boost/fusion/container/vector/limits.hpp create mode 100644 include/boost/fusion/container/vector/vector.hpp delete mode 100644 include/boost/fusion/container/vector/vector10_fwd.hpp delete mode 100644 include/boost/fusion/container/vector/vector20_fwd.hpp delete mode 100644 include/boost/fusion/container/vector/vector30_fwd.hpp delete mode 100644 include/boost/fusion/container/vector/vector40_fwd.hpp delete mode 100644 include/boost/fusion/container/vector/vector50_fwd.hpp create mode 100644 include/boost/fusion/tuple/detail/make_tuple.hpp create mode 100644 include/boost/fusion/tuple/detail/tuple.hpp create mode 100644 include/boost/fusion/tuple/detail/tuple_fwd.hpp create mode 100644 include/boost/fusion/tuple/detail/tuple_tie.hpp diff --git a/include/boost/fusion/container/deque/detail/cpp03/limits.hpp b/include/boost/fusion/container/deque/detail/cpp03/limits.hpp index 7892ba1a..16e25fa0 100644 --- a/include/boost/fusion/container/deque/detail/cpp03/limits.hpp +++ b/include/boost/fusion/container/deque/detail/cpp03/limits.hpp @@ -12,7 +12,7 @@ #error "C++03 only! This file should not have been included" #endif -#include +#include #if !defined(FUSION_MAX_DEQUE_SIZE) # define FUSION_MAX_DEQUE_SIZE FUSION_MAX_VECTOR_SIZE diff --git a/include/boost/fusion/container/generation/detail/pp_make_list.hpp b/include/boost/fusion/container/generation/detail/pp_make_list.hpp index 8cfc7e62..989bf36b 100644 --- a/include/boost/fusion/container/generation/detail/pp_make_list.hpp +++ b/include/boost/fusion/container/generation/detail/pp_make_list.hpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_LIST_07192005_1239) -#define FUSION_MAKE_LIST_07192005_1239 +#if !defined(FUSION_PP_MAKE_LIST_07192005_1239) +#define FUSION_PP_MAKE_LIST_07192005_1239 #include #include @@ -20,7 +20,7 @@ #include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_list" FUSION_MAX_LIST_SIZE_STR".hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/make_list" FUSION_MAX_LIST_SIZE_STR".hpp") #endif /*============================================================================= @@ -66,7 +66,7 @@ namespace boost { namespace fusion #define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ typename detail::as_fusion_element::type -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/generation/detail/pp_make_set.hpp b/include/boost/fusion/container/generation/detail/pp_make_set.hpp index 0bde4a9c..f3f9a9e8 100644 --- a/include/boost/fusion/container/generation/detail/pp_make_set.hpp +++ b/include/boost/fusion/container/generation/detail/pp_make_set.hpp @@ -22,7 +22,7 @@ #include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_set" FUSION_MAX_SET_SIZE_STR".hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/make_set" FUSION_MAX_SET_SIZE_STR".hpp") #endif /*============================================================================= @@ -83,7 +83,7 @@ FUSION_HASH endif #define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ typename detail::as_fusion_element::type -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/generation/detail/pp_make_vector.hpp b/include/boost/fusion/container/generation/detail/pp_make_vector.hpp index 57cd9b10..b19cf354 100644 --- a/include/boost/fusion/container/generation/detail/pp_make_vector.hpp +++ b/include/boost/fusion/container/generation/detail/pp_make_vector.hpp @@ -20,7 +20,7 @@ #include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_vector" FUSION_MAX_VECTOR_SIZE_STR".hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/make_vector" FUSION_MAX_VECTOR_SIZE_STR".hpp") #endif /*============================================================================= @@ -66,7 +66,7 @@ namespace boost { namespace fusion #define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ typename detail::as_fusion_element::type -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/generation/detail/pp_vector_tie.hpp b/include/boost/fusion/container/generation/detail/pp_vector_tie.hpp index 28efa3bd..132c38af 100644 --- a/include/boost/fusion/container/generation/detail/pp_vector_tie.hpp +++ b/include/boost/fusion/container/generation/detail/pp_vector_tie.hpp @@ -20,7 +20,7 @@ #include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector_tie" FUSION_MAX_VECTOR_SIZE_STR".hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector_tie" FUSION_MAX_VECTOR_SIZE_STR".hpp") #endif /*============================================================================= @@ -52,7 +52,7 @@ namespace boost { namespace fusion #define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/generation/make_list.hpp b/include/boost/fusion/container/generation/make_list.hpp index e69de29b..0aafb272 100644 --- a/include/boost/fusion/container/generation/make_list.hpp +++ b/include/boost/fusion/container/generation/make_list.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_MAKE_LIST_10262014_0647 +#define FUSION_MAKE_LIST_10262014_0647 + +#include +#include + +# include + +#endif + diff --git a/include/boost/fusion/container/generation/make_set.hpp b/include/boost/fusion/container/generation/make_set.hpp index e69de29b..705ec582 100644 --- a/include/boost/fusion/container/generation/make_set.hpp +++ b/include/boost/fusion/container/generation/make_set.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_MAKE_SET_11112014_2255 +#define FUSION_MAKE_SET_11112014_2255 + +#include +#include + +# include + +#endif + diff --git a/include/boost/fusion/container/generation/make_vector.hpp b/include/boost/fusion/container/generation/make_vector.hpp index e69de29b..8f067481 100644 --- a/include/boost/fusion/container/generation/make_vector.hpp +++ b/include/boost/fusion/container/generation/make_vector.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_MAKE_VECTOR_11112014_2252 +#define FUSION_MAKE_VECTOR_11112014_2252 + +#include +#include + +# include + +#endif + diff --git a/include/boost/fusion/container/generation/vector_tie.hpp b/include/boost/fusion/container/generation/vector_tie.hpp index e69de29b..5bb4face 100644 --- a/include/boost/fusion/container/generation/vector_tie.hpp +++ b/include/boost/fusion/container/generation/vector_tie.hpp @@ -0,0 +1,15 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_VECTOR_TIE_11112014_2302 +#define FUSION_VECTOR_TIE_11112014_2302 + +#include + +# include + +#endif + diff --git a/include/boost/fusion/container/list.hpp b/include/boost/fusion/container/list.hpp index bdb5dc9a..e3a1d8ef 100644 --- a/include/boost/fusion/container/list.hpp +++ b/include/boost/fusion/container/list.hpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include diff --git a/include/boost/fusion/container/list/detail/cpp03/list.hpp b/include/boost/fusion/container/list/detail/cpp03/list.hpp index 6a06ef4c..41b3caff 100644 --- a/include/boost/fusion/container/list/detail/cpp03/list.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/list.hpp @@ -8,16 +8,16 @@ #define FUSION_LIST_07172005_1153 #include -#include -#include +#include +#include #include #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list" FUSION_MAX_LIST_SIZE_STR ".hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/list" FUSION_MAX_LIST_SIZE_STR ".hpp") #endif /*============================================================================= @@ -72,7 +72,7 @@ namespace boost { namespace fusion // typename detail::call_param::type arg0 // , typename detail::call_param::type arg1) // : inherited_type(list_to_cons::call(arg0, arg1)) {} - #include + #include template BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED diff --git a/include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp b/include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp index a5c8aa66..f9a70678 100644 --- a/include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/list_forward_ctor.hpp @@ -18,7 +18,7 @@ #define FUSION_LIST_CL_PAREN(z, n, type) ) #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp b/include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp index d827d283..cedc7003 100644 --- a/include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/list_fwd.hpp @@ -8,14 +8,14 @@ #define FUSION_LIST_FORWARD_07172005_0224 #include -#include +#include #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list" FUSION_MAX_LIST_SIZE_STR "_fwd.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/list" FUSION_MAX_LIST_SIZE_STR "_fwd.hpp") #endif /*============================================================================= diff --git a/include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp b/include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp index bc871863..989e91ab 100644 --- a/include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/list_to_cons.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include #include @@ -24,7 +24,7 @@ namespace boost { namespace fusion }} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "preprocessed/list_to_cons" FUSION_MAX_LIST_SIZE_STR ".hpp") @@ -56,7 +56,7 @@ namespace boost { namespace fusion { namespace detail typedef cons type; - #include + #include }; template <> diff --git a/include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp b/include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp index fbae5800..e49db4a8 100644 --- a/include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/list_to_cons_call.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp index 315ffcf7..7af66f49 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_LIST_SIZE <= 10 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 20 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 30 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 40 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_LIST_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp index b9be3475..8a4037da 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_fwd.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_LIST_SIZE <= 10 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 20 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 30 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 40 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_LIST_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp index 0326bef1..d9ee9bb2 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list_to_cons.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_LIST_SIZE <= 10 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 20 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 30 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 40 -#include +#include #elif FUSION_MAX_LIST_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_LIST_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/list/detail/list_forward_ctor.hpp b/include/boost/fusion/container/list/detail/list_forward_ctor.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/list/detail/list_to_cons.hpp b/include/boost/fusion/container/list/detail/list_to_cons.hpp index e69de29b..e967c892 100644 --- a/include/boost/fusion/container/list/detail/list_to_cons.hpp +++ b/include/boost/fusion/container/list/detail/list_to_cons.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_LIST_MAIN_10262014_0447 +#define FUSION_LIST_MAIN_10262014_0447 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif diff --git a/include/boost/fusion/container/list/detail/list_to_cons_call.hpp b/include/boost/fusion/container/list/detail/list_to_cons_call.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/list/limits.hpp b/include/boost/fusion/container/list/limits.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/list/list.hpp b/include/boost/fusion/container/list/list.hpp new file mode 100644 index 00000000..b07f0fc9 --- /dev/null +++ b/include/boost/fusion/container/list/list.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_LIST_10262014_0537 +#define FUSION_LIST_10262014_0537 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif diff --git a/include/boost/fusion/container/list/list_fwd.hpp b/include/boost/fusion/container/list/list_fwd.hpp index e69de29b..d7ea0dcd 100644 --- a/include/boost/fusion/container/list/list_fwd.hpp +++ b/include/boost/fusion/container/list/list_fwd.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_LIST_FORWARD_10262014_0528 +#define FUSION_LIST_FORWARD_10262014_0528 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// With no variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif diff --git a/include/boost/fusion/container/map/detail/cpp03/limits.hpp b/include/boost/fusion/container/map/detail/cpp03/limits.hpp index 43b5abb2..1eaa528c 100644 --- a/include/boost/fusion/container/map/detail/cpp03/limits.hpp +++ b/include/boost/fusion/container/map/detail/cpp03/limits.hpp @@ -8,7 +8,7 @@ #define FUSION_MAP_LIMITS_07212005_1104 #include -#include +#include #if !defined(FUSION_MAX_MAP_SIZE) # define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE diff --git a/include/boost/fusion/container/set.hpp b/include/boost/fusion/container/set.hpp index 64453974..c9aa6241 100644 --- a/include/boost/fusion/container/set.hpp +++ b/include/boost/fusion/container/set.hpp @@ -8,7 +8,6 @@ #define FUSION_SEQUENCE_CLASS_SET_10022005_0607 #include -#include #include #include #include diff --git a/include/boost/fusion/container/set/detail/as_set.hpp b/include/boost/fusion/container/set/detail/as_set.hpp index e69de29b..1eb0d3fe 100644 --- a/include/boost/fusion/container/set/detail/as_set.hpp +++ b/include/boost/fusion/container/set/detail/as_set.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_AS_SET_11062014_2121 +#define FUSION_AS_SET_11062014_2121 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/container/set/detail/cpp03/as_set.hpp b/include/boost/fusion/container/set/detail/cpp03/as_set.hpp index a41498a3..c9159314 100644 --- a/include/boost/fusion/container/set/detail/cpp03/as_set.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/as_set.hpp @@ -49,7 +49,7 @@ BOOST_FUSION_BARRIER_END }}} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_set" FUSION_MAX_SET_SIZE_STR ".hpp") @@ -84,7 +84,7 @@ BOOST_FUSION_BARRIER_BEGIN typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/set/detail/cpp03/limits.hpp b/include/boost/fusion/container/set/detail/cpp03/limits.hpp index adfecdbd..2b800abf 100644 --- a/include/boost/fusion/container/set/detail/cpp03/limits.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/limits.hpp @@ -8,7 +8,7 @@ #define FUSION_SET_LIMITS_09162005_1103 #include -#include +#include #if !defined(FUSION_MAX_SET_SIZE) # define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp index 4231dcb1..da257ad9 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/as_set.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_SET_SIZE <= 10 -#include +#include #elif FUSION_MAX_SET_SIZE <= 20 -#include +#include #elif FUSION_MAX_SET_SIZE <= 30 -#include +#include #elif FUSION_MAX_SET_SIZE <= 40 -#include +#include #elif FUSION_MAX_SET_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_SET_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp index a64fab2c..715d5744 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_SET_SIZE <= 10 -#include +#include #elif FUSION_MAX_SET_SIZE <= 20 -#include +#include #elif FUSION_MAX_SET_SIZE <= 30 -#include +#include #elif FUSION_MAX_SET_SIZE <= 40 -#include +#include #elif FUSION_MAX_SET_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_SET_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp index 28a3e814..31e8e411 100644 --- a/include/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/preprocessed/set_fwd.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_SET_SIZE <= 10 -#include +#include #elif FUSION_MAX_SET_SIZE <= 20 -#include +#include #elif FUSION_MAX_SET_SIZE <= 30 -#include +#include #elif FUSION_MAX_SET_SIZE <= 40 -#include +#include #elif FUSION_MAX_SET_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_SET_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/set/detail/cpp03/set.hpp b/include/boost/fusion/container/set/detail/cpp03/set.hpp index 65a080b0..46191c5c 100644 --- a/include/boost/fusion/container/set/detail/cpp03/set.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/set.hpp @@ -26,10 +26,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/set" FUSION_MAX_SET_SIZE_STR ".hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/set" FUSION_MAX_SET_SIZE_STR ".hpp") #endif /*============================================================================= @@ -75,7 +75,7 @@ namespace boost { namespace fusion , typename boost::enable_if >::type* = 0) : data(rhs) {} - #include + #include template BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED diff --git a/include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp b/include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp index 5d396104..aa90b601 100644 --- a/include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/set_forward_ctor.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp b/include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp index 2de3db6d..f50f6083 100644 --- a/include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp +++ b/include/boost/fusion/container/set/detail/cpp03/set_fwd.hpp @@ -8,14 +8,14 @@ #define FUSION_SET_FORWARD_09162005_1102 #include -#include +#include #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/set" FUSION_MAX_SET_SIZE_STR "_fwd.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/set" FUSION_MAX_SET_SIZE_STR "_fwd.hpp") #endif /*============================================================================= diff --git a/include/boost/fusion/container/set/detail/set_forward_ctor.hpp b/include/boost/fusion/container/set/detail/set_forward_ctor.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/set/limits.hpp b/include/boost/fusion/container/set/limits.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/set/set.hpp b/include/boost/fusion/container/set/set.hpp index e69de29b..59f4eafc 100644 --- a/include/boost/fusion/container/set/set.hpp +++ b/include/boost/fusion/container/set/set.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_SET_11062014_1726 +#define FUSION_SET_11062014_1726 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + + diff --git a/include/boost/fusion/container/set/set_fwd.hpp b/include/boost/fusion/container/set/set_fwd.hpp index e69de29b..50d8d1c8 100644 --- a/include/boost/fusion/container/set/set_fwd.hpp +++ b/include/boost/fusion/container/set/set_fwd.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_SET_FORWARD_11062014_1720 +#define FUSION_SET_FORWARD_11062014_1720 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// With no variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/container/vector.hpp b/include/boost/fusion/container/vector.hpp index 06fa5a04..a999c8b0 100644 --- a/include/boost/fusion/container/vector.hpp +++ b/include/boost/fusion/container/vector.hpp @@ -8,7 +8,7 @@ #define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602 #include -#include +#include #include #if (FUSION_MAX_VECTOR_SIZE > 10) diff --git a/include/boost/fusion/container/vector/detail/as_vector.hpp b/include/boost/fusion/container/vector/detail/as_vector.hpp index e69de29b..eaaac896 100644 --- a/include/boost/fusion/container/vector/detail/as_vector.hpp +++ b/include/boost/fusion/container/vector/detail/as_vector.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_AS_VECTOR_11052014_1801 +#define FUSION_AS_VECTOR_11052014_1801 + +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + + diff --git a/include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp index b5f5e2d0..bd7fa76b 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/as_vector.hpp @@ -49,7 +49,7 @@ BOOST_FUSION_BARRIER_END }}} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_vector" FUSION_MAX_VECTOR_SIZE_STR ".hpp") @@ -84,7 +84,7 @@ BOOST_FUSION_BARRIER_BEGIN typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp index c70f8a7c..521443ef 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_VECTOR_SIZE <= 10 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 20 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 30 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 40 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp index 040fff94..35b8e643 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_VECTOR_SIZE <= 10 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 20 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 30 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 40 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp index e956bf24..fb8f0e2f 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp @@ -7,15 +7,15 @@ This is an auto-generated file. Do not edit! ==============================================================================*/ #if FUSION_MAX_VECTOR_SIZE <= 10 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 20 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 30 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 40 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp index e2576f90..42c3f5bc 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_VECTOR_SIZE <= 10 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 20 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 30 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 40 -#include +#include #elif FUSION_MAX_VECTOR_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" #endif diff --git a/include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp b/include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp index 06402b43..44feb600 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp @@ -1,7 +1,7 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + 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_VALUE_AT_IMPL_05052005_0232) diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector.hpp index 234fa986..5dcd6886 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector.hpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include #include @@ -56,10 +56,10 @@ #endif #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR ".hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR ".hpp") #endif /*============================================================================= @@ -128,7 +128,7 @@ namespace boost { namespace fusion // typename detail::call_param::type arg0 // , typename detail::call_param::type arg1) // : vec(arg0, arg1) {} - #include + #include template BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector10.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector10.hpp index a5ef4754..58a31dde 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector10.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector10.hpp @@ -8,7 +8,7 @@ #define FUSION_VECTOR10_05042005_0257 #include -#include +#include #include #include #include @@ -63,10 +63,10 @@ namespace boost { namespace fusion }} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector10.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector10.hpp") #endif /*============================================================================= @@ -90,7 +90,7 @@ namespace boost { namespace fusion #define FUSION_HASH # // expand vector1 to vector10 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, 10) #include BOOST_PP_ITERATE() #undef FUSION_HASH diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp index ce5cb1e8..d221faec 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp @@ -21,10 +21,10 @@ namespace boost { namespace fusion }} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector10_fwd.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector10_fwd.hpp") #endif /*============================================================================= @@ -43,7 +43,7 @@ namespace boost { namespace fusion namespace boost { namespace fusion { // expand vector1 to vector10 - #define BOOST_PP_FILENAME_1 + #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, 10) #include BOOST_PP_ITERATE() }} diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector20.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector20.hpp index 61978dcb..89f644c5 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector20.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector20.hpp @@ -9,7 +9,7 @@ #define FUSION_VECTOR20_05052005_0205 #include -#include +#include #include #include #include @@ -38,10 +38,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector20.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector20.hpp") #endif /*============================================================================= @@ -65,7 +65,7 @@ namespace boost { namespace fusion #define FUSION_HASH # // expand vector11 to vector20 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (11, 20) #include BOOST_PP_ITERATE() #undef FUSION_HASH diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp index bf1b39b4..e69b59f4 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp @@ -15,10 +15,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector20_fwd.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector20_fwd.hpp") #endif /*============================================================================= @@ -38,7 +38,7 @@ namespace boost { namespace fusion { // expand vector11 to vector20 - #define BOOST_PP_FILENAME_1 + #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (11, 20) #include BOOST_PP_ITERATE() }} diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector30.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector30.hpp index f034abd5..ad838c9a 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector30.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector30.hpp @@ -8,7 +8,7 @@ #define FUSION_VECTOR30_05052005_0206 #include -#include +#include #include #include #include @@ -37,10 +37,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector30.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector30.hpp") #endif /*============================================================================= @@ -64,7 +64,7 @@ namespace boost { namespace fusion #define FUSION_HASH # // expand vector21 to vector30 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (21, 30) #include BOOST_PP_ITERATE() #undef FUSION_HASH diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp index 23b38569..e799b096 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp @@ -15,10 +15,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector30_fwd.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector30_fwd.hpp") #endif /*============================================================================= @@ -38,7 +38,7 @@ namespace boost { namespace fusion { // expand vector21 to vector30 - #define BOOST_PP_FILENAME_1 + #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (21, 30) #include BOOST_PP_ITERATE() }} diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector40.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector40.hpp index 5a7bb44c..10770907 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector40.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector40.hpp @@ -9,7 +9,7 @@ #define FUSION_VECTOR40_05052005_0208 #include -#include +#include #include #include #include @@ -38,10 +38,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector40.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector40.hpp") #endif /*============================================================================= @@ -65,7 +65,7 @@ namespace boost { namespace fusion #define FUSION_HASH # // expand vector31 to vector40 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (31, 40) #include BOOST_PP_ITERATE() #undef FUSION_HASH diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp index fc3d29d1..790dd761 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp @@ -15,10 +15,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector40_fwd.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector40_fwd.hpp") #endif /*============================================================================= @@ -38,7 +38,7 @@ namespace boost { namespace fusion { // expand vector31 to vector40 - #define BOOST_PP_FILENAME_1 + #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (31, 40) #include BOOST_PP_ITERATE() }} diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector50.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector50.hpp index 2448d51e..6c0b48bb 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector50.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector50.hpp @@ -8,7 +8,7 @@ #define FUSION_VECTOR50_05052005_0207 #include -#include +#include #include #include #include @@ -37,10 +37,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector50.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector50.hpp") #endif /*============================================================================= @@ -64,7 +64,7 @@ namespace boost { namespace fusion #define FUSION_HASH # // expand vector41 to vector50 -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (41, 50) #include BOOST_PP_ITERATE() #undef FUSION_HASH diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp index 52083ad4..4ec5e281 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp @@ -15,10 +15,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vector50_fwd.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector50_fwd.hpp") #endif /*============================================================================= @@ -38,7 +38,7 @@ namespace boost { namespace fusion { // expand vector41 to vector50 - #define BOOST_PP_FILENAME_1 + #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (41, 50) #include BOOST_PP_ITERATE() }} diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp index 8ec63607..682f0ce3 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp @@ -11,7 +11,7 @@ #define FUSION_FORWARD_CTOR_FORWARD(z, n, _) BOOST_FUSION_FWD_ELEM(U##n, _##n) #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp index d157ea81..f894b1a6 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp @@ -9,28 +9,28 @@ #define FUSION_VECTOR_FORWARD_07072005_0125 #include -#include +#include #include -#include +#include #if (FUSION_MAX_VECTOR_SIZE > 10) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 20) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 30) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 40) -#include +#include #endif #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR "_fwd.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/vvector" FUSION_MAX_VECTOR_SIZE_STR "_fwd.hpp") #endif /*============================================================================= diff --git a/include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp b/include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp index b0e69afc..002889ce 100644 --- a/include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp +++ b/include/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp @@ -8,21 +8,21 @@ #if !defined(FUSION_VECTOR_N_CHOOSER_07072005_1248) #define FUSION_VECTOR_N_CHOOSER_07072005_1248 -#include +#include // include vector0..N where N is FUSION_MAX_VECTOR_SIZE -#include +#include #if (FUSION_MAX_VECTOR_SIZE > 10) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 20) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 30) -#include +#include #endif #if (FUSION_MAX_VECTOR_SIZE > 40) -#include +#include #endif #include @@ -38,7 +38,7 @@ namespace boost { namespace fusion }} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector_chooser" FUSION_MAX_VECTOR_SIZE_STR ".hpp") @@ -72,7 +72,7 @@ namespace boost { namespace fusion { namespace detail }; #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, BOOST_PP_DEC(FUSION_MAX_VECTOR_SIZE)) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/vector/detail/value_at_impl.hpp b/include/boost/fusion/container/vector/detail/value_at_impl.hpp index e69de29b..f71ca848 100644 --- a/include/boost/fusion/container/vector/detail/value_at_impl.hpp +++ b/include/boost/fusion/container/vector/detail/value_at_impl.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_VALUE_AT_IMPL_16122014_1641 +#define FUSION_VALUE_AT_IMPL_16122014_1641 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp b/include/boost/fusion/container/vector/detail/vector_forward_ctor.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/vector/detail/vector_n.hpp b/include/boost/fusion/container/vector/detail/vector_n.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp b/include/boost/fusion/container/vector/detail/vector_n_chooser.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/vector/limits.hpp b/include/boost/fusion/container/vector/limits.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/vector/vector.hpp b/include/boost/fusion/container/vector/vector.hpp new file mode 100644 index 00000000..2b9f0ce5 --- /dev/null +++ b/include/boost/fusion/container/vector/vector.hpp @@ -0,0 +1,20 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_VECTOR_11052014_1625 +#define FUSION_VECTOR_11052014_1625 + +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/container/vector/vector10.hpp b/include/boost/fusion/container/vector/vector10.hpp index e69de29b..f152bfe1 100644 --- a/include/boost/fusion/container/vector/vector10.hpp +++ b/include/boost/fusion/container/vector/vector10.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_VECTOR10_11052014_2316 +#define FUSION_VECTOR10_11052014_2316 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/container/vector/vector10_fwd.hpp b/include/boost/fusion/container/vector/vector10_fwd.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/vector/vector20.hpp b/include/boost/fusion/container/vector/vector20.hpp index e69de29b..c5be355d 100644 --- a/include/boost/fusion/container/vector/vector20.hpp +++ b/include/boost/fusion/container/vector/vector20.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_VECTOR20_11052014_2316 +#define FUSION_VECTOR20_11052014_2316 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/container/vector/vector20_fwd.hpp b/include/boost/fusion/container/vector/vector20_fwd.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/vector/vector30.hpp b/include/boost/fusion/container/vector/vector30.hpp index e69de29b..1a528cb5 100644 --- a/include/boost/fusion/container/vector/vector30.hpp +++ b/include/boost/fusion/container/vector/vector30.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_VECTOR30_11052014_2316 +#define FUSION_VECTOR30_11052014_2316 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/container/vector/vector30_fwd.hpp b/include/boost/fusion/container/vector/vector30_fwd.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/vector/vector40.hpp b/include/boost/fusion/container/vector/vector40.hpp index e69de29b..5faa7d59 100644 --- a/include/boost/fusion/container/vector/vector40.hpp +++ b/include/boost/fusion/container/vector/vector40.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_VECTOR40_11052014_2316 +#define FUSION_VECTOR40_11052014_2316 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/container/vector/vector40_fwd.hpp b/include/boost/fusion/container/vector/vector40_fwd.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/vector/vector50.hpp b/include/boost/fusion/container/vector/vector50.hpp index e69de29b..7b7e7a8a 100644 --- a/include/boost/fusion/container/vector/vector50.hpp +++ b/include/boost/fusion/container/vector/vector50.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_VECTOR50_11052014_2316 +#define FUSION_VECTOR50_11052014_2316 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/container/vector/vector50_fwd.hpp b/include/boost/fusion/container/vector/vector50_fwd.hpp deleted file mode 100644 index e69de29b..00000000 diff --git a/include/boost/fusion/container/vector/vector_fwd.hpp b/include/boost/fusion/container/vector/vector_fwd.hpp index e69de29b..b63099ce 100644 --- a/include/boost/fusion/container/vector/vector_fwd.hpp +++ b/include/boost/fusion/container/vector/vector_fwd.hpp @@ -0,0 +1,19 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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 FUSION_VECTOR_FORWARD_11052014_1626 +#define FUSION_VECTOR_FORWARD_11052014_1626 + +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// With no variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + diff --git a/include/boost/fusion/functional/adapter/limits.hpp b/include/boost/fusion/functional/adapter/limits.hpp index 783bc632..cdcdf821 100644 --- a/include/boost/fusion/functional/adapter/limits.hpp +++ b/include/boost/fusion/functional/adapter/limits.hpp @@ -9,7 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED) # define BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED -# include +# include # if !defined(BOOST_FUSION_UNFUSED_MAX_ARITY) # define BOOST_FUSION_UNFUSED_MAX_ARITY 6 diff --git a/include/boost/fusion/tuple/detail/make_tuple.hpp b/include/boost/fusion/tuple/detail/make_tuple.hpp new file mode 100644 index 00000000..abacb0bf --- /dev/null +++ b/include/boost/fusion/tuple/detail/make_tuple.hpp @@ -0,0 +1,86 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_MAKE_TUPLE_10032005_0843) +#define FUSION_MAKE_TUPLE_10032005_0843 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + BOOST_FUSION_GPU_ENABLED inline tuple<> + make_tuple() + { + return tuple<>(); + } +}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_tuple" FUSION_MAX_VECTOR_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_AS_FUSION_ELEMENT + +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template + BOOST_FUSION_GPU_ENABLED + inline tuple + make_tuple(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg)) + { + return tuple( + BOOST_PP_ENUM_PARAMS(N, arg)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/tuple/detail/tuple.hpp b/include/boost/fusion/tuple/detail/tuple.hpp new file mode 100644 index 00000000..f9270687 --- /dev/null +++ b/include/boost/fusion/tuple/detail/tuple.hpp @@ -0,0 +1,122 @@ +/*============================================================================= + 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_TUPLE_10032005_0810) +#define FUSION_TUPLE_10032005_0810 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/tuple" FUSION_MAX_VECTOR_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + template + struct tuple : vector + { + typedef vector< + BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> + base_type; + + BOOST_FUSION_GPU_ENABLED tuple() + : base_type() {} + + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) + : base_type(rhs) {} + + template + BOOST_FUSION_GPU_ENABLED + tuple(std::pair const& rhs) + : base_type(rhs) {} + + #include + + template + BOOST_FUSION_GPU_ENABLED + tuple& operator=(T const& rhs) + { + base_type::operator=(rhs); + return *this; + } + + BOOST_FUSION_GPU_ENABLED + tuple& operator=(tuple const& rhs) + { + base_type::operator=(rhs); + return *this; + } + + template + BOOST_FUSION_GPU_ENABLED + tuple& operator=(std::pair const& rhs) + { + base_type::operator=(rhs); + return *this; + } + }; + + template + struct tuple_size : result_of::size {}; + + template + struct tuple_element : result_of::value_at_c {}; + + template + BOOST_FUSION_GPU_ENABLED + inline typename + lazy_disable_if< + is_const + , result_of::at_c + >::type + get(Tuple& tup) + { + return at_c(tup); + } + + template + BOOST_FUSION_GPU_ENABLED + inline typename result_of::at_c::type + get(Tuple const& tup) + { + return at_c(tup); + } +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + diff --git a/include/boost/fusion/tuple/detail/tuple_fwd.hpp b/include/boost/fusion/tuple/detail/tuple_fwd.hpp new file mode 100644 index 00000000..2b52183a --- /dev/null +++ b/include/boost/fusion/tuple/detail/tuple_fwd.hpp @@ -0,0 +1,52 @@ +/*============================================================================= + 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_TUPLE_FORWARD_10032005_0956) +#define FUSION_TUPLE_FORWARD_10032005_0956 + +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/tuple" FUSION_MAX_VECTOR_SIZE_STR "_fwd.hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename T, void_) + > + struct tuple; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif + diff --git a/include/boost/fusion/tuple/detail/tuple_tie.hpp b/include/boost/fusion/tuple/detail/tuple_tie.hpp new file mode 100644 index 00000000..7ecbfe17 --- /dev/null +++ b/include/boost/fusion/tuple/detail/tuple_tie.hpp @@ -0,0 +1,76 @@ +/*============================================================================= + 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) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_TUPLE_TIE_10032005_0846) +#define FUSION_TUPLE_TIE_10032005_0846 + +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/tuple_tie" FUSION_MAX_VECTOR_SIZE_STR ".hpp") +#endif + +/*============================================================================= + 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) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ +#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_REF + +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + template + BOOST_FUSION_GPU_ENABLED + inline tuple + tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & arg)) + { + return tuple( + BOOST_PP_ENUM_PARAMS(N, arg)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/include/boost/fusion/tuple/make_tuple.hpp b/include/boost/fusion/tuple/make_tuple.hpp index 93034834..0d127736 100644 --- a/include/boost/fusion/tuple/make_tuple.hpp +++ b/include/boost/fusion/tuple/make_tuple.hpp @@ -1,86 +1,19 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2014 Kohei Takahashi 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_PP_IS_ITERATING -#if !defined(FUSION_MAKE_TUPLE_10032005_0843) -#define FUSION_MAKE_TUPLE_10032005_0843 +#ifndef FUSION_MAKE_TUPLE_14122014_0048 +#define FUSION_MAKE_TUPLE_14122014_0048 -#include -#include -#include -#include -#include +#include +#include -namespace boost { namespace fusion -{ - BOOST_FUSION_GPU_ENABLED inline tuple<> - make_tuple() - { - return tuple<>(); - } -}} - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_tuple" FUSION_MAX_VECTOR_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ -#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ - typename detail::as_fusion_element::type - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_AS_FUSION_ELEMENT - -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif -#else // defined(BOOST_PP_IS_ITERATING) /////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// +// With no variadics, we will use the C++03 version /////////////////////////////////////////////////////////////////////////////// +# include -#define N BOOST_PP_ITERATION() - - template - BOOST_FUSION_GPU_ENABLED - inline tuple - make_tuple(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& arg)) - { - return tuple( - BOOST_PP_ENUM_PARAMS(N, arg)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) +#endif diff --git a/include/boost/fusion/tuple/tuple.hpp b/include/boost/fusion/tuple/tuple.hpp index 953f2b66..674c3691 100644 --- a/include/boost/fusion/tuple/tuple.hpp +++ b/include/boost/fusion/tuple/tuple.hpp @@ -1,122 +1,19 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2014 Kohei Takahashi 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_TUPLE_10032005_0810) -#define FUSION_TUPLE_10032005_0810 +#ifndef FUSION_TUPLE_14122014_0102 +#define FUSION_TUPLE_14122014_0102 #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/tuple" FUSION_MAX_VECTOR_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - template - struct tuple : vector - { - typedef vector< - BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> - base_type; - - BOOST_FUSION_GPU_ENABLED tuple() - : base_type() {} - - BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) - : base_type(rhs) {} - - template - BOOST_FUSION_GPU_ENABLED - tuple(std::pair const& rhs) - : base_type(rhs) {} - - #include - - template - BOOST_FUSION_GPU_ENABLED - tuple& operator=(T const& rhs) - { - base_type::operator=(rhs); - return *this; - } - - BOOST_FUSION_GPU_ENABLED - tuple& operator=(tuple const& rhs) - { - base_type::operator=(rhs); - return *this; - } - - template - BOOST_FUSION_GPU_ENABLED - tuple& operator=(std::pair const& rhs) - { - base_type::operator=(rhs); - return *this; - } - }; - - template - struct tuple_size : result_of::size {}; - - template - struct tuple_element : result_of::value_at_c {}; - - template - BOOST_FUSION_GPU_ENABLED - inline typename - lazy_disable_if< - is_const - , result_of::at_c - >::type - get(Tuple& tup) - { - return at_c(tup); - } - - template - BOOST_FUSION_GPU_ENABLED - inline typename result_of::at_c::type - get(Tuple const& tup) - { - return at_c(tup); - } -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES +/////////////////////////////////////////////////////////////////////////////// +// With no variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// +# include #endif diff --git a/include/boost/fusion/tuple/tuple_fwd.hpp b/include/boost/fusion/tuple/tuple_fwd.hpp index 68969183..07420234 100644 --- a/include/boost/fusion/tuple/tuple_fwd.hpp +++ b/include/boost/fusion/tuple/tuple_fwd.hpp @@ -1,52 +1,19 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2014 Kohei Takahashi 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_TUPLE_FORWARD_10032005_0956) -#define FUSION_TUPLE_FORWARD_10032005_0956 +#ifndef FUSION_TUPLE_FORWARD_14122014_0051 +#define FUSION_TUPLE_FORWARD_14122014_0051 +#include #include -#include -#include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/tuple" FUSION_MAX_VECTOR_SIZE_STR "_fwd.hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ - struct void_; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename T, void_) - > - struct tuple; -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES +/////////////////////////////////////////////////////////////////////////////// +// With no variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// +# include #endif diff --git a/include/boost/fusion/tuple/tuple_tie.hpp b/include/boost/fusion/tuple/tuple_tie.hpp index 19050287..92028070 100644 --- a/include/boost/fusion/tuple/tuple_tie.hpp +++ b/include/boost/fusion/tuple/tuple_tie.hpp @@ -1,76 +1,19 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2014 Kohei Takahashi 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_PP_IS_ITERATING -#if !defined(FUSION_TUPLE_TIE_10032005_0846) -#define FUSION_TUPLE_TIE_10032005_0846 +#ifndef FUSION_TUPLE_TIE_14122014_0115 +#define FUSION_TUPLE_TIE_14122014_0115 -#include -#include -#include -#include -#include +#include +#include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/tuple_tie" FUSION_MAX_VECTOR_SIZE_STR ".hpp") -#endif - -/*============================================================================= - 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) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - -namespace boost { namespace fusion -{ -#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_REF - -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif -#else // defined(BOOST_PP_IS_ITERATING) /////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// +// With no variadics, we will use the C++03 version /////////////////////////////////////////////////////////////////////////////// +# include -#define N BOOST_PP_ITERATION() - - template - BOOST_FUSION_GPU_ENABLED - inline tuple - tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & arg)) - { - return tuple( - BOOST_PP_ENUM_PARAMS(N, arg)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) +#endif diff --git a/include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp b/include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp index e0d93356..08c6c9d7 100644 --- a/include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp +++ b/include/boost/fusion/view/nview/detail/cpp03/nview_impl.hpp @@ -20,7 +20,7 @@ #define BOOST_PP_ITERATION_PARAMS_1 \ (3, (1, FUSION_MAX_VECTOR_SIZE, \ - "boost/fusion/view/nview/detail/nview_impl.hpp")) \ + "boost/fusion/view/nview/detail/cpp03/nview_impl.hpp")) \ /**/ /////////////////////////////////////////////////////////////////////////////// diff --git a/include/boost/fusion/view/nview/detail/nview_impl.hpp b/include/boost/fusion/view/nview/detail/nview_impl.hpp index e69de29b..40674e35 100644 --- a/include/boost/fusion/view/nview/detail/nview_impl.hpp +++ b/include/boost/fusion/view/nview/detail/nview_impl.hpp @@ -0,0 +1,18 @@ +/*============================================================================= + Copyright (c) 2014 Kohei Takahashi + + 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_NVIEW_IMPL_17122014_1948 +#define BOOST_FUSION_NVIEW_IMPL_17122014_1948 + +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include + +#endif + From fb2e4c502f6e49d163ca2bca8fc0cd3f0f55696f Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Thu, 18 Jun 2015 08:21:08 +0900 Subject: [PATCH 16/30] Move list_tie. --- .../container/generation/{list_tie.hpp => detail/pp_list_tie.hpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename include/boost/fusion/container/generation/{list_tie.hpp => detail/pp_list_tie.hpp} (100%) diff --git a/include/boost/fusion/container/generation/list_tie.hpp b/include/boost/fusion/container/generation/detail/pp_list_tie.hpp similarity index 100% rename from include/boost/fusion/container/generation/list_tie.hpp rename to include/boost/fusion/container/generation/detail/pp_list_tie.hpp From 60cf66ad898dcb27baba2a5258669be0b46330ce Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Thu, 18 Jun 2015 08:26:11 +0900 Subject: [PATCH 17/30] Adjust include path. --- .../container/generation/detail/pp_list_tie.hpp | 8 ++++---- .../fusion/container/generation/list_tie.hpp | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 include/boost/fusion/container/generation/list_tie.hpp diff --git a/include/boost/fusion/container/generation/detail/pp_list_tie.hpp b/include/boost/fusion/container/generation/detail/pp_list_tie.hpp index 1dccb515..561677f9 100644 --- a/include/boost/fusion/container/generation/detail/pp_list_tie.hpp +++ b/include/boost/fusion/container/generation/detail/pp_list_tie.hpp @@ -5,8 +5,8 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_LIST_TIE_07192005_0109) -#define FUSION_LIST_TIE_07192005_0109 +#if !defined(FUSION_PP_LIST_TIE_07192005_0109) +#define FUSION_PP_LIST_TIE_07192005_0109 #include #include @@ -20,7 +20,7 @@ #include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/list_tie" FUSION_MAX_LIST_SIZE_STR".hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/list_tie" FUSION_MAX_LIST_SIZE_STR".hpp") #endif /*============================================================================= @@ -53,7 +53,7 @@ namespace boost { namespace fusion // $$$ shouldn't we remove_reference first to allow references? $$$ #define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/generation/list_tie.hpp b/include/boost/fusion/container/generation/list_tie.hpp new file mode 100644 index 00000000..afc0ab2f --- /dev/null +++ b/include/boost/fusion/container/generation/list_tie.hpp @@ -0,0 +1,16 @@ +/*============================================================================= + Copyright (c) 2015 Kohei Takahashi + + 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 FUSION_LIST_TIE_06182015_0825 +#define FUSION_LIST_TIE_06182015_0825 + +#include +#include + +# include + +#endif + From 2b14951660fda17bc2b98fe2e78a90adda31bc97 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Mon, 22 Jun 2015 21:58:54 +0900 Subject: [PATCH 18/30] Split c++14 like index_sequence into support/detail. --- .../std_tuple/detail/build_std_tuple.hpp | 35 +++-------- .../fusion/support/detail/index_sequence.hpp | 59 +++++++++++++++++++ test/Jamfile | 1 + test/support/index_sequence.cpp | 32 ++++++++++ 4 files changed, 101 insertions(+), 26 deletions(-) create mode 100644 include/boost/fusion/support/detail/index_sequence.hpp create mode 100644 test/support/index_sequence.cpp diff --git a/include/boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp b/include/boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp index 41e0d434..b60dc76f 100644 --- a/include/boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp +++ b/include/boost/fusion/adapted/std_tuple/detail/build_std_tuple.hpp @@ -7,26 +7,26 @@ #if !defined(BOOST_FUSION_BUILD_STD_TUPLE_05292014_0100) #define BOOST_FUSION_BUILD_STD_TUPLE_05292014_0100 -#include -#include #include +#include #include #include #include #include #include +#include namespace boost { namespace fusion { namespace detail { - template ::value - > + template ::value> struct build_std_tuple; template struct build_std_tuple { typedef std::tuple<> type; + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED static type call(First const&, Last const&) @@ -35,35 +35,18 @@ namespace boost { namespace fusion { namespace detail } }; - template struct indexed_tuple { }; - - template > - struct make_indexed_tuple; - - template - struct make_indexed_tuple> - { - typedef typename - boost::mpl::eval_if_c< - (Head == 0), - boost::mpl::identity>, - make_indexed_tuple> - >::type - type; - }; - template struct push_front_std_tuple; template - struct push_front_std_tuple> + struct push_front_std_tuple > { typedef std::tuple type; - template + template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED static type - indexed_call(T const& first, std::tuple const& rest, indexed_tuple) + indexed_call(T const& first, std::tuple const& rest, index_sequence) { return type(first, std::get(rest)...); } @@ -72,7 +55,7 @@ namespace boost { namespace fusion { namespace detail static type call(T const& first, std::tuple const& rest) { - typedef typename make_indexed_tuple::type gen; + typedef typename make_index_sequence::type gen; return indexed_call(first, rest, gen()); } }; diff --git a/include/boost/fusion/support/detail/index_sequence.hpp b/include/boost/fusion/support/detail/index_sequence.hpp new file mode 100644 index 00000000..1b596e72 --- /dev/null +++ b/include/boost/fusion/support/detail/index_sequence.hpp @@ -0,0 +1,59 @@ +/*============================================================================= + Copyright (c) 2015 Agustin K-ballo Berge + Copyright (c) 2015 Kohei Takahashi + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_SUPPORT_DETAIL_INDEX_SEQUENCE_06232015_1038 +#define BOOST_FUSION_SUPPORT_DETAIL_INDEX_SEQUENCE_06232015_1038 + +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct index_sequence + { + typedef std::size_t value_type; + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static std::size_t size() BOOST_NOEXCEPT + { return sizeof...(Ints); } + + // non standard extension + typedef index_sequence type; + }; + + template + struct _make_index_sequence_join; + + template + struct _make_index_sequence_join< + index_sequence, index_sequence + > : index_sequence + {}; + + template + struct make_index_sequence + : _make_index_sequence_join< + typename make_index_sequence::type + , typename make_index_sequence::type + > + {}; + + template <> + struct make_index_sequence<1> + : index_sequence<0> + {}; + + template <> + struct make_index_sequence<0> + : index_sequence<> + {}; +}}} + +#endif + diff --git a/test/Jamfile b/test/Jamfile index a21303eb..87b4bf51 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -188,6 +188,7 @@ project [ compile support/pair_set.cpp : : : : ] [ compile support/pair_vector.cpp : : : : ] [ compile support/pair_nest.cpp : : : : ] + [ compile support/index_sequence.cpp : : : : ] # [ compile-fail xxx.cpp : : : : ] diff --git a/test/support/index_sequence.cpp b/test/support/index_sequence.cpp new file mode 100644 index 00000000..f155a8c7 --- /dev/null +++ b/test/support/index_sequence.cpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2015 Kohei Takahashi + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#include + +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) + +#include +#include +#include + +using namespace boost::fusion; + +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1, 2> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1, 2, 3> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1, 2, 3, 4> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1, 2, 3, 4, 5> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1, 2, 3, 4, 5, 6> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1, 2, 3, 4, 5, 6, 7> >)); + +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15> >)); +BOOST_MPL_ASSERT((boost::is_same::type, detail::index_sequence<0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16> >)); + +#endif + From 275f65f9ad60eb6e1f3e0f3212c423689d0476b6 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sun, 9 Nov 2014 15:26:28 +0900 Subject: [PATCH 19/30] Implement C++11 Variadic Templates based list. --- .../fusion/container/generation/make_list.hpp | 30 ++++++ .../container/list/detail/list_to_cons.hpp | 55 +++++++++++ include/boost/fusion/container/list/list.hpp | 91 +++++++++++++++++++ .../boost/fusion/container/list/list_fwd.hpp | 25 +++++ 4 files changed, 201 insertions(+) diff --git a/include/boost/fusion/container/generation/make_list.hpp b/include/boost/fusion/container/generation/make_list.hpp index 0aafb272..fbe93979 100644 --- a/include/boost/fusion/container/generation/make_list.hpp +++ b/include/boost/fusion/container/generation/make_list.hpp @@ -10,7 +10,37 @@ #include #include +#if !defined(BOOST_FUSION_HAS_VARIADIC_LIST) # include +#else + +/////////////////////////////////////////////////////////////////////////////// +// C++11 variadic interface +/////////////////////////////////////////////////////////////////////////////// + +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct make_list + { + typedef list type; + }; + } + + template + BOOST_FUSION_GPU_ENABLED + inline list::type...> + make_list(T const&... arg) + { + return list::type...>(arg...); + } + }} + #endif +#endif diff --git a/include/boost/fusion/container/list/detail/list_to_cons.hpp b/include/boost/fusion/container/list/detail/list_to_cons.hpp index e967c892..780d637e 100644 --- a/include/boost/fusion/container/list/detail/list_to_cons.hpp +++ b/include/boost/fusion/container/list/detail/list_to_cons.hpp @@ -13,6 +13,61 @@ /////////////////////////////////////////////////////////////////////////////// // Without variadics, we will use the PP version /////////////////////////////////////////////////////////////////////////////// +#if !defined(BOOST_FUSION_HAS_VARIADIC_LIST) # include +#else + +/////////////////////////////////////////////////////////////////////////////// +// C++11 interface +/////////////////////////////////////////////////////////////////////////////// +#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct list_to_cons; + + template <> + struct list_to_cons<> + { + typedef nil_ type; + }; + + template + struct list_to_cons + { + typedef Head head_type; + typedef list_to_cons<> tail_list_to_cons; + typedef typename tail_list_to_cons::type tail_type; + + typedef cons type; + + BOOST_FUSION_GPU_ENABLED + static type + call(typename detail::call_param::type _h) + { + return type(_h); + } + }; + + template + struct list_to_cons + { + typedef Head head_type; + typedef list_to_cons tail_list_to_cons; + typedef typename tail_list_to_cons::type tail_type; + + typedef cons type; + + BOOST_FUSION_GPU_ENABLED + static type + call(typename detail::call_param::type _h, + typename detail::call_param::type ..._t) + { + return type(_h, tail_list_to_cons::call(_t...)); + } + }; +}}} #endif +#endif diff --git a/include/boost/fusion/container/list/list.hpp b/include/boost/fusion/container/list/list.hpp index b07f0fc9..ebf8b03d 100644 --- a/include/boost/fusion/container/list/list.hpp +++ b/include/boost/fusion/container/list/list.hpp @@ -13,6 +13,97 @@ /////////////////////////////////////////////////////////////////////////////// // Without variadics, we will use the PP version /////////////////////////////////////////////////////////////////////////////// +#if !defined(BOOST_FUSION_HAS_VARIADIC_LIST) # include +#else + +/////////////////////////////////////////////////////////////////////////////// +// C++11 interface +/////////////////////////////////////////////////////////////////////////////// +#include + +namespace boost { namespace fusion +{ + struct nil_; + struct void_; + + template <> + struct list<> + : detail::list_to_cons<>::type + { + private: + typedef detail::list_to_cons<> list_to_cons; + + public: + typedef list_to_cons::type inherited_type; + + BOOST_FUSION_GPU_ENABLED + list() + : inherited_type() {} + + template + BOOST_FUSION_GPU_ENABLED + list(Sequence const& rhs) + : inherited_type(rhs) {} + + template + BOOST_FUSION_GPU_ENABLED + list& + operator=(Sequence const& rhs) + { + inherited_type::operator=(rhs); + return *this; + } + }; + + template + struct list + : detail::list_to_cons::type + { + private: + typedef detail::list_to_cons list_to_cons; + + public: + typedef typename list_to_cons::type inherited_type; + + BOOST_FUSION_GPU_ENABLED + list() + : inherited_type() {} + + template + BOOST_FUSION_GPU_ENABLED + list(list const& rhs) + : inherited_type(rhs) {} + + template + BOOST_FUSION_GPU_ENABLED + list(Sequence const& rhs) + : inherited_type(rhs) {} + + BOOST_FUSION_GPU_ENABLED + explicit + list(typename detail::call_param::type ...args) + : inherited_type(list_to_cons::call(args...)) {} + + template + BOOST_FUSION_GPU_ENABLED + list& + operator=(list const& rhs) + { + inherited_type::operator=(rhs); + return *this; + } + + template + BOOST_FUSION_GPU_ENABLED + list& + operator=(Sequence const& rhs) + { + inherited_type::operator=(rhs); + return *this; + } + }; +}} #endif +#endif diff --git a/include/boost/fusion/container/list/list_fwd.hpp b/include/boost/fusion/container/list/list_fwd.hpp index d7ea0dcd..c5f26192 100644 --- a/include/boost/fusion/container/list/list_fwd.hpp +++ b/include/boost/fusion/container/list/list_fwd.hpp @@ -10,9 +10,34 @@ #include #include +#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \ + || (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) +# if defined(BOOST_FUSION_HAS_VARIADIC_LIST) +# undef BOOST_FUSION_HAS_VARIADIC_LIST +# endif +#else +# if !defined(BOOST_FUSION_HAS_VARIADIC_LIST) +# define BOOST_FUSION_HAS_VARIADIC_LIST +# endif +#endif + /////////////////////////////////////////////////////////////////////////////// // With no variadics, we will use the C++03 version /////////////////////////////////////////////////////////////////////////////// +#if !defined(BOOST_FUSION_HAS_VARIADIC_LIST) # include +#else + +/////////////////////////////////////////////////////////////////////////////// +// C++11 interface +/////////////////////////////////////////////////////////////////////////////// +namespace boost { namespace fusion +{ + struct void_; + + template + struct list; +}} #endif +#endif From 3d0412bfd161c61c5c0c30ea4b11c962552fe2f1 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sun, 31 May 2015 20:34:50 +0900 Subject: [PATCH 20/30] constexpr support for variadic list. --- .../fusion/container/generation/make_list.hpp | 2 +- include/boost/fusion/container/list/list.hpp | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/boost/fusion/container/generation/make_list.hpp b/include/boost/fusion/container/generation/make_list.hpp index fbe93979..13eba30d 100644 --- a/include/boost/fusion/container/generation/make_list.hpp +++ b/include/boost/fusion/container/generation/make_list.hpp @@ -32,7 +32,7 @@ namespace boost { namespace fusion } template - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline list::type...> make_list(T const&... arg) { diff --git a/include/boost/fusion/container/list/list.hpp b/include/boost/fusion/container/list/list.hpp index ebf8b03d..2ceea7be 100644 --- a/include/boost/fusion/container/list/list.hpp +++ b/include/boost/fusion/container/list/list.hpp @@ -37,7 +37,7 @@ namespace boost { namespace fusion public: typedef list_to_cons::type inherited_type; - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} @@ -47,7 +47,7 @@ namespace boost { namespace fusion : inherited_type(rhs) {} template - BOOST_FUSION_GPU_ENABLED + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED list& operator=(Sequence const& rhs) { @@ -66,12 +66,12 @@ namespace boost { namespace fusion public: typedef typename list_to_cons::type inherited_type; - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} template - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list(list const& rhs) : inherited_type(rhs) {} @@ -80,13 +80,13 @@ namespace boost { namespace fusion list(Sequence const& rhs) : inherited_type(rhs) {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit list(typename detail::call_param::type ...args) : inherited_type(list_to_cons::call(args...)) {} template - BOOST_FUSION_GPU_ENABLED + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED list& operator=(list const& rhs) { @@ -95,7 +95,7 @@ namespace boost { namespace fusion } template - BOOST_FUSION_GPU_ENABLED + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED list& operator=(Sequence const& rhs) { From d1973805409a841c6fd109a5d6f887263044fb50 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Thu, 18 Jun 2015 08:31:07 +0900 Subject: [PATCH 21/30] Implement C++11 list_tie. --- .../generation/detail/pp_list_tie.hpp | 2 +- .../fusion/container/generation/list_tie.hpp | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/include/boost/fusion/container/generation/detail/pp_list_tie.hpp b/include/boost/fusion/container/generation/detail/pp_list_tie.hpp index 561677f9..be25627a 100644 --- a/include/boost/fusion/container/generation/detail/pp_list_tie.hpp +++ b/include/boost/fusion/container/generation/detail/pp_list_tie.hpp @@ -53,7 +53,7 @@ namespace boost { namespace fusion // $$$ shouldn't we remove_reference first to allow references? $$$ #define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE) #include BOOST_PP_ITERATE() diff --git a/include/boost/fusion/container/generation/list_tie.hpp b/include/boost/fusion/container/generation/list_tie.hpp index afc0ab2f..91907167 100644 --- a/include/boost/fusion/container/generation/list_tie.hpp +++ b/include/boost/fusion/container/generation/list_tie.hpp @@ -10,7 +10,35 @@ #include #include +#if !defined(BOOST_FUSION_HAS_VARIADIC_LIST) # include +#else + +/////////////////////////////////////////////////////////////////////////////// +// C++11 variadic interface +/////////////////////////////////////////////////////////////////////////////// + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct list_tie + { + typedef list type; + }; + } + + template + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + inline list + list_tie(T&... arg) + { + return list(arg...); + } +}} + +#endif #endif From 0e8e857c2f97a50410ee48cd8ba4e1e30a104ffb Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Mon, 22 Jun 2015 23:43:49 +0900 Subject: [PATCH 22/30] Fix fusion::make_list return type. --- include/boost/fusion/container/generation/make_list.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/fusion/container/generation/make_list.hpp b/include/boost/fusion/container/generation/make_list.hpp index 13eba30d..e88f553a 100644 --- a/include/boost/fusion/container/generation/make_list.hpp +++ b/include/boost/fusion/container/generation/make_list.hpp @@ -27,16 +27,16 @@ namespace boost { namespace fusion template struct make_list { - typedef list type; + typedef list::type...> type; }; } template BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline list::type...> + inline typename result_of::make_list::type make_list(T const&... arg) { - return list::type...>(arg...); + return typename result_of::make_list::type(arg...); } }} From 78c5228d93dd1c95323b5bbd3de5c29458cd4759 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Tue, 23 Jun 2015 00:37:24 +0900 Subject: [PATCH 23/30] Move internal type into private. --- include/boost/fusion/container/list/detail/cpp03/list.hpp | 3 +-- .../container/list/detail/cpp03/preprocessed/list10.hpp | 2 +- .../container/list/detail/cpp03/preprocessed/list20.hpp | 2 +- .../container/list/detail/cpp03/preprocessed/list30.hpp | 2 +- .../container/list/detail/cpp03/preprocessed/list40.hpp | 2 +- .../container/list/detail/cpp03/preprocessed/list50.hpp | 2 +- include/boost/fusion/container/list/list.hpp | 8 +++----- 7 files changed, 9 insertions(+), 12 deletions(-) diff --git a/include/boost/fusion/container/list/detail/cpp03/list.hpp b/include/boost/fusion/container/list/detail/cpp03/list.hpp index 41b3caff..b39489b0 100644 --- a/include/boost/fusion/container/list/detail/cpp03/list.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/list.hpp @@ -46,10 +46,9 @@ namespace boost { namespace fusion typedef detail::list_to_cons list_to_cons; - - public: typedef typename list_to_cons::type inherited_type; + public: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp index 9a289365..69ffc9c2 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list10.hpp @@ -18,8 +18,8 @@ namespace boost { namespace fusion typedef detail::list_to_cons list_to_cons; - public: typedef typename list_to_cons::type inherited_type; + public: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp index a201cb44..0d6ea768 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list20.hpp @@ -18,8 +18,8 @@ namespace boost { namespace fusion typedef detail::list_to_cons list_to_cons; - public: typedef typename list_to_cons::type inherited_type; + public: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp index ef9e65fc..9087c119 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list30.hpp @@ -18,8 +18,8 @@ namespace boost { namespace fusion typedef detail::list_to_cons list_to_cons; - public: typedef typename list_to_cons::type inherited_type; + public: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp index 570b2ccd..24a474fe 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list40.hpp @@ -18,8 +18,8 @@ namespace boost { namespace fusion typedef detail::list_to_cons list_to_cons; - public: typedef typename list_to_cons::type inherited_type; + public: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} diff --git a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp index d237cdf9..b810bea1 100644 --- a/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp +++ b/include/boost/fusion/container/list/detail/cpp03/preprocessed/list50.hpp @@ -18,8 +18,8 @@ namespace boost { namespace fusion typedef detail::list_to_cons list_to_cons; - public: typedef typename list_to_cons::type inherited_type; + public: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} diff --git a/include/boost/fusion/container/list/list.hpp b/include/boost/fusion/container/list/list.hpp index 2ceea7be..d291baf9 100644 --- a/include/boost/fusion/container/list/list.hpp +++ b/include/boost/fusion/container/list/list.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2014 Kohei Takahashi + Copyright (c) 2014-2015 Kohei Takahashi 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) @@ -33,10 +33,9 @@ namespace boost { namespace fusion { private: typedef detail::list_to_cons<> list_to_cons; - - public: typedef list_to_cons::type inherited_type; + public: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} @@ -62,10 +61,9 @@ namespace boost { namespace fusion { private: typedef detail::list_to_cons list_to_cons; - - public: typedef typename list_to_cons::type inherited_type; + public: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} From 5cceded23b8dd02b8728fde57916fe2f81ed6c21 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Tue, 23 Jun 2015 08:56:58 +0900 Subject: [PATCH 24/30] Drop unnecessary specialization. --- .../container/list/detail/list_to_cons.hpp | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/include/boost/fusion/container/list/detail/list_to_cons.hpp b/include/boost/fusion/container/list/detail/list_to_cons.hpp index 780d637e..1ce1cfba 100644 --- a/include/boost/fusion/container/list/detail/list_to_cons.hpp +++ b/include/boost/fusion/container/list/detail/list_to_cons.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2014 Kohei Takahashi + Copyright (c) 2014-2015 Kohei Takahashi 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) @@ -7,6 +7,7 @@ #ifndef FUSION_LIST_MAIN_10262014_0447 #define FUSION_LIST_MAIN_10262014_0447 +#include #include #include @@ -21,6 +22,7 @@ // C++11 interface /////////////////////////////////////////////////////////////////////////////// #include +#include namespace boost { namespace fusion { namespace detail { @@ -31,23 +33,9 @@ namespace boost { namespace fusion { namespace detail struct list_to_cons<> { typedef nil_ type; - }; - template - struct list_to_cons - { - typedef Head head_type; - typedef list_to_cons<> tail_list_to_cons; - typedef typename tail_list_to_cons::type tail_type; - - typedef cons type; - - BOOST_FUSION_GPU_ENABLED - static type - call(typename detail::call_param::type _h) - { - return type(_h); - } + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static type call() { return type(); } }; template @@ -59,7 +47,7 @@ namespace boost { namespace fusion { namespace detail typedef cons type; - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _h, typename detail::call_param::type ..._t) From 1e21a4eb7a4240a9bdb9304ab03ea5761e8a96a3 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Fri, 20 Mar 2015 00:34:37 +0900 Subject: [PATCH 25/30] Add new traits named has_no_bounds. It is for special usecase: some thing like a window function. This commit relative to c9ae4fc8869faace8eaec797c9c6d90328832f25 . Users who wants to access out-of-bounds of sequence, specify new category to it. struct sequence { struct category : fusion::random_access_traversal_tag , fusion::no_bounds_tag {}; ... }; All of bounds related intrinsics of the /no-bounds-sequence/ *should* guarantee to be well-defined or SFINAE-friendly, or compile error. --- .../boost/fusion/sequence/intrinsic/at.hpp | 8 +++++-- .../fusion/sequence/intrinsic/value_at.hpp | 23 +++++++++++++++++-- include/boost/fusion/support/category_of.hpp | 9 ++++++++ 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp index fdfa72a6..319165b8 100644 --- a/include/boost/fusion/sequence/intrinsic/at.hpp +++ b/include/boost/fusion/sequence/intrinsic/at.hpp @@ -10,12 +10,13 @@ #include #include #include +#include #include #include #include #include #include -#include +#include namespace boost { namespace fusion { @@ -64,7 +65,10 @@ namespace boost { namespace fusion template struct at_impl : mpl::if_< - mpl::less::template apply::type> + mpl::or_< + mpl::less::template apply::type> + , traits::has_no_bounds + > , typename extension::at_impl::template apply , mpl::empty_base >::type diff --git a/include/boost/fusion/sequence/intrinsic/value_at.hpp b/include/boost/fusion/sequence/intrinsic/value_at.hpp index 362669b5..875b4b41 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at.hpp @@ -9,8 +9,13 @@ #include #include +#include +#include +#include +#include #include #include +#include namespace boost { namespace fusion { @@ -50,12 +55,26 @@ namespace boost { namespace fusion struct value_at_impl; } + namespace detail + { + template + struct value_at_impl + : mpl::if_< + mpl::or_< + mpl::less::template apply::type> + , traits::has_no_bounds + > + , typename extension::value_at_impl::template apply + , mpl::empty_base + >::type + {}; + } + namespace result_of { template struct value_at - : extension::value_at_impl::type>:: - template apply + : detail::value_at_impl::type> {}; template diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp index 6bdf6d02..5fa0b3ad 100644 --- a/include/boost/fusion/support/category_of.hpp +++ b/include/boost/fusion/support/category_of.hpp @@ -36,6 +36,8 @@ namespace boost { namespace fusion struct associative_tag {}; + struct no_bounds_tag {}; + namespace extension { template @@ -107,6 +109,13 @@ namespace boost { namespace fusion random_access_traversal_tag , typename category_of::type> {}; + + template + struct has_no_bounds + : is_base_of< + no_bounds_tag + , typename category_of::type> + {}; } }} From 8aa35da4c40d8c7ee9bf73cf5960a9a894014798 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Sun, 22 Mar 2015 09:45:17 +0900 Subject: [PATCH 26/30] Add documents for No-bounds sequences. --- doc/fusion.qbk | 4 +++ doc/html/index.html | 4 +++ doc/iterator.qbk | 6 ++++ doc/sequence.qbk | 68 +++++++++++++++++++++++++++++++++++++++++++-- doc/support.qbk | 2 ++ 5 files changed, 81 insertions(+), 3 deletions(-) diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 81542f02..5233aade 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -79,6 +79,7 @@ [def __bidirectional_iterator__ [link fusion.iterator.concepts.bidirectional_iterator Bidirectional Iterator]] [def __random_access_iterator__ [link fusion.iterator.concepts.random_access_iterator Random Access Iterator]] [def __associative_iterator__ [link fusion.iterator.concepts.associative_iterator Associative Iterator]] +[def __no_bounds_iterator__ [link fusion.iterator.concepts.no_bounds_iterator No-bounds Iterator]] [def __next__ [link fusion.iterator.functions.next `next`]] [def __prior__ [link fusion.iterator.functions.prior `prior`]] @@ -108,6 +109,7 @@ [def __bidirectional_sequence__ [link fusion.sequence.concepts.bidirectional_sequence Bidirectional Sequence]] [def __random_access_sequence__ [link fusion.sequence.concepts.random_access_sequence Random Access Sequence]] [def __associative_sequence__ [link fusion.sequence.concepts.associative_sequence Associative Sequence]] +[def __no_bounds_sequence__ [link fusion.sequence.concepts.no_bounds_sequence No-bounds Sequence]] [def __containers__ [link fusion.container Container]] [def __vector__ [link fusion.container.vector `vector`]] @@ -337,6 +339,8 @@ [def __adt_attribute_proxy__ [link fusion.notes.adt_attribute_proxy `adt_attribute_proxy`]] +[def __window_function__ [@http://en.wikipedia.org/wiki/Window_function Window Function]] + [include preface.qbk] [include introduction.qbk] [include quick_start.qbk] diff --git a/doc/html/index.html b/doc/html/index.html index 0fd880b6..626cf2e5 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -69,6 +69,8 @@ Access Iterator
Associative Iterator
+
No-bounds + Iterator
Functions
@@ -116,6 +118,8 @@ Access Sequence
Associative Sequence
+
No-bounds + Sequence
Intrinsic
diff --git a/doc/iterator.qbk b/doc/iterator.qbk index d400003c..121ef123 100644 --- a/doc/iterator.qbk +++ b/doc/iterator.qbk @@ -257,6 +257,12 @@ expressions must be valid: [endsect] +[section No-bounds Iterator] + +[warning In this release, __no_bounds_iterator__ concept has no effect. It's reserved for future release.] + +[endsect] + [endsect] [section Functions] diff --git a/doc/sequence.qbk b/doc/sequence.qbk index 5957a6e1..8fc4ce9e 100644 --- a/doc/sequence.qbk +++ b/doc/sequence.qbk @@ -39,6 +39,11 @@ These concepts pertain to sequence traversal. The __associative_sequence__ concept is orthogonal to traversal. An Associative Sequence allows efficient retrieval of elements based on keys. +[heading Boundary] + +The __no_bounds_sequence__ concept is also orthogonal to traversal and associativity. +A No-bounds Sequence allows out-of-bounds access. + [section Forward Sequence] [heading Description] @@ -359,6 +364,55 @@ you can use `__result_of_value_at_key__`.] [endsect] +[section No-bounds Sequence] + +[heading Description] + +A No-bounds Sequence allows Out-of-Bounds access: it will achieve something like a __window_function__. +Most of the sequences do not meet this concept, but some special usecases do. + +[important User extending sequences should handle any parameters or be SFINAE-friendly.] + +[variablelist Notation + [[`s`] [An Fusion Sequence]] + [[`S`] [An Fusion Sequence type]] + [[`M`] [An __mpl__ integral constant]] + [[`N`] [An integral constant]] + [[`K`] [An arbitrary /key/ type]] + [[`o`] [An arbitrary object]] + [[`e`] [A Sequence element]] +] + +[heading Valid Expressions] + +[table + [[Expression] [Return type] [Type Requirements] [Runtime Complexity]] + [[`__at_c__(s)`] [Any type] [] [Depends on its traversability]] + [[`__at_c__(s) = o`] [Any type] [] [Depends on its traversability]] + [[`__at__(s)`] [Any type] [] [Depends on its traversability]] + [[`__at__(s) = o`] [Any type] [] [Depends on its traversability]] + [[`__at_key__(s)`] [Any type] [`S` should be __associative_sequence__] [Depends on its traversability]] + [[`__at_key__(s) = o`] [Any type] [`S` should be __associative_sequence__] [Depends on its traversability]] +] + +[heading Result Type Expressions] + +[table + [[Expression] [Compile Time Complexity]] + [[`__result_of_at__::type`] [Depends on its traversability]] + [[`__result_of_at_c__::type`] [Depends on its traversability]] + [[`__result_of_value_at__::type`] [Depends on its traversability]] + [[`__result_of_value_at_c__::type`] [Depends on its traversability]] + [[`__result_of_at_key__::type`] [Depends on its traversability]] + [[`__result_of_value_at_key__::type`] [Depends on its traversability]] +] + +[heading Models] + +* none. + +[endsect] + [endsect] [section Intrinsic] @@ -686,7 +740,7 @@ element from the beginning of the sequence, is a valid expression. Else, returns a type convertible to the M-th element from the beginning of the sequence. -[*Precondition]: `0 <= M::value < __size__(s)` +[*Precondition]: `0 <= M::value < __size__(seq)` (where `seq` is not __no_bounds_sequence__) [*Semantics]: Equivalent to @@ -739,7 +793,7 @@ element from the beginning of the sequence, is a valid expression. Else, returns a type convertible to the N-th element from the beginning of the sequence. -[*Precondition]: `0 <= N < __size__(s)` +[*Precondition]: `0 <= N < __size__(seq)` (where `seq` is not __no_bounds_sequence__) [*Semantics]: Equivalent to @@ -833,7 +887,7 @@ the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the element associated with Key, is a valid expression. Else, returns a type convertible to the element associated with Key. -[*Precondition]: `has_key(seq) == true` +[*Precondition]: `has_key(seq) == true` (where `seq` is not __no_bounds_sequence__) [*Semantics]: Returns the element associated with Key. @@ -1149,6 +1203,8 @@ the actual element type, use __result_of_value_at__]. [*Return type]: Any type. +[*Precondition]: `0 <= M::value < __result_of_size__::value` (where `Seq` is not __no_bounds_sequence__) + [*Semantics]: Returns the result type of using __at__ to access the `M`th element of `Seq`. [heading Header] @@ -1191,6 +1247,8 @@ get the actual element type, use __result_of_value_at_c__]. [*Return type]: Any type +[*Precondition]: `0 <= N < __result_of_size__::value` (where `Seq` is not __no_bounds_sequence__) + [*Semantics]: Returns the result type of using __at_c__ to access the `N`th element of `Seq`. [heading Header] @@ -1350,6 +1408,8 @@ you want to get the actual element type, use __result_of_value_at_key__]. [*Return type]: Any type. +[*Precondition]: `has_key::type::value == true` (where `Seq` is not __no_bounds_sequence__) + [*Semantics]: Returns the result of using __at_key__ to access the element with key type `Key` in `Seq`. [heading Header] @@ -1388,6 +1448,8 @@ Returns the actual element type associated with a Key from the __sequence__. [*Return type]: Any type. +[*Precondition]: `has_key::type::value == true` (where `Seq` is not __no_bounds_sequence__) + [*Semantics]: Returns the actual element type associated with key type `Key` in `Seq`. diff --git a/doc/support.qbk b/doc/support.qbk index 3e7b7a70..c7c48741 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -227,6 +227,8 @@ And optionally from: namespace boost { namespace fusion { struct associative_tag {}; + + struct no_bounds_tag {}; }} [*Semantics]: Establishes the conceptual classification of a particular From a31009e73c24cb2c990c075192fe7058517b9d11 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Tue, 23 Jun 2015 11:17:30 +0900 Subject: [PATCH 27/30] at_key and value_at_key are aware of no-bounds sequence. --- .../fusion/sequence/intrinsic/at_key.hpp | 23 +++++++++++++++-- .../sequence/intrinsic/value_at_key.hpp | 25 ++++++++++++++++--- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/include/boost/fusion/sequence/intrinsic/at_key.hpp b/include/boost/fusion/sequence/intrinsic/at_key.hpp index 4693a905..e8fa2ade 100644 --- a/include/boost/fusion/sequence/intrinsic/at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/at_key.hpp @@ -11,10 +11,15 @@ #include #include #include +#include #include #include #include +#include #include +#include +#include +#include namespace boost { namespace fusion { @@ -64,12 +69,26 @@ namespace boost { namespace fusion struct at_key_impl; } + namespace detail + { + template + struct at_key_impl + : mpl::if_< + mpl::or_< + typename extension::has_key_impl::template apply + , traits::has_no_bounds + > + , typename extension::at_key_impl::template apply + , mpl::empty_base + >::type + {}; + } + namespace result_of { template struct at_key - : extension::at_key_impl::type>:: - template apply + : detail::at_key_impl::type> {}; } diff --git a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp index 6d8be3fb..8b3940e7 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp @@ -10,10 +10,15 @@ #include #include +#include +#include +#include #include +#include #include #include #include +#include namespace boost { namespace fusion { @@ -52,13 +57,27 @@ namespace boost { namespace fusion template <> struct value_at_key_impl; } - + + namespace detail + { + template + struct value_at_key_impl + : mpl::if_< + mpl::or_< + typename extension::has_key_impl::template apply + , traits::has_no_bounds + > + , typename extension::value_at_key_impl::template apply + , mpl::empty_base + >::type + {}; + } + namespace result_of { template struct value_at_key - : extension::value_at_key_impl::type>:: - template apply + : detail::value_at_key_impl::type> {}; } }} From d5ce74dffd0d461a931dc90cb36b5919ba80f99b Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Wed, 24 Jun 2015 15:26:33 +0900 Subject: [PATCH 28/30] Added move ctor/assign for c++11 fusion::list. --- include/boost/fusion/container/list/list.hpp | 50 ++++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/include/boost/fusion/container/list/list.hpp b/include/boost/fusion/container/list/list.hpp index d291baf9..865a6d7d 100644 --- a/include/boost/fusion/container/list/list.hpp +++ b/include/boost/fusion/container/list/list.hpp @@ -20,12 +20,12 @@ /////////////////////////////////////////////////////////////////////////////// // C++11 interface /////////////////////////////////////////////////////////////////////////////// +#include #include namespace boost { namespace fusion { struct nil_; - struct void_; template <> struct list<> @@ -40,6 +40,7 @@ namespace boost { namespace fusion list() : inherited_type() {} +#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs) @@ -53,6 +54,21 @@ namespace boost { namespace fusion inherited_type::operator=(rhs); return *this; } +#else + template + BOOST_FUSION_GPU_ENABLED + list(Sequence&& rhs) + : inherited_type(std::forward(rhs)) {} + + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + list& + operator=(Sequence&& rhs) + { + inherited_type::operator=(std::forward(rhs)); + return *this; + } +#endif }; template @@ -68,30 +84,24 @@ namespace boost { namespace fusion list() : inherited_type() {} - template - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - list(list const& rhs) - : inherited_type(rhs) {} - +#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs) : inherited_type(rhs) {} +#else + template + BOOST_FUSION_GPU_ENABLED + list(Sequence&& rhs) + : inherited_type(std::forward(rhs)) {} +#endif BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit list(typename detail::call_param::type ...args) : inherited_type(list_to_cons::call(args...)) {} - template - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - list& - operator=(list const& rhs) - { - inherited_type::operator=(rhs); - return *this; - } - +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED list& @@ -100,6 +110,16 @@ namespace boost { namespace fusion inherited_type::operator=(rhs); return *this; } +#else + template + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + list& + operator=(Sequence&& rhs) + { + inherited_type::operator=(std::forward(rhs)); + return *this; + } +#endif }; }} From d29dc277e64b1649b3c63bbeeef6d86710d914fc Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Thu, 25 Jun 2015 22:42:44 +0900 Subject: [PATCH 29/30] Renaming No-bounds concept to Unbounded concept. --- doc/fusion.qbk | 4 ++-- doc/html/index.html | 6 ++--- doc/iterator.qbk | 4 ++-- doc/sequence.qbk | 22 +++++++++---------- doc/support.qbk | 2 +- .../boost/fusion/sequence/intrinsic/at.hpp | 2 +- .../fusion/sequence/intrinsic/at_key.hpp | 2 +- .../fusion/sequence/intrinsic/value_at.hpp | 2 +- .../sequence/intrinsic/value_at_key.hpp | 2 +- include/boost/fusion/support/category_of.hpp | 6 ++--- 10 files changed, 26 insertions(+), 26 deletions(-) diff --git a/doc/fusion.qbk b/doc/fusion.qbk index 5233aade..0a24cb32 100644 --- a/doc/fusion.qbk +++ b/doc/fusion.qbk @@ -79,7 +79,7 @@ [def __bidirectional_iterator__ [link fusion.iterator.concepts.bidirectional_iterator Bidirectional Iterator]] [def __random_access_iterator__ [link fusion.iterator.concepts.random_access_iterator Random Access Iterator]] [def __associative_iterator__ [link fusion.iterator.concepts.associative_iterator Associative Iterator]] -[def __no_bounds_iterator__ [link fusion.iterator.concepts.no_bounds_iterator No-bounds Iterator]] +[def __unbounded_iterator__ [link fusion.iterator.concepts.unbounded_iterator Unbounded Iterator]] [def __next__ [link fusion.iterator.functions.next `next`]] [def __prior__ [link fusion.iterator.functions.prior `prior`]] @@ -109,7 +109,7 @@ [def __bidirectional_sequence__ [link fusion.sequence.concepts.bidirectional_sequence Bidirectional Sequence]] [def __random_access_sequence__ [link fusion.sequence.concepts.random_access_sequence Random Access Sequence]] [def __associative_sequence__ [link fusion.sequence.concepts.associative_sequence Associative Sequence]] -[def __no_bounds_sequence__ [link fusion.sequence.concepts.no_bounds_sequence No-bounds Sequence]] +[def __unbounded_sequence__ [link fusion.sequence.concepts.unbounded_sequence Unbounded Sequence]] [def __containers__ [link fusion.container Container]] [def __vector__ [link fusion.container.vector `vector`]] diff --git a/doc/html/index.html b/doc/html/index.html index 626cf2e5..957609a9 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -69,7 +69,7 @@ Access Iterator
Associative Iterator
-
No-bounds +
Unbounded Iterator
Functions
@@ -118,7 +118,7 @@ Access Sequence
Associative Sequence
-
No-bounds +
Unbounded Sequence
Intrinsic
@@ -278,7 +278,7 @@ - +

Last revised: May 10, 2013 at 05:54:18 GMT

Last revised: June 25, 2015 at 13:41:27 GMT


diff --git a/doc/iterator.qbk b/doc/iterator.qbk index 121ef123..ef33240a 100644 --- a/doc/iterator.qbk +++ b/doc/iterator.qbk @@ -257,9 +257,9 @@ expressions must be valid: [endsect] -[section No-bounds Iterator] +[section Unbounded Iterator] -[warning In this release, __no_bounds_iterator__ concept has no effect. It's reserved for future release.] +[warning In this release, __unbounded_iterator__ concept has no effect. It's reserved for future release.] [endsect] diff --git a/doc/sequence.qbk b/doc/sequence.qbk index 8fc4ce9e..a9fc83d3 100644 --- a/doc/sequence.qbk +++ b/doc/sequence.qbk @@ -41,8 +41,8 @@ Sequence allows efficient retrieval of elements based on keys. [heading Boundary] -The __no_bounds_sequence__ concept is also orthogonal to traversal and associativity. -A No-bounds Sequence allows out-of-bounds access. +The __unbounded_sequence__ concept is also orthogonal to traversal and associativity. +A Unbounded Sequence allows out-of-bounds access. [section Forward Sequence] @@ -364,11 +364,11 @@ you can use `__result_of_value_at_key__`.] [endsect] -[section No-bounds Sequence] +[section Unbounded Sequence] [heading Description] -A No-bounds Sequence allows Out-of-Bounds access: it will achieve something like a __window_function__. +A Unbounded Sequence allows Out-of-Bounds access: it will achieve something like a __window_function__. Most of the sequences do not meet this concept, but some special usecases do. [important User extending sequences should handle any parameters or be SFINAE-friendly.] @@ -740,7 +740,7 @@ element from the beginning of the sequence, is a valid expression. Else, returns a type convertible to the M-th element from the beginning of the sequence. -[*Precondition]: `0 <= M::value < __size__(seq)` (where `seq` is not __no_bounds_sequence__) +[*Precondition]: `0 <= M::value < __size__(seq)` (where `seq` is not __unbounded_sequence__) [*Semantics]: Equivalent to @@ -793,7 +793,7 @@ element from the beginning of the sequence, is a valid expression. Else, returns a type convertible to the N-th element from the beginning of the sequence. -[*Precondition]: `0 <= N < __size__(seq)` (where `seq` is not __no_bounds_sequence__) +[*Precondition]: `0 <= N < __size__(seq)` (where `seq` is not __unbounded_sequence__) [*Semantics]: Equivalent to @@ -887,7 +887,7 @@ the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the element associated with Key, is a valid expression. Else, returns a type convertible to the element associated with Key. -[*Precondition]: `has_key(seq) == true` (where `seq` is not __no_bounds_sequence__) +[*Precondition]: `has_key(seq) == true` (where `seq` is not __unbounded_sequence__) [*Semantics]: Returns the element associated with Key. @@ -1203,7 +1203,7 @@ the actual element type, use __result_of_value_at__]. [*Return type]: Any type. -[*Precondition]: `0 <= M::value < __result_of_size__::value` (where `Seq` is not __no_bounds_sequence__) +[*Precondition]: `0 <= M::value < __result_of_size__::value` (where `Seq` is not __unbounded_sequence__) [*Semantics]: Returns the result type of using __at__ to access the `M`th element of `Seq`. @@ -1247,7 +1247,7 @@ get the actual element type, use __result_of_value_at_c__]. [*Return type]: Any type -[*Precondition]: `0 <= N < __result_of_size__::value` (where `Seq` is not __no_bounds_sequence__) +[*Precondition]: `0 <= N < __result_of_size__::value` (where `Seq` is not __unbounded_sequence__) [*Semantics]: Returns the result type of using __at_c__ to access the `N`th element of `Seq`. @@ -1408,7 +1408,7 @@ you want to get the actual element type, use __result_of_value_at_key__]. [*Return type]: Any type. -[*Precondition]: `has_key::type::value == true` (where `Seq` is not __no_bounds_sequence__) +[*Precondition]: `has_key::type::value == true` (where `Seq` is not __unbounded_sequence__) [*Semantics]: Returns the result of using __at_key__ to access the element with key type `Key` in `Seq`. @@ -1448,7 +1448,7 @@ Returns the actual element type associated with a Key from the __sequence__. [*Return type]: Any type. -[*Precondition]: `has_key::type::value == true` (where `Seq` is not __no_bounds_sequence__) +[*Precondition]: `has_key::type::value == true` (where `Seq` is not __unbounded_sequence__) [*Semantics]: Returns the actual element type associated with key type `Key` in `Seq`. diff --git a/doc/support.qbk b/doc/support.qbk index c7c48741..3e3b8a4e 100644 --- a/doc/support.qbk +++ b/doc/support.qbk @@ -228,7 +228,7 @@ And optionally from: { struct associative_tag {}; - struct no_bounds_tag {}; + struct unbounded_tag {}; }} [*Semantics]: Establishes the conceptual classification of a particular diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp index 319165b8..a103e078 100644 --- a/include/boost/fusion/sequence/intrinsic/at.hpp +++ b/include/boost/fusion/sequence/intrinsic/at.hpp @@ -67,7 +67,7 @@ namespace boost { namespace fusion : mpl::if_< mpl::or_< mpl::less::template apply::type> - , traits::has_no_bounds + , traits::is_unbounded > , typename extension::at_impl::template apply , mpl::empty_base diff --git a/include/boost/fusion/sequence/intrinsic/at_key.hpp b/include/boost/fusion/sequence/intrinsic/at_key.hpp index e8fa2ade..9454cb56 100644 --- a/include/boost/fusion/sequence/intrinsic/at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/at_key.hpp @@ -76,7 +76,7 @@ namespace boost { namespace fusion : mpl::if_< mpl::or_< typename extension::has_key_impl::template apply - , traits::has_no_bounds + , traits::is_unbounded > , typename extension::at_key_impl::template apply , mpl::empty_base diff --git a/include/boost/fusion/sequence/intrinsic/value_at.hpp b/include/boost/fusion/sequence/intrinsic/value_at.hpp index 875b4b41..152f0c94 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at.hpp @@ -62,7 +62,7 @@ namespace boost { namespace fusion : mpl::if_< mpl::or_< mpl::less::template apply::type> - , traits::has_no_bounds + , traits::is_unbounded > , typename extension::value_at_impl::template apply , mpl::empty_base diff --git a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp index 8b3940e7..76baf1b8 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp @@ -65,7 +65,7 @@ namespace boost { namespace fusion : mpl::if_< mpl::or_< typename extension::has_key_impl::template apply - , traits::has_no_bounds + , traits::is_unbounded > , typename extension::value_at_key_impl::template apply , mpl::empty_base diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp index 5fa0b3ad..92b0ea1b 100644 --- a/include/boost/fusion/support/category_of.hpp +++ b/include/boost/fusion/support/category_of.hpp @@ -36,7 +36,7 @@ namespace boost { namespace fusion struct associative_tag {}; - struct no_bounds_tag {}; + struct unbounded_tag {}; namespace extension { @@ -111,9 +111,9 @@ namespace boost { namespace fusion {}; template - struct has_no_bounds + struct is_unbounded : is_base_of< - no_bounds_tag + unbounded_tag , typename category_of::type> {}; } From c0fcaae95159677eb7b5830f62d03f41b950ad89 Mon Sep 17 00:00:00 2001 From: Kohei Takahashi Date: Wed, 1 Jul 2015 02:25:13 +0900 Subject: [PATCH 30/30] Prevent use of conversion ctor for copy purpose. Some compilers elect conversion ctor for copy purpose in implicitly defined copy ctor with derived class. --- include/boost/fusion/container/list/cons.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/fusion/container/list/cons.hpp b/include/boost/fusion/container/list/cons.hpp index d649068a..e05b62eb 100644 --- a/include/boost/fusion/container/list/cons.hpp +++ b/include/boost/fusion/container/list/cons.hpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -79,6 +80,7 @@ namespace boost { namespace fusion , typename boost::enable_if< mpl::and_< traits::is_sequence + , mpl::not_ > , mpl::not_ > > // use copy to car instead >::type* /*dummy*/ = 0 )