File indexing completed on 2025-01-18 09:45:06
0001
0002 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0003 #ifndef BOOST_PHOENIX_CORE_DETAIL_CALL_HPP
0004 #define BOOST_PHOENIX_CORE_DETAIL_CALL_HPP
0005
0006 #include <boost/phoenix/core/detail/cpp03/preprocessed/call.hpp>
0007
0008 #endif
0009 #else
0010
0011 #if !BOOST_PHOENIX_IS_ITERATING
0012
0013 #ifndef BOOST_PHOENIX_CORE_DETAIL_CALL_HPP
0014 #define BOOST_PHOENIX_CORE_DETAIL_CALL_HPP
0015
0016 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0017 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/call_" BOOST_PHOENIX_LIMIT_STR ".hpp")
0018 #endif
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #include <boost/phoenix/support/iterate.hpp>
0029
0030 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0031 #pragma wave option(preserve: 1)
0032 #endif
0033
0034 #define M0(Z, N ,D) \
0035 typedef \
0036 typename proto::result_of::child_c<Expr, N>::type \
0037 BOOST_PP_CAT(A, N); \
0038
0039 #define M1(Z, N ,D) \
0040 BOOST_PP_COMMA_IF(N) proto::child_c<N>(e)
0041
0042
0043
0044 #define BOOST_PHOENIX_ITERATION_PARAMS \
0045 (3, (1, BOOST_PHOENIX_LIMIT, \
0046 <boost/phoenix/core/detail/cpp03/call.hpp>))
0047 #include BOOST_PHOENIX_ITERATE()
0048
0049 #undef M0
0050 #undef M1
0051
0052 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0053 #pragma wave option(output: null)
0054 #endif
0055
0056 #endif
0057
0058 #else
0059
0060 template <typename Fun, typename Expr, typename State, typename Data>
0061 struct call_impl<Fun, Expr, State, Data, BOOST_PHOENIX_ITERATION>
0062 : proto::transform_impl<Expr, State, Data>
0063 {
0064 typedef
0065 typename boost::phoenix::result_of::context<State, Data>::type
0066 context_type;
0067
0068 BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M0, _)
0069
0070 typedef
0071 typename boost::result_of<
0072 Fun(BOOST_PHOENIX_A, context_type)
0073 >::type
0074 result_type;
0075
0076 result_type operator()(
0077 typename call_impl::expr_param e
0078 , typename call_impl::state_param s
0079 , typename call_impl::data_param d
0080 ) const
0081 {
0082 return
0083 Fun()(
0084 BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M1, _)
0085 , boost::phoenix::context(s, d)
0086 );
0087 }
0088 };
0089
0090 #endif
0091
0092 #endif