Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: /// \file xpressive_fwd.hpp Chris@16: /// Forward declarations for all of xpressive's public data types. Chris@16: // Chris@16: // Copyright 2008 Eric Niebler. Distributed under the Boost Chris@16: // Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_XPRESSIVE_XPRESSIVE_FWD_HPP_EAN_10_04_2005 Chris@16: #define BOOST_XPRESSIVE_XPRESSIVE_FWD_HPP_EAN_10_04_2005 Chris@16: Chris@16: // MS compatible compilers support #pragma once Chris@101: #if defined(_MSC_VER) Chris@16: # pragma once Chris@16: #endif Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: #if BOOST_VERSION >= 103500 Chris@16: # define BOOST_PROTO_FUSION_V2 Chris@16: #endif Chris@16: Chris@16: Chris@16: #if defined(BOOST_NO_STD_LOCALE) & !defined(BOOST_XPRESSIVE_USE_C_TRAITS) Chris@16: # define BOOST_XPRESSIVE_USE_C_TRAITS Chris@16: #endif Chris@16: Chris@16: #if defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING) Chris@16: # ifndef BOOST_XPRESSIVE_NO_WREGEX Chris@16: # define BOOST_XPRESSIVE_NO_WREGEX Chris@16: # endif Chris@16: #endif Chris@16: Chris@16: // Stack protection under MS Windows Chris@16: // Config logic taken from boost/regex/config.hpp Chris@16: #ifndef BOOST_XPRESSIVE_HAS_MS_STACK_GUARD Chris@16: # if (defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \ Chris@16: && !defined(__GNUC__) \ Chris@16: && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \ Chris@16: && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003)) Chris@16: # define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 1 Chris@16: # else Chris@16: # define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 0 Chris@16: # endif Chris@16: #endif Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost { namespace xpressive Chris@16: { Chris@16: Chris@16: template Chris@16: struct cpp_regex_traits; Chris@16: Chris@16: template Chris@16: struct c_regex_traits; Chris@16: Chris@16: template Chris@16: struct null_regex_traits; Chris@16: Chris@16: namespace detail Chris@16: { Chris@16: template Chris@16: struct default_regex_traits Chris@16: { Chris@16: #ifdef BOOST_XPRESSIVE_USE_C_TRAITS Chris@16: typedef c_regex_traits type; Chris@16: #else Chris@16: typedef cpp_regex_traits type; Chris@16: #endif Chris@16: }; Chris@16: Chris@16: struct mark_placeholder; Chris@16: typedef proto::expr, 0> basic_mark_tag; Chris@16: Chris@16: struct regex_domain; Chris@16: Chris@16: } // namespace detail Chris@16: Chris@16: struct mark_tag; Chris@16: Chris@16: typedef void const *regex_id_type; Chris@16: Chris@16: struct regex_error; Chris@16: Chris@16: struct regex_traits_version_1_tag; Chris@16: Chris@16: struct regex_traits_version_2_tag; Chris@16: Chris@16: // DEPRECATED Chris@16: /// INTERNAL ONLY Chris@16: /// Chris@16: struct regex_traits_version_1_case_fold_tag; Chris@16: Chris@16: template Chris@16: struct has_fold_case; Chris@16: Chris@16: template Chris@16: struct basic_regex; Chris@16: Chris@16: template Chris@16: struct match_results; Chris@16: Chris@16: template Chris@16: struct regex_iterator; Chris@16: Chris@16: template Chris@16: struct regex_token_iterator; Chris@16: Chris@16: template Chris@16: struct regex_id_filter_predicate; Chris@16: Chris@16: template Chris@16: struct sub_match; Chris@16: Chris@16: template Chris@16: struct compiler_traits; Chris@16: Chris@16: template::type> Chris@16: struct regex_traits; Chris@16: Chris@16: template Chris@16: < Chris@16: typename BidiIter Chris@16: , typename RegexTraits = regex_traits::type> Chris@16: , typename CompilerTraits = compiler_traits Chris@16: > Chris@16: struct regex_compiler; Chris@16: Chris@16: template Chris@16: struct value; Chris@16: Chris@16: template Chris@16: struct reference; Chris@16: Chris@16: template Chris@16: struct local; Chris@16: Chris@16: template Chris@16: struct placeholder; Chris@16: Chris@16: namespace op Chris@16: { Chris@16: struct at; Chris@16: struct push; Chris@16: struct push_back; Chris@16: struct push_front; Chris@16: struct pop; Chris@16: struct pop_back; Chris@16: struct pop_front; Chris@16: struct front; Chris@16: struct back; Chris@16: struct top; Chris@16: struct first; Chris@16: struct second; Chris@16: struct matched; Chris@16: struct length; Chris@16: struct str; Chris@16: struct insert; Chris@16: struct make_pair; Chris@16: template Chris@16: struct as; Chris@16: template Chris@16: struct static_cast_; Chris@16: template Chris@16: struct dynamic_cast_; Chris@16: template Chris@16: struct const_cast_; Chris@16: template Chris@16: struct construct; Chris@16: template Chris@16: struct throw_; Chris@16: struct unwrap_reference; Chris@16: } Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // Common typedefs Chris@16: // Chris@16: typedef basic_regex sregex; Chris@16: typedef basic_regex cregex; Chris@16: Chris@16: #ifndef BOOST_XPRESSIVE_NO_WREGEX Chris@16: typedef basic_regex wsregex; Chris@16: typedef basic_regex wcregex; Chris@16: #endif Chris@16: Chris@16: typedef sub_match ssub_match; Chris@16: typedef sub_match csub_match; Chris@16: Chris@16: #ifndef BOOST_XPRESSIVE_NO_WREGEX Chris@16: typedef sub_match wssub_match; Chris@16: typedef sub_match wcsub_match; Chris@16: #endif Chris@16: Chris@16: typedef regex_compiler sregex_compiler; Chris@16: typedef regex_compiler cregex_compiler; Chris@16: Chris@16: #ifndef BOOST_XPRESSIVE_NO_WREGEX Chris@16: typedef regex_compiler wsregex_compiler; Chris@16: typedef regex_compiler wcregex_compiler; Chris@16: #endif Chris@16: Chris@16: typedef regex_iterator sregex_iterator; Chris@16: typedef regex_iterator cregex_iterator; Chris@16: Chris@16: #ifndef BOOST_XPRESSIVE_NO_WREGEX Chris@16: typedef regex_iterator wsregex_iterator; Chris@16: typedef regex_iterator wcregex_iterator; Chris@16: #endif Chris@16: Chris@16: typedef regex_token_iterator sregex_token_iterator; Chris@16: typedef regex_token_iterator cregex_token_iterator; Chris@16: Chris@16: #ifndef BOOST_XPRESSIVE_NO_WREGEX Chris@16: typedef regex_token_iterator wsregex_token_iterator; Chris@16: typedef regex_token_iterator wcregex_token_iterator; Chris@16: #endif Chris@16: Chris@16: typedef match_results smatch; Chris@16: typedef match_results cmatch; Chris@16: Chris@16: #ifndef BOOST_XPRESSIVE_NO_WREGEX Chris@16: typedef match_results wsmatch; Chris@16: typedef match_results wcmatch; Chris@16: #endif Chris@16: Chris@16: typedef regex_id_filter_predicate sregex_id_filter_predicate; Chris@16: typedef regex_id_filter_predicate cregex_id_filter_predicate; Chris@16: Chris@16: #ifndef BOOST_XPRESSIVE_NO_WREGEX Chris@16: typedef regex_id_filter_predicate wsregex_id_filter_predicate; Chris@16: typedef regex_id_filter_predicate wcregex_id_filter_predicate; Chris@16: #endif Chris@16: Chris@16: }} // namespace boost::xpressive Chris@16: Chris@16: #endif