1 /*============================================================================= 2 Copyright (c) 2006 Tobias Schwinger 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_TREE_COMMON_FWD_HPP) 9 #define BOOST_SPIRIT_TREE_COMMON_FWD_HPP 10 11 #include <boost/spirit/home/classic/namespace.hpp> 12 #include <boost/spirit/home/classic/core/nil.hpp> 13 14 namespace boost { namespace spirit { 15 16 BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN 17 18 template <typename T> 19 struct tree_node; 20 21 template <typename IteratorT = char const*, typename ValueT = nil_t> 22 struct node_iter_data; 23 24 template <typename ValueT = nil_t> 25 class node_iter_data_factory; 26 27 template <typename ValueT = nil_t> 28 class node_val_data_factory; 29 30 template <typename ValueT = nil_t> 31 class node_all_val_data_factory; 32 33 template < 34 typename IteratorT, 35 typename NodeFactoryT = node_val_data_factory<nil_t>, 36 typename T = nil_t 37 > 38 class tree_match; 39 40 struct tree_policy; 41 42 template < 43 typename MatchPolicyT, 44 typename IteratorT, 45 typename NodeFactoryT, 46 typename TreePolicyT, 47 typename T = nil_t 48 > 49 struct common_tree_match_policy; 50 51 template <typename MatchPolicyT, typename NodeFactoryT> 52 struct common_tree_tree_policy; 53 54 template <typename T> 55 struct no_tree_gen_node_parser; 56 57 template <typename T> 58 struct leaf_node_parser; 59 60 template <typename T, typename NodeParserT> 61 struct node_parser; 62 63 struct discard_node_op; 64 struct reduced_node_op; 65 struct infix_node_op; 66 struct discard_first_node_op; 67 struct discard_last_node_op; 68 struct inner_node_op; 69 70 template <typename T, typename ActionParserT> 71 struct action_directive_parser; 72 73 struct access_match_action 74 { 75 template <typename ParserT, typename ActionT> 76 struct action; 77 }; 78 79 struct access_node_action 80 { 81 template <typename ParserT, typename ActionT> 82 struct action; 83 }; 84 85 template < 86 typename IteratorT = char const *, 87 typename NodeFactoryT = node_val_data_factory<nil_t>, 88 typename T = nil_t 89 > 90 struct tree_parse_info; 91 92 BOOST_SPIRIT_CLASSIC_NAMESPACE_END 93 94 }} // namespace BOOST_SPIRIT_CLASSIC_NS 95 96 #endif 97