53 lines
1.8 KiB
C++
53 lines
1.8 KiB
C++
/*=============================================================================
|
|
Copyright (c) 2006 Tobias Schwinger
|
|
http://spirit.sourceforge.net/
|
|
|
|
Distributed under 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 <boost/spirit/home/classic/namespace.hpp>
|
|
#include <boost/spirit/home/classic/phoenix/tuples.hpp>
|
|
|
|
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
|
|
#include <boost/preprocessor/facilities/intercept.hpp>
|
|
|
|
#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 {
|
|
|
|
BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
|
|
|
|
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;
|
|
|
|
BOOST_SPIRIT_CLASSIC_NAMESPACE_END
|
|
|
|
}} // namespace BOOST_SPIRIT_CLASSIC_NS
|
|
|
|
#endif
|
|
|