grammar_def_fwd.hpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*=============================================================================
  2. Copyright (c) 2006 Tobias Schwinger
  3. http://spirit.sourceforge.net/
  4. Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. =============================================================================*/
  7. #if !defined(BOOST_SPIRIT_GRAMMAR_DEF_FWD_HPP)
  8. #define BOOST_SPIRIT_GRAMMAR_DEF_FWD_HPP
  9. #include <boost/spirit/home/classic/namespace.hpp>
  10. #include <boost/spirit/home/classic/phoenix/tuples.hpp>
  11. #include <boost/preprocessor/repetition/enum_binary_params.hpp>
  12. #include <boost/preprocessor/facilities/intercept.hpp>
  13. #if !defined(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT)
  14. #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT PHOENIX_LIMIT
  15. #endif
  16. // Calculate an integer rounded up to the nearest integer dividable by 3
  17. #if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 12
  18. #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 15
  19. #elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 9
  20. #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 12
  21. #elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 6
  22. #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 9
  23. #elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 3
  24. #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 6
  25. #else
  26. #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 3
  27. #endif
  28. namespace boost { namespace spirit {
  29. BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
  30. template <
  31. typename T,
  32. BOOST_PP_ENUM_BINARY_PARAMS(
  33. BOOST_PP_DEC(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A),
  34. typename T, = ::phoenix::nil_t BOOST_PP_INTERCEPT
  35. )
  36. >
  37. class grammar_def;
  38. BOOST_SPIRIT_CLASSIC_NAMESPACE_END
  39. }} // namespace BOOST_SPIRIT_CLASSIC_NS
  40. #endif