1 2 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES) 3 #ifndef BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP 4 #define BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP 5 6 #include <boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp> 7 8 #endif 9 #else 10 11 #if !BOOST_PHOENIX_IS_ITERATING 12 13 #ifndef BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP 14 #define BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP 15 16 #include <boost/preprocessor/repetition/enum_shifted_binary_params.hpp> 17 18 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) 19 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/new_eval_" BOOST_PHOENIX_LIMIT_STR ".hpp") 20 #endif 21 22 /*============================================================================== 23 Copyright (c) 2005-2010 Joel de Guzman 24 Copyright (c) 2010 Thomas Heller 25 26 Distributed under the Boost Software License, Version 1.0. (See accompanying 27 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 28 ==============================================================================*/ 29 30 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) 31 #pragma wave option(preserve: 1) 32 #endif 33 34 #define BOOST_PHOENIX_ITERATION_PARAMS \ 35 (3, (2, BOOST_PHOENIX_COMPOSITE_LIMIT, \ 36 <boost/phoenix/object/detail/cpp03/new_eval.hpp>)) 37 #include BOOST_PHOENIX_ITERATE() 38 39 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES) 40 #pragma wave option(output: null) 41 #endif 42 43 #endif 44 45 #else 46 47 template <typename This, BOOST_PHOENIX_typename_A, typename Context> 48 struct result<This(BOOST_PHOENIX_A, Context)> 49 { 50 typedef 51 typename proto::detail::uncvref< 52 typename proto::result_of::value<A0>::type 53 >::type 54 target_type; 55 typedef typename target_type::type construct_type; 56 typedef typename target_type::type * type; 57 }; 58 59 template <BOOST_PHOENIX_typename_A, typename Context> 60 typename result<new_eval(BOOST_PHOENIX_A_const_ref, Context &)>::type operator ()(A0 const &,BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS (BOOST_PHOENIX_ITERATION,A,const & a),Context const & ctx) const61 operator()( 62 A0 const& 63 , BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS( 64 BOOST_PHOENIX_ITERATION 65 , A 66 , const& a 67 ) 68 , Context const & ctx 69 ) const 70 { 71 #define EVAL_a(_,n,__) \ 72 BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) boost::phoenix::eval(a ## n, ctx) 73 return 74 new typename result< 75 new_eval(BOOST_PHOENIX_A_const_ref, Context &) 76 >::construct_type( 77 BOOST_PP_REPEAT_FROM_TO( 78 1 79 , BOOST_PHOENIX_ITERATION 80 , EVAL_a 81 , _ 82 ) 83 ); 84 #undef EVAL_a 85 } 86 87 #endif 88 89 #endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES 90