| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 | ////////////////////////////////////////////////////////////////////////////////// \file xpressive_fwd.hpp/// Forward declarations for all of xpressive's public data types.////  Copyright 2008 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)# pragma once#endif#include <string>#include <boost/config.hpp>#include <boost/version.hpp>#include <boost/iterator/iterator_traits.hpp>#if BOOST_VERSION >= 103500# define BOOST_PROTO_FUSION_V2#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 <boost/proto/proto_fwd.hpp>namespace boost { namespace xpressive{    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::expr<proto::tag::terminal, proto::term<mark_placeholder>, 0> basic_mark_tag;        struct regex_domain;    } // namespace detail    struct 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<typename Trait>    struct has_fold_case;    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 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;    template<typename T>    struct value;    template<typename T>    struct reference;    template<typename T>    struct local;    template<typename T, int I = 0, typename Dummy = proto::is_proto_expr>    struct placeholder;    namespace op    {        struct at;        struct push;        struct push_back;        struct push_front;        struct pop;        struct pop_back;        struct pop_front;        struct front;        struct back;        struct top;        struct first;        struct second;        struct matched;        struct length;        struct str;        struct insert;        struct make_pair;        template<typename T>        struct as;        template<typename T>        struct static_cast_;        template<typename T>        struct dynamic_cast_;        template<typename T>        struct const_cast_;        template<typename T>        struct construct;        template<typename Except>        struct throw_;        struct unwrap_reference;    }    ///////////////////////////////////////////////////////////////////////////////    // 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 sub_match<std::string::const_iterator>                  ssub_match;    typedef sub_match<char const *>                                 csub_match;    #ifndef BOOST_XPRESSIVE_NO_WREGEX    typedef sub_match<std::wstring::const_iterator>                 wssub_match;    typedef sub_match<wchar_t const *>                              wcsub_match;    #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
 |