sl@0: /////////////////////////////////////////////////////////////////////////////// sl@0: /// \file xpressive_fwd.hpp sl@0: /// Forward declarations for all of xpressive's public data types. sl@0: // sl@0: // Copyright 2004 Eric Niebler. Distributed under the Boost sl@0: // Software License, Version 1.0. (See accompanying file sl@0: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) sl@0: sl@0: #ifndef BOOST_XPRESSIVE_XPRESSIVE_FWD_HPP_EAN_10_04_2005 sl@0: #define BOOST_XPRESSIVE_XPRESSIVE_FWD_HPP_EAN_10_04_2005 sl@0: sl@0: // MS compatible compilers support #pragma once sl@0: #if defined(_MSC_VER) && (_MSC_VER >= 1020) sl@0: # pragma once sl@0: #endif sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION sl@0: # error Sorry, xpressive requires a compiler that supports partial template specialization. sl@0: #endif sl@0: sl@0: #if defined(BOOST_NO_STD_LOCALE) & !defined(BOOST_XPRESSIVE_USE_C_TRAITS) sl@0: # define BOOST_XPRESSIVE_USE_C_TRAITS sl@0: #endif sl@0: sl@0: #if defined(BOOST_NO_CWCHAR) | defined(BOOST_NO_CWCTYPE) | defined(BOOST_NO_STD_WSTRING) sl@0: # ifndef BOOST_XPRESSIVE_NO_WREGEX sl@0: # define BOOST_XPRESSIVE_NO_WREGEX sl@0: # endif sl@0: #endif sl@0: sl@0: #include sl@0: sl@0: namespace boost { namespace xpressive sl@0: { sl@0: template sl@0: struct regex_traits; sl@0: sl@0: template sl@0: struct cpp_regex_traits; sl@0: sl@0: template sl@0: struct c_regex_traits; sl@0: sl@0: template sl@0: struct null_regex_traits; sl@0: sl@0: namespace detail sl@0: { sl@0: template sl@0: struct default_regex_traits sl@0: { sl@0: #ifdef BOOST_XPRESSIVE_USE_C_TRAITS sl@0: typedef c_regex_traits type; sl@0: #else sl@0: typedef cpp_regex_traits type; sl@0: #endif sl@0: }; sl@0: sl@0: struct mark_placeholder; sl@0: sl@0: typedef proto::unary_op mark_tag; sl@0: sl@0: } // namespace detail sl@0: sl@0: using detail::mark_tag; sl@0: sl@0: typedef void const *regex_id_type; sl@0: sl@0: struct regex_error; sl@0: sl@0: struct regex_traits_version_1_tag; sl@0: sl@0: struct regex_traits_version_1_case_fold_tag; sl@0: sl@0: template sl@0: struct basic_regex; sl@0: sl@0: template sl@0: struct match_results; sl@0: sl@0: template sl@0: struct regex_iterator; sl@0: sl@0: template sl@0: struct regex_token_iterator; sl@0: sl@0: template sl@0: struct regex_id_filter_predicate; sl@0: sl@0: template sl@0: struct sub_match; sl@0: sl@0: template sl@0: struct action; sl@0: sl@0: template sl@0: struct compiler_traits; sl@0: sl@0: template::type> sl@0: struct regex_traits; sl@0: sl@0: template sl@0: < sl@0: typename BidiIter sl@0: , typename RegexTraits = regex_traits::type> sl@0: , typename CompilerTraits = compiler_traits sl@0: > sl@0: struct regex_compiler; sl@0: sl@0: /////////////////////////////////////////////////////////////////////////////// sl@0: // Common typedefs sl@0: // sl@0: typedef basic_regex sregex; sl@0: typedef basic_regex cregex; sl@0: sl@0: #ifndef BOOST_XPRESSIVE_NO_WREGEX sl@0: typedef basic_regex wsregex; sl@0: typedef basic_regex wcregex; sl@0: #endif sl@0: sl@0: typedef regex_compiler sregex_compiler; sl@0: typedef regex_compiler cregex_compiler; sl@0: sl@0: #ifndef BOOST_XPRESSIVE_NO_WREGEX sl@0: typedef regex_compiler wsregex_compiler; sl@0: typedef regex_compiler wcregex_compiler; sl@0: #endif sl@0: sl@0: typedef regex_iterator sregex_iterator; sl@0: typedef regex_iterator cregex_iterator; sl@0: sl@0: #ifndef BOOST_XPRESSIVE_NO_WREGEX sl@0: typedef regex_iterator wsregex_iterator; sl@0: typedef regex_iterator wcregex_iterator; sl@0: #endif sl@0: sl@0: typedef regex_token_iterator sregex_token_iterator; sl@0: typedef regex_token_iterator cregex_token_iterator; sl@0: sl@0: #ifndef BOOST_XPRESSIVE_NO_WREGEX sl@0: typedef regex_token_iterator wsregex_token_iterator; sl@0: typedef regex_token_iterator wcregex_token_iterator; sl@0: #endif sl@0: sl@0: typedef match_results smatch; sl@0: typedef match_results cmatch; sl@0: sl@0: #ifndef BOOST_XPRESSIVE_NO_WREGEX sl@0: typedef match_results wsmatch; sl@0: typedef match_results wcmatch; sl@0: #endif sl@0: sl@0: typedef regex_id_filter_predicate sregex_id_filter_predicate; sl@0: typedef regex_id_filter_predicate cregex_id_filter_predicate; sl@0: sl@0: #ifndef BOOST_XPRESSIVE_NO_WREGEX sl@0: typedef regex_id_filter_predicate wsregex_id_filter_predicate; sl@0: typedef regex_id_filter_predicate wcregex_id_filter_predicate; sl@0: #endif sl@0: sl@0: }} // namespace boost::xpressive sl@0: sl@0: #endif