You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
56 lines
2.1 KiB
56 lines
2.1 KiB
/*============================================================================= |
|
Copyright (c) 2002-2003 Hartmut Kaiser |
|
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_FUNDAMENTAL_HPP) |
|
#define BOOST_SPIRIT_FUNDAMENTAL_HPP |
|
|
|
#include <boost/spirit/home/classic/namespace.hpp> |
|
#include <boost/spirit/home/classic/meta/impl/fundamental.ipp> |
|
|
|
namespace boost { namespace spirit { |
|
|
|
BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN |
|
|
|
/////////////////////////////////////////////////////////////////////////// |
|
// |
|
// Helper template for counting the number of nodes contained in a |
|
// given parser type. |
|
// All parser_category type parsers are counted as nodes. |
|
// |
|
/////////////////////////////////////////////////////////////////////////// |
|
template <typename ParserT> |
|
struct node_count { |
|
|
|
typedef typename ParserT::parser_category_t parser_category_t; |
|
typedef typename impl::nodes<parser_category_t> |
|
::template count<ParserT, mpl::int_<0> > count_t; |
|
|
|
BOOST_STATIC_CONSTANT(int, value = count_t::value); |
|
}; |
|
|
|
/////////////////////////////////////////////////////////////////////////// |
|
// |
|
// Helper template for counting the number of leaf nodes contained in a |
|
// given parser type. |
|
// Only plain_parser_category type parsers are counted as leaf nodes. |
|
// |
|
/////////////////////////////////////////////////////////////////////////// |
|
template <typename ParserT> |
|
struct leaf_count { |
|
|
|
typedef typename ParserT::parser_category_t parser_category_t; |
|
typedef typename impl::leafs<parser_category_t> |
|
::template count<ParserT, mpl::int_<0> > count_t; |
|
|
|
BOOST_STATIC_CONSTANT(int, value = count_t::value); |
|
}; |
|
|
|
BOOST_SPIRIT_CLASSIC_NAMESPACE_END |
|
|
|
}} // namespace BOOST_SPIRIT_CLASSIC_NS |
|
|
|
#endif // !defined(BOOST_SPIRIT_FUNDAMENTAL_HPP)
|
|
|