/Src/Dependencies/Boost/boost/phoenix/core/detail/argument.hpp

http://hadesmem.googlecode.com/ · C++ Header · 44 lines · 27 code · 7 blank · 10 comment · 0 complexity · ceda4edc820a21b2ca005e9ef1d562ac MD5 · raw file

  1. /*==============================================================================
  2. Copyright (c) 2001-2010 Joel de Guzman
  3. Copyright (c) 2010 Eric Niebler
  4. Copyright (c) 2010-2011 Thomas Heller
  5. Distributed under the Boost Software License, Version 1.0. (See accompanying
  6. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  7. ==============================================================================*/
  8. #define BOOST_PHOENIX_ARGUMENT_N_TYPE(_, N, name) \
  9. typedef \
  10. expression::argument<BOOST_PP_INC(N)>::type \
  11. BOOST_PP_CAT(BOOST_PP_CAT(name, BOOST_PP_INC(N)), _type); \
  12. /**/
  13. #define BOOST_PHOENIX_ARGUMENT_N_INSTANCE(_, N, name) \
  14. expression::argument<BOOST_PP_INC(N)>::type const \
  15. BOOST_PP_CAT(name, BOOST_PP_INC(N)) = {{{}}}; \
  16. /**/
  17. namespace placeholders
  18. {
  19. BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N_TYPE, arg)
  20. BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N_TYPE, _)
  21. #ifndef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS
  22. BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N_INSTANCE, arg)
  23. BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N_INSTANCE, _)
  24. #endif
  25. }
  26. namespace arg_names
  27. {
  28. BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N_TYPE, arg)
  29. BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N_TYPE, _)
  30. #ifndef BOOST_PHOENIX_NO_PREDEFINED_TERMINALS
  31. BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N_INSTANCE, arg)
  32. BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N_INSTANCE, _)
  33. #endif
  34. }
  35. #undef BOOST_PHOENIX_ARGUMENT_N_TYPE
  36. #undef BOOST_PHOENIX_ARGUMENT_N_INSTANCE