boost/xpressive/xpressive_fwd.hpp
///////////////////////////////////////////////////////////////////////////////
/// \file xpressive_fwd.hpp
/// Forward declarations for all of xpressive's public data types.
//
// 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_XPRESSIVE_FWD_HPP_EAN_10_04_2005
#define BOOST_XPRESSIVE_XPRESSIVE_FWD_HPP_EAN_10_04_2005
// MS compatible compilers support #pragma once
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif
#include <string>
#include <boost/config.hpp>
#include <boost/iterator/iterator_traits.hpp>
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
# error Sorry, xpressive requires a compiler that supports partial template specialization.
#endif
#if defined(BOOST_NO_STD_LOCALE) & !defined(BOOST_XPRESSIVE_USE_C_TRAITS)
# define BOOST_XPRESSIVE_USE_C_TRAITS
#endif
#if defined(BOOST_NO_CWCHAR) | defined(BOOST_NO_CWCTYPE) | defined(BOOST_NO_STD_WSTRING)
# ifndef BOOST_XPRESSIVE_NO_WREGEX
# define BOOST_XPRESSIVE_NO_WREGEX
# endif
#endif
#include <boost/xpressive/proto/proto_fwd.hpp>
namespace boost { namespace xpressive
{
template<typename Char, typename Impl>
struct regex_traits;
template<typename Char>
struct cpp_regex_traits;
template<typename Char>
struct c_regex_traits;
template<typename Elem>
struct null_regex_traits;
namespace detail
{
template<typename Char>
struct default_regex_traits
{
#ifdef BOOST_XPRESSIVE_USE_C_TRAITS
typedef c_regex_traits<Char> type;
#else
typedef cpp_regex_traits<Char> type;
#endif
};
struct mark_placeholder;
typedef proto::unary_op<detail::mark_placeholder, proto::noop_tag> mark_tag;
} // namespace detail
using detail::mark_tag;
typedef void const *regex_id_type;
struct regex_error;
struct regex_traits_version_1_tag;
struct regex_traits_version_1_case_fold_tag;
template<typename BidiIter>
struct basic_regex;
template<typename BidiIter>
struct match_results;
template<typename BidiIter>
struct regex_iterator;
template<typename BidiIter>
struct regex_token_iterator;
template<typename BidiIter>
struct regex_id_filter_predicate;
template<typename BidiIter>
struct sub_match;
template<typename Action, typename Saved = Action>
struct action;
template<typename RegexTraits>
struct compiler_traits;
template<typename Char, typename Impl = typename detail::default_regex_traits<Char>::type>
struct regex_traits;
template
<
typename BidiIter
, typename RegexTraits = regex_traits<typename iterator_value<BidiIter>::type>
, typename CompilerTraits = compiler_traits<RegexTraits>
>
struct regex_compiler;
///////////////////////////////////////////////////////////////////////////////
// Common typedefs
//
typedef basic_regex<std::string::const_iterator> sregex;
typedef basic_regex<char const *> cregex;
#ifndef BOOST_XPRESSIVE_NO_WREGEX
typedef basic_regex<std::wstring::const_iterator> wsregex;
typedef basic_regex<wchar_t const *> wcregex;
#endif
typedef regex_compiler<std::string::const_iterator> sregex_compiler;
typedef regex_compiler<char const *> cregex_compiler;
#ifndef BOOST_XPRESSIVE_NO_WREGEX
typedef regex_compiler<std::wstring::const_iterator> wsregex_compiler;
typedef regex_compiler<wchar_t const *> wcregex_compiler;
#endif
typedef regex_iterator<std::string::const_iterator> sregex_iterator;
typedef regex_iterator<char const *> cregex_iterator;
#ifndef BOOST_XPRESSIVE_NO_WREGEX
typedef regex_iterator<std::wstring::const_iterator> wsregex_iterator;
typedef regex_iterator<wchar_t const *> wcregex_iterator;
#endif
typedef regex_token_iterator<std::string::const_iterator> sregex_token_iterator;
typedef regex_token_iterator<char const *> cregex_token_iterator;
#ifndef BOOST_XPRESSIVE_NO_WREGEX
typedef regex_token_iterator<std::wstring::const_iterator> wsregex_token_iterator;
typedef regex_token_iterator<wchar_t const *> wcregex_token_iterator;
#endif
typedef match_results<std::string::const_iterator> smatch;
typedef match_results<char const *> cmatch;
#ifndef BOOST_XPRESSIVE_NO_WREGEX
typedef match_results<std::wstring::const_iterator> wsmatch;
typedef match_results<wchar_t const *> wcmatch;
#endif
typedef regex_id_filter_predicate<std::string::const_iterator> sregex_id_filter_predicate;
typedef regex_id_filter_predicate<char const *> cregex_id_filter_predicate;
#ifndef BOOST_XPRESSIVE_NO_WREGEX
typedef regex_id_filter_predicate<std::wstring::const_iterator> wsregex_id_filter_predicate;
typedef regex_id_filter_predicate<wchar_t const *> wcregex_id_filter_predicate;
#endif
}} // namespace boost::xpressive
#endif