Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-11-15 09:34:09

0001 ///////////////////////////////////////////////////////////////////////////////
0002 /// \file xpressive_fwd.hpp
0003 /// Forward declarations for all of xpressive's public data types.
0004 //
0005 //  Copyright 2008 Eric Niebler. Distributed under the Boost
0006 //  Software License, Version 1.0. (See accompanying file
0007 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0008 
0009 #ifndef BOOST_XPRESSIVE_XPRESSIVE_FWD_HPP_EAN_10_04_2005
0010 #define BOOST_XPRESSIVE_XPRESSIVE_FWD_HPP_EAN_10_04_2005
0011 
0012 // MS compatible compilers support #pragma once
0013 #if defined(_MSC_VER)
0014 # pragma once
0015 #endif
0016 
0017 #include <string>
0018 #include <boost/config.hpp>
0019 #include <boost/version.hpp>
0020 #include <boost/iterator/iterator_traits.hpp>
0021 
0022 #if BOOST_VERSION >= 103500
0023 # define BOOST_PROTO_FUSION_V2
0024 #endif
0025 
0026 
0027 #if defined(BOOST_NO_STD_LOCALE) & !defined(BOOST_XPRESSIVE_USE_C_TRAITS)
0028 # define BOOST_XPRESSIVE_USE_C_TRAITS
0029 #endif
0030 
0031 #if defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING)
0032 # ifndef BOOST_XPRESSIVE_NO_WREGEX
0033 #  define BOOST_XPRESSIVE_NO_WREGEX
0034 # endif
0035 #endif
0036 
0037 // Stack protection under MS Windows
0038 // Config logic taken from boost/regex/config.hpp
0039 #ifndef BOOST_XPRESSIVE_HAS_MS_STACK_GUARD
0040 # if (defined(_WIN32) || defined(_WIN64) || defined(_WINCE))                    \
0041      && !(defined(__GNUC__) || defined(__BORLANDC__) && defined(__clang__))     \
0042      && !(defined(BOOST_BORLANDC) && (BOOST_BORLANDC >= 0x600))                 \
0043      && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003))
0044 #  define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 1
0045 # else
0046 #  define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 0
0047 # endif
0048 #endif
0049 
0050 #include <boost/proto/proto_fwd.hpp>
0051 
0052 namespace boost { namespace xpressive
0053 {
0054 
0055     template<typename Char>
0056     struct cpp_regex_traits;
0057 
0058     template<typename Char>
0059     struct c_regex_traits;
0060 
0061     template<typename Elem>
0062     struct null_regex_traits;
0063 
0064     namespace detail
0065     {
0066         template<typename Char>
0067         struct default_regex_traits
0068         {
0069             #ifdef BOOST_XPRESSIVE_USE_C_TRAITS
0070             typedef c_regex_traits<Char> type;
0071             #else
0072             typedef cpp_regex_traits<Char> type;
0073             #endif
0074         };
0075 
0076         struct mark_placeholder;
0077         typedef proto::expr<proto::tag::terminal, proto::term<mark_placeholder>, 0> basic_mark_tag;
0078 
0079         struct regex_domain;
0080 
0081     } // namespace detail
0082 
0083     struct mark_tag;
0084 
0085     typedef void const *regex_id_type;
0086 
0087     struct regex_error;
0088 
0089     struct regex_traits_version_1_tag;
0090 
0091     struct regex_traits_version_2_tag;
0092 
0093     // DEPRECATED
0094     /// INTERNAL ONLY
0095     ///
0096     struct regex_traits_version_1_case_fold_tag;
0097 
0098     template<typename Trait>
0099     struct has_fold_case;
0100 
0101     template<typename BidiIter>
0102     struct basic_regex;
0103 
0104     template<typename BidiIter>
0105     struct match_results;
0106 
0107     template<typename BidiIter>
0108     struct regex_iterator;
0109 
0110     template<typename BidiIter>
0111     struct regex_token_iterator;
0112 
0113     template<typename BidiIter>
0114     struct regex_id_filter_predicate;
0115 
0116     template<typename BidiIter>
0117     struct sub_match;
0118 
0119     template<typename RegexTraits>
0120     struct compiler_traits;
0121 
0122     template<typename Char, typename Impl = typename detail::default_regex_traits<Char>::type>
0123     struct regex_traits;
0124 
0125     template
0126     <
0127         typename BidiIter
0128       , typename RegexTraits = regex_traits<typename iterator_value<BidiIter>::type>
0129       , typename CompilerTraits = compiler_traits<RegexTraits>
0130     >
0131     struct regex_compiler;
0132 
0133     template<typename T>
0134     struct value;
0135 
0136     template<typename T>
0137     struct reference;
0138 
0139     template<typename T>
0140     struct local;
0141 
0142     template<typename T, int I = 0, typename Dummy = proto::is_proto_expr>
0143     struct placeholder;
0144 
0145     namespace op
0146     {
0147         struct at;
0148         struct push;
0149         struct push_back;
0150         struct push_front;
0151         struct pop;
0152         struct pop_back;
0153         struct pop_front;
0154         struct front;
0155         struct back;
0156         struct top;
0157         struct first;
0158         struct second;
0159         struct matched;
0160         struct length;
0161         struct str;
0162         struct insert;
0163         struct make_pair;
0164         template<typename T>
0165         struct as;
0166         template<typename T>
0167         struct static_cast_;
0168         template<typename T>
0169         struct dynamic_cast_;
0170         template<typename T>
0171         struct const_cast_;
0172         template<typename T>
0173         struct construct;
0174         template<typename Except>
0175         struct throw_;
0176         struct unwrap_reference;
0177     }
0178 
0179     ///////////////////////////////////////////////////////////////////////////////
0180     // Common typedefs
0181     //
0182     typedef basic_regex<std::string::const_iterator>                sregex;
0183     typedef basic_regex<char const *>                               cregex;
0184 
0185     #ifndef BOOST_XPRESSIVE_NO_WREGEX
0186     typedef basic_regex<std::wstring::const_iterator>               wsregex;
0187     typedef basic_regex<wchar_t const *>                            wcregex;
0188     #endif
0189 
0190     typedef sub_match<std::string::const_iterator>                  ssub_match;
0191     typedef sub_match<char const *>                                 csub_match;
0192 
0193     #ifndef BOOST_XPRESSIVE_NO_WREGEX
0194     typedef sub_match<std::wstring::const_iterator>                 wssub_match;
0195     typedef sub_match<wchar_t const *>                              wcsub_match;
0196     #endif
0197 
0198     typedef regex_compiler<std::string::const_iterator>             sregex_compiler;
0199     typedef regex_compiler<char const *>                            cregex_compiler;
0200 
0201     #ifndef BOOST_XPRESSIVE_NO_WREGEX
0202     typedef regex_compiler<std::wstring::const_iterator>            wsregex_compiler;
0203     typedef regex_compiler<wchar_t const *>                         wcregex_compiler;
0204     #endif
0205 
0206     typedef regex_iterator<std::string::const_iterator>             sregex_iterator;
0207     typedef regex_iterator<char const *>                            cregex_iterator;
0208 
0209     #ifndef BOOST_XPRESSIVE_NO_WREGEX
0210     typedef regex_iterator<std::wstring::const_iterator>            wsregex_iterator;
0211     typedef regex_iterator<wchar_t const *>                         wcregex_iterator;
0212     #endif
0213 
0214     typedef regex_token_iterator<std::string::const_iterator>       sregex_token_iterator;
0215     typedef regex_token_iterator<char const *>                      cregex_token_iterator;
0216 
0217     #ifndef BOOST_XPRESSIVE_NO_WREGEX
0218     typedef regex_token_iterator<std::wstring::const_iterator>      wsregex_token_iterator;
0219     typedef regex_token_iterator<wchar_t const *>                   wcregex_token_iterator;
0220     #endif
0221 
0222     typedef match_results<std::string::const_iterator>              smatch;
0223     typedef match_results<char const *>                             cmatch;
0224 
0225     #ifndef BOOST_XPRESSIVE_NO_WREGEX
0226     typedef match_results<std::wstring::const_iterator>             wsmatch;
0227     typedef match_results<wchar_t const *>                          wcmatch;
0228     #endif
0229 
0230     typedef regex_id_filter_predicate<std::string::const_iterator>  sregex_id_filter_predicate;
0231     typedef regex_id_filter_predicate<char const *>                 cregex_id_filter_predicate;
0232 
0233     #ifndef BOOST_XPRESSIVE_NO_WREGEX
0234     typedef regex_id_filter_predicate<std::wstring::const_iterator> wsregex_id_filter_predicate;
0235     typedef regex_id_filter_predicate<wchar_t const *>              wcregex_id_filter_predicate;
0236     #endif
0237 
0238 }} // namespace boost::xpressive
0239 
0240 #endif