PageRenderTime 14ms CodeModel.GetById 1ms app.highlight 10ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/xpressive/xpressive_fwd.hpp

http://hadesmem.googlecode.com/
C++ Header | 243 lines | 173 code | 54 blank | 16 comment | 9 complexity | fe4d0109c2b29e054b8e3ba70da941b0 MD5 | raw file
  1///////////////////////////////////////////////////////////////////////////////
  2/// \file xpressive_fwd.hpp
  3/// Forward declarations for all of xpressive's public data types.
  4//
  5//  Copyright 2008 Eric Niebler. Distributed under the Boost
  6//  Software License, Version 1.0. (See accompanying file
  7//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  8
  9#ifndef BOOST_XPRESSIVE_XPRESSIVE_FWD_HPP_EAN_10_04_2005
 10#define BOOST_XPRESSIVE_XPRESSIVE_FWD_HPP_EAN_10_04_2005
 11
 12// MS compatible compilers support #pragma once
 13#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 14# pragma once
 15#endif
 16
 17#include <string>
 18#include <boost/config.hpp>
 19#include <boost/version.hpp>
 20#include <boost/iterator/iterator_traits.hpp>
 21
 22#if BOOST_VERSION >= 103500
 23# define BOOST_PROTO_FUSION_V2
 24#endif
 25
 26#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 27# error Sorry, xpressive requires a compiler that supports partial template specialization.
 28#endif
 29
 30#if defined(BOOST_NO_STD_LOCALE) & !defined(BOOST_XPRESSIVE_USE_C_TRAITS)
 31# define BOOST_XPRESSIVE_USE_C_TRAITS
 32#endif
 33
 34#if defined(BOOST_NO_CWCHAR) | defined(BOOST_NO_CWCTYPE) | defined(BOOST_NO_STD_WSTRING)
 35# ifndef BOOST_XPRESSIVE_NO_WREGEX
 36#  define BOOST_XPRESSIVE_NO_WREGEX
 37# endif
 38#endif
 39
 40// Stack protection under MS Windows
 41// Config logic taken from boost/regex/config.hpp
 42#ifndef BOOST_XPRESSIVE_HAS_MS_STACK_GUARD
 43# if (defined(_WIN32) || defined(_WIN64) || defined(_WINCE))                    \
 44     && !defined(__GNUC__)                                                      \
 45     && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600))                     \
 46     && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003))
 47#  define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 1
 48# else
 49#  define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 0
 50# endif
 51#endif
 52
 53#include <boost/proto/proto_fwd.hpp>
 54
 55namespace boost { namespace xpressive
 56{
 57
 58    template<typename Char>
 59    struct cpp_regex_traits;
 60
 61    template<typename Char>
 62    struct c_regex_traits;
 63
 64    template<typename Elem>
 65    struct null_regex_traits;
 66
 67    namespace detail
 68    {
 69        template<typename Char>
 70        struct default_regex_traits
 71        {
 72            #ifdef BOOST_XPRESSIVE_USE_C_TRAITS
 73            typedef c_regex_traits<Char> type;
 74            #else
 75            typedef cpp_regex_traits<Char> type;
 76            #endif
 77        };
 78
 79        struct mark_placeholder;
 80        typedef proto::expr<proto::tag::terminal, proto::term<mark_placeholder>, 0> basic_mark_tag;
 81
 82        struct regex_domain;
 83
 84    } // namespace detail
 85
 86    struct mark_tag;
 87
 88    typedef void const *regex_id_type;
 89
 90    struct regex_error;
 91
 92    struct regex_traits_version_1_tag;
 93
 94    struct regex_traits_version_2_tag;
 95
 96    // DEPRECATED
 97    /// INTERNAL ONLY
 98    ///
 99    struct regex_traits_version_1_case_fold_tag;
100
101    template<typename Trait>
102    struct has_fold_case;
103
104    template<typename BidiIter>
105    struct basic_regex;
106
107    template<typename BidiIter>
108    struct match_results;
109
110    template<typename BidiIter>
111    struct regex_iterator;
112
113    template<typename BidiIter>
114    struct regex_token_iterator;
115
116    template<typename BidiIter>
117    struct regex_id_filter_predicate;
118
119    template<typename BidiIter>
120    struct sub_match;
121
122    template<typename RegexTraits>
123    struct compiler_traits;
124
125    template<typename Char, typename Impl = typename detail::default_regex_traits<Char>::type>
126    struct regex_traits;
127
128    template
129    <
130        typename BidiIter
131      , typename RegexTraits = regex_traits<typename iterator_value<BidiIter>::type>
132      , typename CompilerTraits = compiler_traits<RegexTraits>
133    >
134    struct regex_compiler;
135
136    template<typename T>
137    struct value;
138
139    template<typename T>
140    struct reference;
141
142    template<typename T>
143    struct local;
144
145    template<typename T, int I = 0, typename Dummy = proto::is_proto_expr>
146    struct placeholder;
147
148    namespace op
149    {
150        struct at;
151        struct push;
152        struct push_back;
153        struct push_front;
154        struct pop;
155        struct pop_back;
156        struct pop_front;
157        struct front;
158        struct back;
159        struct top;
160        struct first;
161        struct second;
162        struct matched;
163        struct length;
164        struct str;
165        struct insert;
166        struct make_pair;
167        template<typename T>
168        struct as;
169        template<typename T>
170        struct static_cast_;
171        template<typename T>
172        struct dynamic_cast_;
173        template<typename T>
174        struct const_cast_;
175        template<typename T>
176        struct construct;
177        template<typename Except>
178        struct throw_;
179        struct unwrap_reference;
180    }
181
182    ///////////////////////////////////////////////////////////////////////////////
183    // Common typedefs
184    //
185    typedef basic_regex<std::string::const_iterator>                sregex;
186    typedef basic_regex<char const *>                               cregex;
187
188    #ifndef BOOST_XPRESSIVE_NO_WREGEX
189    typedef basic_regex<std::wstring::const_iterator>               wsregex;
190    typedef basic_regex<wchar_t const *>                            wcregex;
191    #endif
192
193    typedef sub_match<std::string::const_iterator>                  ssub_match;
194    typedef sub_match<char const *>                                 csub_match;
195
196    #ifndef BOOST_XPRESSIVE_NO_WREGEX
197    typedef sub_match<std::wstring::const_iterator>                 wssub_match;
198    typedef sub_match<wchar_t const *>                              wcsub_match;
199    #endif
200
201    typedef regex_compiler<std::string::const_iterator>             sregex_compiler;
202    typedef regex_compiler<char const *>                            cregex_compiler;
203
204    #ifndef BOOST_XPRESSIVE_NO_WREGEX
205    typedef regex_compiler<std::wstring::const_iterator>            wsregex_compiler;
206    typedef regex_compiler<wchar_t const *>                         wcregex_compiler;
207    #endif
208
209    typedef regex_iterator<std::string::const_iterator>             sregex_iterator;
210    typedef regex_iterator<char const *>                            cregex_iterator;
211
212    #ifndef BOOST_XPRESSIVE_NO_WREGEX
213    typedef regex_iterator<std::wstring::const_iterator>            wsregex_iterator;
214    typedef regex_iterator<wchar_t const *>                         wcregex_iterator;
215    #endif
216
217    typedef regex_token_iterator<std::string::const_iterator>       sregex_token_iterator;
218    typedef regex_token_iterator<char const *>                      cregex_token_iterator;
219
220    #ifndef BOOST_XPRESSIVE_NO_WREGEX
221    typedef regex_token_iterator<std::wstring::const_iterator>      wsregex_token_iterator;
222    typedef regex_token_iterator<wchar_t const *>                   wcregex_token_iterator;
223    #endif
224
225    typedef match_results<std::string::const_iterator>              smatch;
226    typedef match_results<char const *>                             cmatch;
227
228    #ifndef BOOST_XPRESSIVE_NO_WREGEX
229    typedef match_results<std::wstring::const_iterator>             wsmatch;
230    typedef match_results<wchar_t const *>                          wcmatch;
231    #endif
232
233    typedef regex_id_filter_predicate<std::string::const_iterator>  sregex_id_filter_predicate;
234    typedef regex_id_filter_predicate<char const *>                 cregex_id_filter_predicate;
235
236    #ifndef BOOST_XPRESSIVE_NO_WREGEX
237    typedef regex_id_filter_predicate<std::wstring::const_iterator> wsregex_id_filter_predicate;
238    typedef regex_id_filter_predicate<wchar_t const *>              wcregex_id_filter_predicate;
239    #endif
240
241}} // namespace boost::xpressive
242
243#endif