/////////////////////////////////////////////////////////////////////////////// // detail_fwd.hpp // // Copyright 2004 Eric Niebler. 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) #ifndef BOOST_XPRESSIVE_DETAIL_DETAIL_FWD_HPP_EAN_10_04_2005 #define BOOST_XPRESSIVE_DETAIL_DETAIL_FWD_HPP_EAN_10_04_2005 // MS compatible compilers support #pragma once #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma once #endif #include // for INT_MAX #include #include #include namespace boost { namespace xpressive { namespace detail { typedef unsigned int uint_t; template struct generic_quant_tag; struct modifier_tag; typedef mpl::size_t unknown_width; /////////////////////////////////////////////////////////////////////////////// // placeholders // template struct literal_placeholder; template struct string_placeholder; struct mark_placeholder; template struct regex_placeholder; struct posix_charset_placeholder; template struct assert_word_placeholder; template struct range_placeholder; struct assert_bol_placeholder; struct assert_eol_placeholder; struct logical_newline_placeholder; struct self_placeholder; /////////////////////////////////////////////////////////////////////////////// // matchers // struct end_matcher; struct assert_bos_matcher; struct assert_eos_matcher; template struct assert_bol_matcher; template struct assert_eol_matcher; template struct assert_word_matcher; struct true_matcher; template struct alternate_matcher; struct alternate_end_matcher; template struct posix_charset_matcher; template struct alternates_factory; template struct sequence; template struct mark_matcher; struct mark_begin_matcher; struct mark_end_matcher; template struct regex_matcher; template struct regex_byref_matcher; template struct compound_charset; template > struct charset_matcher; template struct range_matcher; template struct set_matcher; template struct simple_repeat_matcher; struct repeat_begin_matcher; template struct repeat_end_matcher; template struct literal_matcher; template struct string_matcher; template struct action_matcher; template struct is_modifiable; template struct alternates_list; template struct modifier_op; template struct modifier_sequencer; struct icase_modifier; template struct xpression_visitor; template struct regex_impl; template struct regex_matcher; struct epsilon_matcher; struct epsilon_mark_matcher; template struct nested_results; template struct regex_id_filter_predicate; template struct keeper_matcher; template struct lookahead_matcher; template struct lookbehind_matcher; template struct assert_word_placeholder; template struct word_boundary; template sequence make_dynamic_xpression(Matcher const &matcher); template struct xpression_linker; template struct xpression_peeker; typedef proto::unary_op mark_tag; struct any_matcher; template struct logical_newline_matcher; typedef proto::unary_op logical_newline_xpression; struct set_initializer; typedef proto::unary_op set_initializer_type; struct seq_tag; template struct lookahead_tag; template struct lookbehind_tag; struct keeper_tag; template struct locale_modifier; template struct matcher_wrapper; template struct regex_traits_type; /////////////////////////////////////////////////////////////////////////////// // Misc. struct no_next; template struct core_access; template struct state_type; template struct matchable; template struct dynamic_xpression; template struct static_xpression; typedef static_xpression end_xpression; typedef static_xpression alternate_end_xpression; typedef static_xpression true_xpression; template struct static_xpression; template struct stacked_xpression; template struct is_static_xpression; template struct sub_match_impl; template struct results_cache; template struct sequence_stack; template struct results_extras; template struct match_context; template struct sub_match_vector; struct action_state; template::value> struct as_xpr_type; template Traits const &traits_cast(state_type const &state); template struct basic_chset; template struct memento; template void set_char(compound_charset &chset, Char ch, Traits const &traits, bool icase); template void set_range(compound_charset &chset, Char from, Char to, Traits const &traits, bool icase); template void set_class(compound_charset &chset, typename Traits::char_class_type char_class, bool no, Traits const &traits); template void set_char(basic_chset &chset, Char ch, Traits const &traits, bool icase); template void set_range(basic_chset &chset, Char from, Char to, Traits const &traits, bool icase); template void set_class(basic_chset &chset, typename Traits::char_class_type char_class, bool no, Traits const &traits); template static_xpression const make_static_xpression(Matcher const &matcher); template static_xpression const make_static_xpression(Matcher const &matcher, Next const &next); int get_mark_number(mark_tag const &); template void static_compile(Xpr const &xpr, regex_impl &impl); }}} // namespace boost::xpressive::detail /// INTERNAL ONLY namespace boost { namespace xpressive { /// INTERNAL ONLY template typename Traits::char_class_type lookup_classname(Traits const &traits, char const (&cname)[N], bool icase = false); }} // namespace boost::xpressive #endif