actor_result_of.hpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
  2. #ifndef BOOST_PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
  3. #define BOOST_PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
  4. #include <boost/phoenix/support/iterate.hpp>
  5. #include <boost/phoenix/core/detail/cpp03/preprocessed/actor_result_of.hpp>
  6. #endif
  7. #else
  8. #if !BOOST_PHOENIX_IS_ITERATING
  9. #ifndef BOOST_PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
  10. #define BOOST_PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
  11. #include <boost/phoenix/support/iterate.hpp>
  12. #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
  13. #pragma wave option(preserve: 2, line: 0, output: "preprocessed/actor_result_of_" BOOST_PHOENIX_LIMIT_STR ".hpp")
  14. #endif
  15. /*==============================================================================
  16. Copyright (c) 2005-2010 Joel de Guzman
  17. Copyright (c) 2010 Thomas Heller
  18. Distributed under the Boost Software License, Version 1.0. (See accompanying
  19. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  20. ==============================================================================*/
  21. #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
  22. #pragma wave option(preserve: 1)
  23. #endif
  24. template <typename Expr
  25. , BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_ACTOR_LIMIT)
  26. , typename Dummy = void>
  27. struct actor;
  28. template <typename Expr>
  29. struct nullary_actor_result
  30. {
  31. typedef
  32. typename boost::phoenix::evaluator::impl<
  33. Expr const&
  34. , vector2<
  35. vector1<const ::boost::phoenix::actor<Expr> *> &
  36. , default_actions
  37. > const &
  38. , proto::empty_env
  39. >::result_type
  40. type;
  41. };
  42. #define BOOST_PHOENIX_ITERATION_PARAMS \
  43. (3, (1, BOOST_PHOENIX_ACTOR_LIMIT, \
  44. <boost/phoenix/core/detail/cpp03/actor_result_of.hpp>))
  45. #include BOOST_PHOENIX_ITERATE()
  46. #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
  47. #pragma wave option(output: null)
  48. #endif
  49. #endif
  50. #else
  51. template <typename Expr, BOOST_PHOENIX_typename_A>
  52. struct actor<Expr, BOOST_PHOENIX_A>
  53. {
  54. typedef
  55. typename phoenix::evaluator::
  56. impl<
  57. Expr const&
  58. , vector2<
  59. BOOST_PP_CAT(
  60. vector
  61. , BOOST_PP_INC(BOOST_PHOENIX_ITERATION)
  62. )<const ::boost::phoenix::actor<Expr> *, BOOST_PHOENIX_A> &
  63. , default_actions
  64. > const &
  65. , proto::empty_env
  66. >::result_type
  67. type;
  68. };
  69. #endif
  70. #endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES