/////////////////////////////////////////////////////////////////////////////// /// \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 #include #include #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 namespace boost { namespace xpressive { template struct regex_traits; template struct cpp_regex_traits; template struct c_regex_traits; template struct null_regex_traits; namespace detail { template struct default_regex_traits { #ifdef BOOST_XPRESSIVE_USE_C_TRAITS typedef c_regex_traits type; #else typedef cpp_regex_traits type; #endif }; struct mark_placeholder; typedef proto::unary_op 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 struct basic_regex; template struct match_results; template struct regex_iterator; template struct regex_token_iterator; template struct regex_id_filter_predicate; template struct sub_match; template struct action; template struct compiler_traits; template::type> struct regex_traits; template < typename BidiIter , typename RegexTraits = regex_traits::type> , typename CompilerTraits = compiler_traits > struct regex_compiler; /////////////////////////////////////////////////////////////////////////////// // Common typedefs // typedef basic_regex sregex; typedef basic_regex cregex; #ifndef BOOST_XPRESSIVE_NO_WREGEX typedef basic_regex wsregex; typedef basic_regex wcregex; #endif typedef regex_compiler sregex_compiler; typedef regex_compiler cregex_compiler; #ifndef BOOST_XPRESSIVE_NO_WREGEX typedef regex_compiler wsregex_compiler; typedef regex_compiler wcregex_compiler; #endif typedef regex_iterator sregex_iterator; typedef regex_iterator cregex_iterator; #ifndef BOOST_XPRESSIVE_NO_WREGEX typedef regex_iterator wsregex_iterator; typedef regex_iterator wcregex_iterator; #endif typedef regex_token_iterator sregex_token_iterator; typedef regex_token_iterator cregex_token_iterator; #ifndef BOOST_XPRESSIVE_NO_WREGEX typedef regex_token_iterator wsregex_token_iterator; typedef regex_token_iterator wcregex_token_iterator; #endif typedef match_results smatch; typedef match_results cmatch; #ifndef BOOST_XPRESSIVE_NO_WREGEX typedef match_results wsmatch; typedef match_results wcmatch; #endif typedef regex_id_filter_predicate sregex_id_filter_predicate; typedef regex_id_filter_predicate cregex_id_filter_predicate; #ifndef BOOST_XPRESSIVE_NO_WREGEX typedef regex_id_filter_predicate wsregex_id_filter_predicate; typedef regex_id_filter_predicate wcregex_id_filter_predicate; #endif }} // namespace boost::xpressive #endif