/////////////////////////////////////////////////////////////////////////////// /// \file xpressive_fwd.hpp /// Forward declarations for all of xpressive's public data types. // // Copyright 2007 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 #include #if BOOST_VERSION >= 103500 # define BOOST_PROTO_FUSION_V2 #endif #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 // Stack protection under MS Windows // Config logic taken from boost/regex/config.hpp #ifndef BOOST_XPRESSIVE_HAS_MS_STACK_GUARD # if (defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \ && !defined(__GNUC__) \ && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \ && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003)) # define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 1 # else # define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 0 # endif #endif #include #include namespace boost { namespace xpressive { 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::terminal::type basic_mark_tag; struct 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_2_tag; // DEPRECATED /// INTERNAL ONLY /// struct regex_traits_version_1_case_fold_tag; template struct has_fold_case; 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 compiler_traits; template::type> struct regex_traits; template < typename BidiIter , typename RegexTraits = regex_traits::type> , typename CompilerTraits = compiler_traits > struct regex_compiler; template struct value; template struct reference; template struct local; template struct placeholder; /////////////////////////////////////////////////////////////////////////////// // 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 sub_match ssub_match; typedef sub_match csub_match; #ifndef BOOST_XPRESSIVE_NO_WREGEX typedef sub_match wssub_match; typedef sub_match wcsub_match; #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