3 #pragma warning(disable: 4512) // assignment operator could not be generated
4 #pragma warning(disable: 4510) // default constructor could not be generated
5 #pragma warning(disable: 4610) // can never be instantiated - user defined constructor required
7 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
9 #ifndef BOOST_PHOENIX_SUPPORT_VECTOR_HPP
10 #define BOOST_PHOENIX_SUPPORT_VECTOR_HPP
12 #include <boost/phoenix/core/limits.hpp>
13 #include <boost/phoenix/support/iterate.hpp>
14 #include <boost/preprocessor/repetition/enum_shifted_params.hpp>
15 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
17 #define BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL BOOST_FUSION_ADAPT_TPL_STRUCT
19 #include <boost/phoenix/support/preprocessed/vector.hpp>
25 #if !BOOST_PHOENIX_IS_ITERATING
27 #ifndef BOOST_PHOENIX_SUPPORT_VECTOR_HPP
28 #define BOOST_PHOENIX_SUPPORT_VECTOR_HPP
30 #include <boost/phoenix/core/limits.hpp>
31 #include <boost/phoenix/support/iterate.hpp>
32 #include <boost/preprocessor/repetition/enum_shifted_params.hpp>
33 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
35 #define BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL BOOST_FUSION_ADAPT_TPL_STRUCT
37 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
38 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/vector_" BOOST_PHOENIX_LIMIT_STR ".hpp")
40 /*==============================================================================
41 Copyright (c) 2005-2010 Joel de Guzman
42 Copyright (c) 2010 Thomas Heller
44 Distributed under the Boost Software License, Version 1.0. (See accompanying
45 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
46 ==============================================================================*/
47 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
48 #pragma wave option(preserve: 1)
52 typedef BOOST_PP_CAT(A, N) BOOST_PP_CAT(member_type, N); \
53 BOOST_PP_CAT(A, N) BOOST_PP_CAT(a, N); \
56 (BOOST_PP_CAT(A, N)) \
59 (BOOST_PP_CAT(T, N)) \
62 (BOOST_PP_CAT(A, N), BOOST_PP_CAT(a, N)) \
65 namespace boost { namespace phoenix
67 template <typename Dummy = void>
70 typedef mpl::int_<0> size_type;
71 static const int size_value = 0;
74 template <int> struct vector_chooser;
77 struct vector_chooser<0>
79 template <typename Dummy = void>
82 typedef vector0<> type;
88 #define BOOST_PHOENIX_ITERATION_PARAMS \
89 (3, (1, BOOST_PP_INC(BOOST_PHOENIX_LIMIT), \
90 <boost/phoenix/support/vector.hpp>))
91 #include BOOST_PHOENIX_ITERATE()
98 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
99 #pragma wave option(output: null)
106 namespace boost { namespace phoenix
108 template <BOOST_PHOENIX_typename_A>
109 struct BOOST_PP_CAT(vector, BOOST_PHOENIX_ITERATION)
111 BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M0, _)
113 typedef mpl::int_<BOOST_PHOENIX_ITERATION> size_type;
114 static const int size_value = BOOST_PHOENIX_ITERATION;
117 BOOST_PP_CAT(vector, BOOST_PP_DEC(BOOST_PHOENIX_ITERATION))<BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PHOENIX_ITERATION, A)>
120 args_type args() const
122 args_type r = {BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PHOENIX_ITERATION, a)};
128 struct vector_chooser<BOOST_PHOENIX_ITERATION>
130 template <BOOST_PHOENIX_typename_A>
133 typedef BOOST_PP_CAT(vector, BOOST_PHOENIX_ITERATION)<BOOST_PHOENIX_A> type;
138 #define BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM0 \
139 BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M1, _) \
141 #define BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM1 \
144 boost::phoenix::vector \
145 , BOOST_PHOENIX_ITERATION \
148 BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M1, _) \
150 #define BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM2 \
151 BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M3, _) \
154 BOOST_FUSION_ADAPT_TPL_STRUCT_NO_PARTIAL(
155 BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM0
156 , BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM1
157 , BOOST_PHOENIX_SUPPORT_VECTOR_ADAT_PARAM2