Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:47:40

0001 
0002 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0003 #ifndef BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
0004 #define BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
0005 
0006 #include <boost/phoenix/support/iterate.hpp>
0007 
0008 #include <boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp>
0009 
0010 #endif
0011 #else
0012 
0013 #if !BOOST_PHOENIX_IS_ITERATING
0014 
0015 #ifndef BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
0016 #define BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_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/try_catch_eval_" BOOST_PHOENIX_LIMIT_STR ".hpp")
0022 #endif
0023 
0024 /*==============================================================================
0025     Copyright (c) 2005-2010 Joel de Guzman
0026     Copyright (c) 2010 Thomas Heller
0027 
0028     Distributed under the Boost Software License, Version 1.0. (See accompanying
0029     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
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_TRY_CATCH_EVAL_R(Z, N, DATA)                          \
0037             catch(                                                              \
0038                 typename proto::result_of::value<                               \
0039                     typename proto::result_of::child_c<                         \
0040                         BOOST_PP_CAT(A, N)                                      \
0041                       , 0                                                       \
0042                     >::type                                                     \
0043                 >::type::type &e                                                \
0044             )                                                                   \
0045             {                                                                   \
0046                 eval_catch_body(BOOST_PP_CAT(a, N), e, ctx);                    \
0047             }                                                                   \
0048     /**/
0049 
0050 
0051 #define BOOST_PHOENIX_ITERATION_PARAMS                                          \
0052         (3, (1, BOOST_PHOENIX_CATCH_LIMIT,                                      \
0053         <boost/phoenix/statement/detail/try_catch_eval.hpp>))
0054 #include BOOST_PHOENIX_ITERATE()
0055 
0056     #undef BOOST_PHOENIX_TRY_CATCH_EVAL_R
0057 
0058 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
0059 #pragma wave option(output: null)
0060 #endif
0061 
0062 #endif
0063 
0064 #else
0065 
0066         template <typename Try, BOOST_PHOENIX_typename_A, typename Context>
0067         typename boost::enable_if<
0068             proto::matches<
0069                 BOOST_PP_CAT(A, BOOST_PP_DEC(BOOST_PHOENIX_ITERATION))
0070               , rule::catch_
0071             >
0072           , result_type
0073         >::type
0074         operator()(Try const & try_, BOOST_PHOENIX_A_const_ref_a, Context const & ctx
0075             BOOST_PHOENIX_SFINAE_AND_OVERLOADS) const
0076         {
0077             try
0078             {
0079                 boost::phoenix::eval(proto::child_c<0>(try_), ctx);
0080             }
0081             BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_TRY_CATCH_EVAL_R, _)
0082         }
0083 
0084         template <typename Try, BOOST_PHOENIX_typename_A, typename Context>
0085         typename boost::disable_if<
0086             proto::matches<
0087                 BOOST_PP_CAT(A, BOOST_PP_DEC(BOOST_PHOENIX_ITERATION))
0088               , rule::catch_
0089             >
0090           , result_type
0091         >::type
0092         operator()(Try const & try_, BOOST_PHOENIX_A_const_ref_a, Context const & ctx) const
0093         {
0094             try
0095             {
0096                 boost::phoenix::eval(proto::child_c<0>(try_), ctx);
0097             }
0098             BOOST_PP_REPEAT(
0099                 BOOST_PP_DEC(BOOST_PHOENIX_ITERATION)
0100               , BOOST_PHOENIX_TRY_CATCH_EVAL_R, _
0101             )
0102             catch(...)
0103             {
0104                 boost::phoenix::eval(
0105                     proto::child_c<0>(
0106                         BOOST_PP_CAT(a, BOOST_PP_DEC(BOOST_PHOENIX_ITERATION))
0107                     )
0108                   , ctx);
0109             }
0110         }
0111 
0112 #endif
0113 
0114 #endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES