boost/xpressive/detail/detail_fwd.hpp
///////////////////////////////////////////////////////////////////////////////
// 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 <climits> // for INT_MAX
#include <boost/mpl/bool.hpp>
#include <boost/mpl/size_t.hpp>
#include <boost/xpressive/xpressive_fwd.hpp>
namespace boost { namespace xpressive { namespace detail
{
typedef unsigned int uint_t;
template<uint_t Min, uint_t Max>
struct generic_quant_tag;
struct modifier_tag;
typedef mpl::size_t<INT_MAX / 2 - 1> unknown_width;
///////////////////////////////////////////////////////////////////////////////
// placeholders
//
template<typename Char, bool Not = false>
struct literal_placeholder;
template<typename Char>
struct string_placeholder;
struct mark_placeholder;
template<typename BidiIter, bool ByRef>
struct regex_placeholder;
struct posix_charset_placeholder;
template<typename Cond>
struct assert_word_placeholder;
template<typename Char>
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<typename Traits>
struct assert_bol_matcher;
template<typename Traits>
struct assert_eol_matcher;
template<typename Cond, typename Traits>
struct assert_word_matcher;
struct true_matcher;
template<typename Alternates, typename Traits>
struct alternate_matcher;
struct alternate_end_matcher;
template<typename Traits>
struct posix_charset_matcher;
template<typename BidiIter>
struct alternates_factory;
template<typename BidiIter>
struct sequence;
template<typename Traits, bool ICase>
struct mark_matcher;
struct mark_begin_matcher;
struct mark_end_matcher;
template<typename BidiIter>
struct regex_matcher;
template<typename BidiIter>
struct regex_byref_matcher;
template<typename Traits>
struct compound_charset;
template<typename Traits, bool ICase, typename CharSet = compound_charset<Traits> >
struct charset_matcher;
template<typename Traits, bool ICase>
struct range_matcher;
template<typename Traits, int Size>
struct set_matcher;
template<typename Xpr, bool Greedy>
struct simple_repeat_matcher;
struct repeat_begin_matcher;
template<bool Greedy>
struct repeat_end_matcher;
template<typename Traits, bool ICase, bool Not>
struct literal_matcher;
template<typename Traits, bool ICase>
struct string_matcher;
template<typename Action>
struct action_matcher;
template<typename Xpr>
struct is_modifiable;
template<typename Alternates>
struct alternates_list;
template<typename Modifier>
struct modifier_op;
template<typename Left, typename Right>
struct modifier_sequencer;
struct icase_modifier;
template<typename BidiIter, typename ICase, typename Traits>
struct xpression_visitor;
template<typename BidiIter>
struct regex_impl;
template<typename BidiIter>
struct regex_matcher;
struct epsilon_matcher;
struct epsilon_mark_matcher;
template<typename BidiIter>
struct nested_results;
template<typename BidiIter>
struct regex_id_filter_predicate;
template<typename Xpr>
struct keeper_matcher;
template<typename Xpr>
struct lookahead_matcher;
template<typename Xpr>
struct lookbehind_matcher;
template<typename Cond>
struct assert_word_placeholder;
template<bool IsBoundary>
struct word_boundary;
template<typename BidiIter, typename Matcher>
sequence<BidiIter> make_dynamic_xpression(Matcher const &matcher);
template<typename Char>
struct xpression_linker;
template<typename Char>
struct xpression_peeker;
typedef proto::unary_op<mark_placeholder, proto::noop_tag> mark_tag;
struct any_matcher;
template<typename Traits>
struct logical_newline_matcher;
typedef proto::unary_op<logical_newline_placeholder, proto::noop_tag> logical_newline_xpression;
struct set_initializer;
typedef proto::unary_op<set_initializer, proto::noop_tag> set_initializer_type;
struct seq_tag;
template<bool Positive>
struct lookahead_tag;
template<bool Positive>
struct lookbehind_tag;
struct keeper_tag;
template<typename Locale>
struct locale_modifier;
template<typename Matcher>
struct matcher_wrapper;
template<typename Locale, typename BidiIter>
struct regex_traits_type;
///////////////////////////////////////////////////////////////////////////////
// Misc.
struct no_next;
template<typename BidiIter>
struct core_access;
template<typename BidiIter>
struct state_type;
template<typename BidiIter>
struct matchable;
template<typename Matcher, typename BidiIter>
struct dynamic_xpression;
template<typename Matcher, typename Next>
struct static_xpression;
typedef static_xpression<end_matcher, no_next> end_xpression;
typedef static_xpression<alternate_end_matcher, no_next> alternate_end_xpression;
typedef static_xpression<true_matcher, no_next> true_xpression;
template<typename Matcher, typename Next = end_xpression>
struct static_xpression;
template<typename Top, typename Next>
struct stacked_xpression;
template<typename Xpr>
struct is_static_xpression;
template<typename BidiIter>
struct sub_match_impl;
template<typename BidiIter>
struct results_cache;
template<typename T>
struct sequence_stack;
template<typename BidiIter>
struct results_extras;
template<typename BidiIter>
struct match_context;
template<typename BidiIter>
struct sub_match_vector;
struct action_state;
template<typename Xpr, bool IsOp = proto::is_op<Xpr>::value>
struct as_xpr_type;
template<typename Traits, typename BidiIter>
Traits const &traits_cast(state_type<BidiIter> const &state);
template<typename Char>
struct basic_chset;
template<typename BidiIter>
struct memento;
template<typename Char, typename Traits>
void set_char(compound_charset<Traits> &chset, Char ch, Traits const &traits, bool icase);
template<typename Char, typename Traits>
void set_range(compound_charset<Traits> &chset, Char from, Char to, Traits const &traits, bool icase);
template<typename Traits>
void set_class(compound_charset<Traits> &chset, typename Traits::char_class_type char_class, bool no, Traits const &traits);
template<typename Char, typename Traits>
void set_char(basic_chset<Char> &chset, Char ch, Traits const &traits, bool icase);
template<typename Char, typename Traits>
void set_range(basic_chset<Char> &chset, Char from, Char to, Traits const &traits, bool icase);
template<typename Char, typename Traits>
void set_class(basic_chset<Char> &chset, typename Traits::char_class_type char_class, bool no, Traits const &traits);
template<typename Matcher>
static_xpression<Matcher> const
make_static_xpression(Matcher const &matcher);
template<typename Matcher, typename Next>
static_xpression<Matcher, Next> const
make_static_xpression(Matcher const &matcher, Next const &next);
int get_mark_number(mark_tag const &);
template<typename Xpr, typename BidiIter>
void static_compile(Xpr const &xpr, regex_impl<BidiIter> &impl);
}}} // namespace boost::xpressive::detail
/// INTERNAL ONLY
namespace boost { namespace xpressive
{
/// INTERNAL ONLY
template<typename Traits, std::size_t N>
typename Traits::char_class_type
lookup_classname(Traits const &traits, char const (&cname)[N], bool icase = false);
}} // namespace boost::xpressive
#endif