File indexing completed on 2025-01-18 09:46:32
0001
0002 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0003 #ifndef BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
0004 #define BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
0005
0006 #include <boost/phoenix/support/iterate.hpp>
0007
0008 #include <boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp>
0009
0010 #endif
0011 #else
0012
0013 #if !BOOST_PHOENIX_IS_ITERATING
0014
0015 #ifndef BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
0016 #define BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
0017
0018 #include <boost/phoenix/support/iterate.hpp>
0019
0020 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0021 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/dynamic_" BOOST_PHOENIX_LIMIT_STR ".hpp")
0022 #endif
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0033 #pragma wave option(preserve: 1)
0034 #endif
0035
0036 #define BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER(_, N, __) \
0037 typedef \
0038 typename expression::dynamic_member< \
0039 mpl::int_<N> \
0040 , self_type * \
0041 >::type const \
0042 BOOST_PP_CAT(member, BOOST_PP_INC(N)); \
0043
0044
0045 #define BOOST_PHOENIX_ITERATION_PARAMS \
0046 (3, (1, BOOST_PHOENIX_DYNAMIC_LIMIT, \
0047 <boost/phoenix/scope/detail/cpp03/dynamic.hpp>))
0048 #include BOOST_PHOENIX_ITERATE()
0049
0050 #undef BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER
0051
0052 #endif
0053
0054 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0055 #pragma wave option(output: null)
0056 #endif
0057
0058 #else
0059
0060 template <BOOST_PHOENIX_typename_A>
0061 struct dynamic<BOOST_PHOENIX_A> : noncopyable
0062 {
0063 typedef
0064 BOOST_PP_CAT(vector, BOOST_PHOENIX_ITERATION)<BOOST_PHOENIX_A>
0065 tuple_type;
0066 typedef
0067 dynamic<BOOST_PHOENIX_A>
0068 self_type;
0069 typedef
0070 dynamic_frame<self_type>
0071 dynamic_frame_type;
0072
0073 dynamic()
0074 : frame(0) {}
0075
0076 template <int N>
0077 static
0078 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const
0079 init(self_type * scope)
0080 {
0081 return
0082 expression::
0083 dynamic_member<mpl::int_<N>, self_type *>::
0084 make(mpl::int_<N>(), scope);
0085 }
0086
0087 BOOST_PP_REPEAT(
0088 BOOST_PHOENIX_ITERATION
0089 , BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER
0090 , _
0091 )
0092
0093 mutable dynamic_frame_type* frame;
0094 };
0095
0096 #endif
0097
0098 #endif