1 2 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES) 3 #ifndef BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP 4 #define BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP 5 6 #include <boost/phoenix/support/iterate.hpp> 7 8 #include <boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp> 9 10 #endif 11 #else 12 13 #if !BOOST_PHOENIX_IS_ITERATING 14 15 #ifndef BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP 16 #define BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP 17 18 #include <boost/phoenix/support/iterate.hpp> 19 20 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) 21 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/dynamic_" BOOST_PHOENIX_LIMIT_STR ".hpp") 22 #endif 23 24 /*============================================================================== 25 Copyright (c) 2005-2010 Joel de Guzman 26 Copyright (c) 2010 Thomas Heller 27 28 Distributed under the Boost Software License, Version 1.0. (See accompanying 29 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 30 ==============================================================================*/ 31 32 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) 33 #pragma wave option(preserve: 1) 34 #endif 35 36 #define BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER(_, N, __) \ 37 typedef \ 38 typename expression::dynamic_member< \ 39 mpl::int_<N> \ 40 , self_type * \ 41 >::type const \ 42 BOOST_PP_CAT(member, BOOST_PP_INC(N)); \ 43 /**/ 44 45 #define BOOST_PHOENIX_ITERATION_PARAMS \ 46 (3, (1, BOOST_PHOENIX_DYNAMIC_LIMIT, \ 47 <boost/phoenix/scope/detail/cpp03/dynamic.hpp>)) 48 #include BOOST_PHOENIX_ITERATE() 49 50 #undef BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER 51 52 #endif 53 54 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) 55 #pragma wave option(output: null) 56 #endif 57 58 #else 59 60 template <BOOST_PHOENIX_typename_A> 61 struct dynamic<BOOST_PHOENIX_A> : noncopyable 62 { 63 typedef 64 BOOST_PP_CAT(vector, BOOST_PHOENIX_ITERATION)<BOOST_PHOENIX_A> 65 tuple_type; 66 typedef 67 dynamic<BOOST_PHOENIX_A> 68 self_type; 69 typedef 70 dynamic_frame<self_type> 71 dynamic_frame_type; 72 dynamicdynamic73 dynamic() 74 : frame(0) {} 75 76 template <int N> 77 static 78 typename expression::dynamic_member<mpl::int_<N>, self_type *>::type const initdynamic79 init(self_type * scope) 80 { 81 return 82 expression:: 83 dynamic_member<mpl::int_<N>, self_type *>:: 84 make(mpl::int_<N>(), scope); 85 } 86 87 BOOST_PP_REPEAT( 88 BOOST_PHOENIX_ITERATION 89 , BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER 90 , _ 91 ) 92 93 mutable dynamic_frame_type* frame; 94 }; 95 96 #endif 97 98 #endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES 99