diff options
Diffstat (limited to 'boost/fusion/container/vector/detail')
-rw-r--r-- | boost/fusion/container/vector/detail/as_vector.hpp | 134 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/as_vector.hpp | 139 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/limits.hpp | 24 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/as_vector.hpp) | 10 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector.hpp) | 10 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector10.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector10_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector20.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector20_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector30.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector30_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector40.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector40_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector50.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector50_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector_chooser.hpp) | 10 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector_chooser10.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector_chooser20.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector_chooser30.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector_chooser40.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector_chooser50.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp) | 10 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector10.hpp) | 4 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector20.hpp) | 4 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector20_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector30.hpp) | 4 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector30_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector40.hpp) | 4 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector40_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector50.hpp) | 4 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp (renamed from boost/fusion/container/vector/detail/preprocessed/vvector50_fwd.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp | 34 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector.hpp | 247 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector10.hpp | 105 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp | 64 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector20.hpp | 81 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp | 59 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector30.hpp | 80 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp | 59 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector40.hpp | 81 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp | 59 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector50.hpp | 80 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp | 59 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp (renamed from boost/fusion/container/vector/detail/vector_forward_ctor.hpp) | 2 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp | 66 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector_n.hpp (renamed from boost/fusion/container/vector/detail/vector_n.hpp) | 0 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp (renamed from boost/fusion/container/vector/detail/vector_n_chooser.hpp) | 16 | ||||
-rw-r--r-- | boost/fusion/container/vector/detail/value_at_impl.hpp | 35 |
54 files changed, 1283 insertions, 201 deletions
diff --git a/boost/fusion/container/vector/detail/as_vector.hpp b/boost/fusion/container/vector/detail/as_vector.hpp index b5f5e2d05f..eaaac89638 100644 --- a/boost/fusion/container/vector/detail/as_vector.hpp +++ b/boost/fusion/container/vector/detail/as_vector.hpp @@ -1,139 +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_AS_VECTOR_09222005_0950) -#define FUSION_AS_VECTOR_09222005_0950 +#ifndef FUSION_AS_VECTOR_11052014_1801 +#define FUSION_AS_VECTOR_11052014_1801 -#include <boost/preprocessor/iterate.hpp> -#include <boost/preprocessor/repetition/enum_params.hpp> -#include <boost/preprocessor/repetition/enum_binary_params.hpp> -#include <boost/preprocessor/repetition/repeat.hpp> -#include <boost/preprocessor/cat.hpp> -#include <boost/preprocessor/inc.hpp> -#include <boost/preprocessor/dec.hpp> -#include <boost/fusion/container/vector/vector.hpp> -#include <boost/fusion/iterator/value_of.hpp> -#include <boost/fusion/iterator/deref.hpp> -#include <boost/fusion/iterator/next.hpp> +#include <boost/fusion/support/config.hpp> -namespace boost { namespace fusion { namespace detail -{ -BOOST_FUSION_BARRIER_BEGIN - - template <int size> - struct as_vector; - - template <> - struct as_vector<0> - { - template <typename Iterator> - struct apply - { - typedef vector0<> type; - }; - - template <typename Iterator> - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static typename apply<Iterator>::type - call(Iterator) - { - return vector0<>(); - } - }; - -BOOST_FUSION_BARRIER_END -}}} - -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include <boost/fusion/container/vector/detail/preprocessed/as_vector.hpp> -#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<BOOST_PP_CAT(I, n)>::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<BOOST_PP_CAT(I, n)>::type \ - BOOST_PP_CAT(T, n); - -#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/as_vector.hpp> -#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 -// +// Without variadics, we will use the PP version /////////////////////////////////////////////////////////////////////////////// +# include <boost/fusion/container/vector/detail/cpp03/as_vector.hpp> -#define N BOOST_PP_ITERATION() - - template <> - struct as_vector<N> - { - template <typename I0> - 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)<BOOST_PP_ENUM_PARAMS(N, T)> type; - }; - - template <typename Iterator> - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static typename apply<Iterator>::type - call(Iterator const& i0) - { - typedef apply<Iterator> 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)); - } - }; +#endif -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) diff --git a/boost/fusion/container/vector/detail/cpp03/as_vector.hpp b/boost/fusion/container/vector/detail/cpp03/as_vector.hpp new file mode 100644 index 0000000000..bd7fa76be6 --- /dev/null +++ b/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 <boost/preprocessor/iterate.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/preprocessor/repetition/repeat.hpp> +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/inc.hpp> +#include <boost/preprocessor/dec.hpp> +#include <boost/fusion/container/vector/vector.hpp> +#include <boost/fusion/iterator/value_of.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/fusion/iterator/next.hpp> + +namespace boost { namespace fusion { namespace detail +{ +BOOST_FUSION_BARRIER_BEGIN + + template <int size> + struct as_vector; + + template <> + struct as_vector<0> + { + template <typename Iterator> + struct apply + { + typedef vector0<> type; + }; + + template <typename Iterator> + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static typename apply<Iterator>::type + call(Iterator) + { + return vector0<>(); + } + }; + +BOOST_FUSION_BARRIER_END +}}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp> +#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<BOOST_PP_CAT(I, n)>::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<BOOST_PP_CAT(I, n)>::type \ + BOOST_PP_CAT(T, n); + +#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/cpp03/as_vector.hpp> +#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<N> + { + template <typename I0> + 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)<BOOST_PP_ENUM_PARAMS(N, T)> type; + }; + + template <typename Iterator> + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static typename apply<Iterator>::type + call(Iterator const& i0) + { + typedef apply<Iterator> 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/boost/fusion/container/vector/detail/cpp03/limits.hpp b/boost/fusion/container/vector/detail/cpp03/limits.hpp new file mode 100644 index 0000000000..6e106144bb --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/fusion/support/detail/pp_round.hpp> + +#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/boost/fusion/container/vector/detail/preprocessed/as_vector.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp index c70f8a7c42..521443ef8e 100644 --- a/boost/fusion/container/vector/detail/preprocessed/as_vector.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_VECTOR_SIZE <= 10 -#include <boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 20 -#include <boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 30 -#include <boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 40 -#include <boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 50 -#include <boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp> #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" #endif diff --git a/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp index 92fdbc07b4..92fdbc07b4 100644 --- a/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector10.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp index fa99a4a58b..fa99a4a58b 100644 --- a/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector20.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp index 578524a642..578524a642 100644 --- a/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector30.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp index 93d63ee2f9..93d63ee2f9 100644 --- a/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector40.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp index 6f6cc4802f..6f6cc4802f 100644 --- a/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/as_vector50.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp index 040fff948b..35b8e64329 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_VECTOR_SIZE <= 10 -#include <boost/fusion/container/vector/detail/preprocessed/vvector10.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 20 -#include <boost/fusion/container/vector/detail/preprocessed/vvector20.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 30 -#include <boost/fusion/container/vector/detail/preprocessed/vvector30.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 40 -#include <boost/fusion/container/vector/detail/preprocessed/vvector40.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 50 -#include <boost/fusion/container/vector/detail/preprocessed/vvector50.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp> #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" #endif diff --git a/boost/fusion/container/vector/detail/preprocessed/vector10.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp index d5e8aad116..d5e8aad116 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector10.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector10_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp index 33f817ffaf..33f817ffaf 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector10_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector20.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp index 91a9e59c46..91a9e59c46 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector20.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector20_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp index b1672857a8..b1672857a8 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector20_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector30.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp index c823452038..c823452038 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector30.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector30_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp index 39f96aa836..39f96aa836 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector30_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector40.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp index ec16fcd94a..ec16fcd94a 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector40.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector40_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp index e1d6e0911a..e1d6e0911a 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector40_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector50.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp index 2d787edfb6..2d787edfb6 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector50.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector50_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp index 6829e9b50f..6829e9b50f 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector50_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector_chooser.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp index e956bf24e1..fb8f0e2f5b 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector_chooser.hpp +++ b/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 <boost/fusion/container/vector/detail/preprocessed/vector_chooser10.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 20 -#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser20.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 30 -#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser30.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 40 -#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser40.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 50 -#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser50.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp> #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" #endif diff --git a/boost/fusion/container/vector/detail/preprocessed/vector_chooser10.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp index d631b53208..d631b53208 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector_chooser10.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser10.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector_chooser20.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp index 9628f483ed..9628f483ed 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector_chooser20.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser20.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector_chooser30.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp index 38edabf45e..38edabf45e 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector_chooser30.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser30.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector_chooser40.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp index a784b75736..a784b75736 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector_chooser40.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser40.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector_chooser50.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp index fc9a260e20..fc9a260e20 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector_chooser50.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser50.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp index e2576f9004..42c3f5bc6c 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_VECTOR_SIZE <= 10 -#include <boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 20 -#include <boost/fusion/container/vector/detail/preprocessed/vvector20_fwd.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 30 -#include <boost/fusion/container/vector/detail/preprocessed/vvector30_fwd.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 40 -#include <boost/fusion/container/vector/detail/preprocessed/vvector40_fwd.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp> #elif FUSION_MAX_VECTOR_SIZE <= 50 -#include <boost/fusion/container/vector/detail/preprocessed/vvector50_fwd.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp> #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" #endif diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp index 792809bc9c..cd2bd58b31 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10.hpp @@ -38,10 +38,6 @@ namespace boost { namespace fusion vector(vector const& rhs) : vec(rhs.vec) {} template <typename Sequence> - -# if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -# endif BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0) diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp index 97f64fa359..97f64fa359 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector10_fwd.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp index f1d01617e1..809485fe25 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20.hpp @@ -38,10 +38,6 @@ namespace boost { namespace fusion vector(vector const& rhs) : vec(rhs.vec) {} template <typename Sequence> - -# if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -# endif BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0) diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector20_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp index 8d4ea992d1..8d4ea992d1 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector20_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector20_fwd.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp index dccc1f0186..3f75a05f35 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30.hpp @@ -38,10 +38,6 @@ namespace boost { namespace fusion vector(vector const& rhs) : vec(rhs.vec) {} template <typename Sequence> - -# if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -# endif BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0) diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector30_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp index 03f289e9c9..03f289e9c9 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector30_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector30_fwd.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp index 442a4fe995..6c7654ccc5 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40.hpp @@ -38,10 +38,6 @@ namespace boost { namespace fusion vector(vector const& rhs) : vec(rhs.vec) {} template <typename Sequence> - -# if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -# endif BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0) diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector40_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp index 55c1097a75..55c1097a75 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector40_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector40_fwd.hpp diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp index 5237a4f305..47fce0e19d 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50.hpp @@ -38,10 +38,6 @@ namespace boost { namespace fusion vector(vector const& rhs) : vec(rhs.vec) {} template <typename Sequence> - -# if !defined(BOOST_CLANG) - BOOST_CONSTEXPR -# endif BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs, typename boost::enable_if<traits::is_sequence<Sequence> >::type* = 0) diff --git a/boost/fusion/container/vector/detail/preprocessed/vvector50_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp index 621f1606bf..621f1606bf 100644 --- a/boost/fusion/container/vector/detail/preprocessed/vvector50_fwd.hpp +++ b/boost/fusion/container/vector/detail/cpp03/preprocessed/vvector50_fwd.hpp diff --git a/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp b/boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp new file mode 100644 index 0000000000..44feb6002c --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/mpl/at.hpp> + +namespace boost { namespace fusion +{ + struct vector_tag; + + namespace extension + { + template <typename Tag> + struct value_at_impl; + + template <> + struct value_at_impl<vector_tag> + { + template <typename Sequence, typename N> + struct apply + { + typedef typename mpl::at<typename Sequence::types, N>::type type; + }; + }; + } +}} + +#endif diff --git a/boost/fusion/container/vector/detail/cpp03/vector.hpp b/boost/fusion/container/vector/detail/cpp03/vector.hpp new file mode 100644 index 0000000000..5dcd688650 --- /dev/null +++ b/boost/fusion/container/vector/detail/cpp03/vector.hpp @@ -0,0 +1,247 @@ +/*============================================================================= + 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 <boost/preprocessor/iterate.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/fusion/support/config.hpp> +#include <boost/fusion/support/is_sequence.hpp> +#include <boost/fusion/container/vector/vector_fwd.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp> +#include <boost/fusion/sequence/intrinsic/begin.hpp> +#include <boost/mpl/at.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/type_traits/add_reference.hpp> +#include <boost/type_traits/add_const.hpp> +#include <boost/type_traits/is_base_of.hpp> +#include <boost/detail/workaround.hpp> +#include <boost/core/enable_if.hpp> + +#define FUSION_HASH # + +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) + +#define BOOST_FUSION_VECTOR_COPY_INIT() \ + ctor_helper(rhs, is_base_of<vector, Sequence>()) \ + +#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 <typename T> \ + 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 <boost/fusion/container/vector/detail/cpp03/preprocessed/vector.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)> + struct vector + : sequence_base<vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> > + { + private: + + typedef typename detail::vector_n_chooser< + BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>::type + vector_n; + + template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename U)> + 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_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename U)> + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector(vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, U)> const& rhs) + : vec(rhs.vec) {} + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector(vector const& rhs) + : vec(rhs.vec) {} + + template <typename Sequence> + BOOST_FUSION_GPU_ENABLED + vector(Sequence const& rhs, + typename boost::enable_if<traits::is_sequence<Sequence> >::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<T0>::type arg0 + // , typename detail::call_param<T1>::type arg1) + // : vec(arg0, arg1) {} + #include <boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp> + + template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename U)> + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, U)> const& rhs) + { + vec = rhs.vec; + return *this; + } + + template <typename T> + 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<vector_n>(rhs.vec)) {} + + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector&& rhs) + { + vec = std::forward<vector_n>(rhs.vec); + return *this; + } + + template <typename T> + 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 <int N> + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference< + typename mpl::at_c<types, N>::type + >::type + at_impl(mpl::int_<N> index) + { + return vec.at_impl(index); + } + + template <int N> + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference< + typename add_const< + typename mpl::at_c<types, N>::type + >::type + >::type + at_impl(mpl::int_<N> index) const + { + return vec.at_impl(index); + } + + template <typename I> + BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference< + typename mpl::at<types, I>::type + >::type + at_impl(I /*index*/) + { + return vec.at_impl(mpl::int_<I::value>()); + } + + template<typename I> + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + typename add_reference< + typename add_const< + typename mpl::at<types, I>::type + >::type + >::type + at_impl(I /*index*/) const + { + return vec.at_impl(mpl::int_<I::value>()); + } + + 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/boost/fusion/container/vector/detail/cpp03/vector10.hpp b/boost/fusion/container/vector/detail/cpp03/vector10.hpp new file mode 100644 index 0000000000..58a31ddec3 --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp> +#include <boost/fusion/support/sequence_base.hpp> +#include <boost/fusion/support/is_sequence.hpp> +#include <boost/fusion/support/detail/access.hpp> +#include <boost/fusion/iterator/next.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/fusion/sequence/intrinsic/begin.hpp> +#include <boost/fusion/container/vector/detail/at_impl.hpp> +#include <boost/fusion/container/vector/detail/value_at_impl.hpp> +#include <boost/fusion/container/vector/detail/begin_impl.hpp> +#include <boost/fusion/container/vector/detail/end_impl.hpp> + +#include <boost/mpl/void.hpp> +#include <boost/mpl/int.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/at.hpp> +#include <boost/mpl/vector/vector10.hpp> +#include <boost/type_traits/is_convertible.hpp> +#include <boost/utility/enable_if.hpp> + +#include <boost/preprocessor/dec.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum.hpp> +#include <boost/preprocessor/repetition/enum_shifted.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/preprocessor/repetition/repeat_from_to.hpp> + +namespace boost { namespace fusion +{ + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_traversal_tag; + + template <typename Dummy> + struct vector0 : sequence_base<vector0<Dummy> > + { + 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<typename Sequence> + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector0(Sequence const& /*seq*/) BOOST_NOEXCEPT + {} + }; +}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector10.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector_n.hpp> +#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/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp new file mode 100644 index 0000000000..d221faece2 --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> + +namespace boost { namespace fusion +{ + template <typename Dummy = void> + struct vector0; +}} + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector10_fwd.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector10_fwd.hpp> + #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 <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)> + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/boost/fusion/container/vector/detail/cpp03/vector20.hpp b/boost/fusion/container/vector/detail/cpp03/vector20.hpp new file mode 100644 index 0000000000..89f644c5a4 --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp> +#include <boost/fusion/support/sequence_base.hpp> +#include <boost/fusion/support/is_sequence.hpp> +#include <boost/fusion/support/detail/access.hpp> +#include <boost/fusion/iterator/next.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/fusion/sequence/intrinsic/begin.hpp> +#include <boost/fusion/container/vector/detail/at_impl.hpp> +#include <boost/fusion/container/vector/detail/value_at_impl.hpp> +#include <boost/fusion/container/vector/detail/begin_impl.hpp> +#include <boost/fusion/container/vector/detail/end_impl.hpp> + +#include <boost/mpl/void.hpp> +#include <boost/mpl/int.hpp> +#include <boost/mpl/at.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/vector/vector20.hpp> +#include <boost/type_traits/is_convertible.hpp> +#include <boost/utility/enable_if.hpp> + +#include <boost/preprocessor/dec.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum.hpp> +#include <boost/preprocessor/repetition/enum_shifted.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/preprocessor/repetition/repeat_from_to.hpp> + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector20.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector_n.hpp> +#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/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp new file mode 100644 index 0000000000..e69b59f4a6 --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector20_fwd.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector20_fwd.hpp> + #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 <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)> + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/boost/fusion/container/vector/detail/cpp03/vector30.hpp b/boost/fusion/container/vector/detail/cpp03/vector30.hpp new file mode 100644 index 0000000000..ad838c9ac6 --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp> +#include <boost/fusion/support/sequence_base.hpp> +#include <boost/fusion/support/is_sequence.hpp> +#include <boost/fusion/support/detail/access.hpp> +#include <boost/fusion/iterator/next.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/fusion/sequence/intrinsic/begin.hpp> +#include <boost/fusion/container/vector/detail/at_impl.hpp> +#include <boost/fusion/container/vector/detail/value_at_impl.hpp> +#include <boost/fusion/container/vector/detail/begin_impl.hpp> +#include <boost/fusion/container/vector/detail/end_impl.hpp> + +#include <boost/mpl/void.hpp> +#include <boost/mpl/int.hpp> +#include <boost/mpl/at.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/vector/vector30.hpp> +#include <boost/type_traits/is_convertible.hpp> +#include <boost/utility/enable_if.hpp> + +#include <boost/preprocessor/dec.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum.hpp> +#include <boost/preprocessor/repetition/enum_shifted.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/preprocessor/repetition/repeat_from_to.hpp> + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector30.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector_n.hpp> +#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/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp new file mode 100644 index 0000000000..e799b09657 --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector30_fwd.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector30_fwd.hpp> + #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 <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)> + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/boost/fusion/container/vector/detail/cpp03/vector40.hpp b/boost/fusion/container/vector/detail/cpp03/vector40.hpp new file mode 100644 index 0000000000..10770907eb --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp> +#include <boost/fusion/support/sequence_base.hpp> +#include <boost/fusion/support/is_sequence.hpp> +#include <boost/fusion/support/detail/access.hpp> +#include <boost/fusion/iterator/next.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/fusion/sequence/intrinsic/begin.hpp> +#include <boost/fusion/container/vector/detail/at_impl.hpp> +#include <boost/fusion/container/vector/detail/value_at_impl.hpp> +#include <boost/fusion/container/vector/detail/begin_impl.hpp> +#include <boost/fusion/container/vector/detail/end_impl.hpp> + +#include <boost/mpl/void.hpp> +#include <boost/mpl/int.hpp> +#include <boost/mpl/at.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/vector/vector40.hpp> +#include <boost/type_traits/is_convertible.hpp> +#include <boost/utility/enable_if.hpp> + +#include <boost/preprocessor/dec.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum.hpp> +#include <boost/preprocessor/repetition/enum_shifted.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/preprocessor/repetition/repeat_from_to.hpp> + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector40.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector_n.hpp> +#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/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp new file mode 100644 index 0000000000..790dd76135 --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector40_fwd.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector40_fwd.hpp> + #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 <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)> + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/boost/fusion/container/vector/detail/cpp03/vector50.hpp b/boost/fusion/container/vector/detail/cpp03/vector50.hpp new file mode 100644 index 0000000000..6c0b48bbc4 --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp> +#include <boost/fusion/support/sequence_base.hpp> +#include <boost/fusion/support/is_sequence.hpp> +#include <boost/fusion/support/detail/access.hpp> +#include <boost/fusion/iterator/next.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/fusion/sequence/intrinsic/begin.hpp> +#include <boost/fusion/container/vector/detail/at_impl.hpp> +#include <boost/fusion/container/vector/detail/value_at_impl.hpp> +#include <boost/fusion/container/vector/detail/begin_impl.hpp> +#include <boost/fusion/container/vector/detail/end_impl.hpp> + +#include <boost/mpl/void.hpp> +#include <boost/mpl/int.hpp> +#include <boost/mpl/at.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/vector/vector50.hpp> +#include <boost/type_traits/is_convertible.hpp> +#include <boost/utility/enable_if.hpp> + +#include <boost/preprocessor/dec.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum.hpp> +#include <boost/preprocessor/repetition/enum_shifted.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/preprocessor/repetition/repeat_from_to.hpp> + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector50.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector_n.hpp> +#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/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp new file mode 100644 index 0000000000..4ec5e2812c --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector50_fwd.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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 <boost/fusion/container/vector/detail/cpp03/vector50_fwd.hpp> + #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 <BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), typename T)> + struct BOOST_PP_CAT(vector, BOOST_PP_ITERATION()); + +#endif diff --git a/boost/fusion/container/vector/detail/vector_forward_ctor.hpp b/boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp index 8ec636074e..682f0ce367 100644 --- a/boost/fusion/container/vector/detail/vector_forward_ctor.hpp +++ b/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 \ - <boost/fusion/container/vector/detail/vector_forward_ctor.hpp> + <boost/fusion/container/vector/detail/cpp03/vector_forward_ctor.hpp> #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() diff --git a/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp b/boost/fusion/container/vector/detail/cpp03/vector_fwd.hpp new file mode 100644 index 0000000000..f894b1a699 --- /dev/null +++ b/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 <boost/fusion/support/config.hpp> +#include <boost/fusion/container/vector/detail/cpp03/limits.hpp> +#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp> + +#include <boost/fusion/container/vector/detail/cpp03/vector10.hpp> +#if (FUSION_MAX_VECTOR_SIZE > 10) +#include <boost/fusion/container/vector/detail/cpp03/vector20.hpp> +#endif +#if (FUSION_MAX_VECTOR_SIZE > 20) +#include <boost/fusion/container/vector/detail/cpp03/vector30.hpp> +#endif +#if (FUSION_MAX_VECTOR_SIZE > 30) +#include <boost/fusion/container/vector/detail/cpp03/vector40.hpp> +#endif +#if (FUSION_MAX_VECTOR_SIZE > 40) +#include <boost/fusion/container/vector/detail/cpp03/vector50.hpp> +#endif + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector_fwd.hpp> +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "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/boost/fusion/container/vector/detail/vector_n.hpp b/boost/fusion/container/vector/detail/cpp03/vector_n.hpp index 932ce36c7d..932ce36c7d 100644 --- a/boost/fusion/container/vector/detail/vector_n.hpp +++ b/boost/fusion/container/vector/detail/cpp03/vector_n.hpp diff --git a/boost/fusion/container/vector/detail/vector_n_chooser.hpp b/boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp index b0e69afc79..002889ceb5 100644 --- a/boost/fusion/container/vector/detail/vector_n_chooser.hpp +++ b/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 <boost/fusion/container/vector/limits.hpp> +#include <boost/fusion/container/vector/detail/cpp03/limits.hpp> // include vector0..N where N is FUSION_MAX_VECTOR_SIZE -#include <boost/fusion/container/vector/vector10.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector10.hpp> #if (FUSION_MAX_VECTOR_SIZE > 10) -#include <boost/fusion/container/vector/vector20.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector20.hpp> #endif #if (FUSION_MAX_VECTOR_SIZE > 20) -#include <boost/fusion/container/vector/vector30.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector30.hpp> #endif #if (FUSION_MAX_VECTOR_SIZE > 30) -#include <boost/fusion/container/vector/vector40.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector40.hpp> #endif #if (FUSION_MAX_VECTOR_SIZE > 40) -#include <boost/fusion/container/vector/vector50.hpp> +#include <boost/fusion/container/vector/detail/cpp03/vector50.hpp> #endif #include <boost/preprocessor/cat.hpp> @@ -38,7 +38,7 @@ namespace boost { namespace fusion }} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include <boost/fusion/container/vector/detail/preprocessed/vector_chooser.hpp> +#include <boost/fusion/container/vector/detail/cpp03/preprocessed/vector_chooser.hpp> #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 \ - <boost/fusion/container/vector/detail/vector_n_chooser.hpp> + <boost/fusion/container/vector/detail/cpp03/vector_n_chooser.hpp> #define BOOST_PP_ITERATION_LIMITS (1, BOOST_PP_DEC(FUSION_MAX_VECTOR_SIZE)) #include BOOST_PP_ITERATE() diff --git a/boost/fusion/container/vector/detail/value_at_impl.hpp b/boost/fusion/container/vector/detail/value_at_impl.hpp index 06402b43ee..f71ca8486d 100644 --- a/boost/fusion/container/vector/detail/value_at_impl.hpp +++ b/boost/fusion/container/vector/detail/value_at_impl.hpp @@ -1,34 +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 + 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 +#ifndef FUSION_VALUE_AT_IMPL_16122014_1641 +#define FUSION_VALUE_AT_IMPL_16122014_1641 +#include <boost/config.hpp> #include <boost/fusion/support/config.hpp> -#include <boost/mpl/at.hpp> -namespace boost { namespace fusion -{ - struct vector_tag; - - namespace extension - { - template <typename Tag> - struct value_at_impl; - - template <> - struct value_at_impl<vector_tag> - { - template <typename Sequence, typename N> - struct apply - { - typedef typename mpl::at<typename Sequence::types, N>::type type; - }; - }; - } -}} +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +# include <boost/fusion/container/vector/detail/cpp03/value_at_impl.hpp> #endif + |