]>
Commit | Line | Data |
---|---|---|
1 | /*============================================================================= | |
2 | Copyright (c) 2002-2003 Hartmut Kaiser | |
3 | http://spirit.sourceforge.net/ | |
4 | ||
5 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
6 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
7 | =============================================================================*/ | |
8 | #if !defined(BOOST_SPIRIT_FUNDAMENTAL_HPP) | |
9 | #define BOOST_SPIRIT_FUNDAMENTAL_HPP | |
10 | ||
11 | #include <boost/spirit/home/classic/namespace.hpp> | |
12 | #include <boost/spirit/home/classic/meta/impl/fundamental.ipp> | |
13 | ||
14 | namespace boost { namespace spirit { | |
15 | ||
16 | BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN | |
17 | ||
18 | /////////////////////////////////////////////////////////////////////////// | |
19 | // | |
20 | // Helper template for counting the number of nodes contained in a | |
21 | // given parser type. | |
22 | // All parser_category type parsers are counted as nodes. | |
23 | // | |
24 | /////////////////////////////////////////////////////////////////////////// | |
25 | template <typename ParserT> | |
26 | struct node_count { | |
27 | ||
28 | typedef typename ParserT::parser_category_t parser_category_t; | |
29 | typedef typename impl::nodes<parser_category_t> | |
30 | ::template count<ParserT, mpl::int_<0> > count_t; | |
31 | ||
32 | BOOST_STATIC_CONSTANT(int, value = count_t::value); | |
33 | }; | |
34 | ||
35 | /////////////////////////////////////////////////////////////////////////// | |
36 | // | |
37 | // Helper template for counting the number of leaf nodes contained in a | |
38 | // given parser type. | |
39 | // Only plain_parser_category type parsers are counted as leaf nodes. | |
40 | // | |
41 | /////////////////////////////////////////////////////////////////////////// | |
42 | template <typename ParserT> | |
43 | struct leaf_count { | |
44 | ||
45 | typedef typename ParserT::parser_category_t parser_category_t; | |
46 | typedef typename impl::leafs<parser_category_t> | |
47 | ::template count<ParserT, mpl::int_<0> > count_t; | |
48 | ||
49 | BOOST_STATIC_CONSTANT(int, value = count_t::value); | |
50 | }; | |
51 | ||
52 | BOOST_SPIRIT_CLASSIC_NAMESPACE_END | |
53 | ||
54 | }} // namespace BOOST_SPIRIT_CLASSIC_NS | |
55 | ||
56 | #endif // !defined(BOOST_SPIRIT_FUNDAMENTAL_HPP) |