57 lines
2.1 KiB
C++
57 lines
2.1 KiB
C++
|
/*=============================================================================
|
||
|
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)
|