Back to home page

EIC code displayed by LXR

 
 

    


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     Copyright (c) 2005-2010 Joel de Guzman
0022     Copyright (c) 2010 Thomas Heller
0023 
0024     Distributed under the Boost Software License, Version 1.0. (See accompanying
0025     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
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 // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES