/*============================================================================= Copyright (c) 2006 Tobias Schwinger http://spirit.sourceforge.net/ Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #if !defined(BOOST_SPIRIT_GRAMMAR_DEF_FWD_HPP) #define BOOST_SPIRIT_GRAMMAR_DEF_FWD_HPP #include #include #include #if !defined(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT) #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT PHOENIX_LIMIT #endif // Calculate an integer rounded up to the nearest integer dividable by 3 #if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 12 #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 15 #elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 9 #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 12 #elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 6 #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 9 #elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 3 #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 6 #else #define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 3 #endif namespace boost { namespace spirit { template < typename T, BOOST_PP_ENUM_BINARY_PARAMS( BOOST_PP_DEC(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A), typename T, = phoenix::nil_t BOOST_PP_INTERCEPT ) > class grammar_def; }} // namespace boost::spirit #endif