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)
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
27#if defined(BOOST_NO_STD_LOCALE) & !defined(BOOST_XPRESSIVE_USE_C_TRAITS)
28# define BOOST_XPRESSIVE_USE_C_TRAITS
29#endif
30
31#if defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING)
32# ifndef BOOST_XPRESSIVE_NO_WREGEX
33# define BOOST_XPRESSIVE_NO_WREGEX
34# endif
35#endif
36
37// Stack protection under MS Windows
38// Config logic taken from boost/regex/config.hpp
39#ifndef BOOST_XPRESSIVE_HAS_MS_STACK_GUARD
40# if (defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \
41 && !defined(__GNUC__) \
42 && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \
43 && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003))
44# define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 1
45# else
46# define BOOST_XPRESSIVE_HAS_MS_STACK_GUARD 0
47# endif
48#endif
49
50#include <boost/proto/proto_fwd.hpp>
51
52namespace boost { namespace xpressive
53{
54
55 template<typename Char>
56 struct cpp_regex_traits;
57
58 template<typename Char>
59 struct c_regex_traits;
60
61 template<typename Elem>
62 struct null_regex_traits;
63
64 namespace detail
65 {
66 template<typename Char>
67 struct default_regex_traits
68 {
69 #ifdef BOOST_XPRESSIVE_USE_C_TRAITS
70 typedef c_regex_traits<Char> type;
71 #else
72 typedef cpp_regex_traits<Char> type;
73 #endif
74 };
75
76 struct mark_placeholder;
77 typedef proto::expr<proto::tag::terminal, proto::term<mark_placeholder>, 0> basic_mark_tag;
78
79 struct regex_domain;
80
81 } // namespace detail
82
83 struct mark_tag;
84
85 typedef void const *regex_id_type;
86
87 struct regex_error;
88
89 struct regex_traits_version_1_tag;
90
91 struct regex_traits_version_2_tag;
92
93 // DEPRECATED
94 /// INTERNAL ONLY
95 ///
96 struct regex_traits_version_1_case_fold_tag;
97
98 template<typename Trait>
99 struct has_fold_case;
100
101 template<typename BidiIter>
102 struct basic_regex;
103
104 template<typename BidiIter>
105 struct match_results;
106
107 template<typename BidiIter>
108 struct regex_iterator;
109
110 template<typename BidiIter>
111 struct regex_token_iterator;
112
113 template<typename BidiIter>
114 struct regex_id_filter_predicate;
115
116 template<typename BidiIter>
117 struct sub_match;
118
119 template<typename RegexTraits>
120 struct compiler_traits;
121
122 template<typename Char, typename Impl = typename detail::default_regex_traits<Char>::type>
123 struct regex_traits;
124
125 template
126 <
127 typename BidiIter
128 , typename RegexTraits = regex_traits<typename iterator_value<BidiIter>::type>
129 , typename CompilerTraits = compiler_traits<RegexTraits>
130 >
131 struct regex_compiler;
132
133 template<typename T>
134 struct value;
135
136 template<typename T>
137 struct reference;
138
139 template<typename T>
140 struct local;
141
142 template<typename T, int I = 0, typename Dummy = proto::is_proto_expr>
143 struct placeholder;
144
145 namespace op
146 {
147 struct at;
148 struct push;
149 struct push_back;
150 struct push_front;
151 struct pop;
152 struct pop_back;
153 struct pop_front;
154 struct front;
155 struct back;
156 struct top;
157 struct first;
158 struct second;
159 struct matched;
160 struct length;
161 struct str;
162 struct insert;
163 struct make_pair;
164 template<typename T>
165 struct as;
166 template<typename T>
167 struct static_cast_;
168 template<typename T>
169 struct dynamic_cast_;
170 template<typename T>
171 struct const_cast_;
172 template<typename T>
173 struct construct;
174 template<typename Except>
175 struct throw_;
176 struct unwrap_reference;
177 }
178
179 ///////////////////////////////////////////////////////////////////////////////
180 // Common typedefs
181 //
182 typedef basic_regex<std::string::const_iterator> sregex;
183 typedef basic_regex<char const *> cregex;
184
185 #ifndef BOOST_XPRESSIVE_NO_WREGEX
186 typedef basic_regex<std::wstring::const_iterator> wsregex;
187 typedef basic_regex<wchar_t const *> wcregex;
188 #endif
189
190 typedef sub_match<std::string::const_iterator> ssub_match;
191 typedef sub_match<char const *> csub_match;
192
193 #ifndef BOOST_XPRESSIVE_NO_WREGEX
194 typedef sub_match<std::wstring::const_iterator> wssub_match;
195 typedef sub_match<wchar_t const *> wcsub_match;
196 #endif
197
198 typedef regex_compiler<std::string::const_iterator> sregex_compiler;
199 typedef regex_compiler<char const *> cregex_compiler;
200
201 #ifndef BOOST_XPRESSIVE_NO_WREGEX
202 typedef regex_compiler<std::wstring::const_iterator> wsregex_compiler;
203 typedef regex_compiler<wchar_t const *> wcregex_compiler;
204 #endif
205
206 typedef regex_iterator<std::string::const_iterator> sregex_iterator;
207 typedef regex_iterator<char const *> cregex_iterator;
208
209 #ifndef BOOST_XPRESSIVE_NO_WREGEX
210 typedef regex_iterator<std::wstring::const_iterator> wsregex_iterator;
211 typedef regex_iterator<wchar_t const *> wcregex_iterator;
212 #endif
213
214 typedef regex_token_iterator<std::string::const_iterator> sregex_token_iterator;
215 typedef regex_token_iterator<char const *> cregex_token_iterator;
216
217 #ifndef BOOST_XPRESSIVE_NO_WREGEX
218 typedef regex_token_iterator<std::wstring::const_iterator> wsregex_token_iterator;
219 typedef regex_token_iterator<wchar_t const *> wcregex_token_iterator;
220 #endif
221
222 typedef match_results<std::string::const_iterator> smatch;
223 typedef match_results<char const *> cmatch;
224
225 #ifndef BOOST_XPRESSIVE_NO_WREGEX
226 typedef match_results<std::wstring::const_iterator> wsmatch;
227 typedef match_results<wchar_t const *> wcmatch;
228 #endif
229
230 typedef regex_id_filter_predicate<std::string::const_iterator> sregex_id_filter_predicate;
231 typedef regex_id_filter_predicate<char const *> cregex_id_filter_predicate;
232
233 #ifndef BOOST_XPRESSIVE_NO_WREGEX
234 typedef regex_id_filter_predicate<std::wstring::const_iterator> wsregex_id_filter_predicate;
235 typedef regex_id_filter_predicate<wchar_t const *> wcregex_id_filter_predicate;
236 #endif
237
238}} // namespace boost::xpressive
239
240#endif
241

source code of boost/boost/xpressive/xpressive_fwd.hpp