]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/xpressive/include/boost/xpressive/detail/detail_fwd.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / xpressive / include / boost / xpressive / detail / detail_fwd.hpp
CommitLineData
7c673cae
FG
1///////////////////////////////////////////////////////////////////////////////
2// detail_fwd.hpp
3//
4// Copyright 2008 Eric Niebler. Distributed under the Boost
5// Software License, Version 1.0. (See accompanying file
6// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7
8#ifndef BOOST_XPRESSIVE_DETAIL_DETAIL_FWD_HPP_EAN_10_04_2005
9#define BOOST_XPRESSIVE_DETAIL_DETAIL_FWD_HPP_EAN_10_04_2005
10
11// MS compatible compilers support #pragma once
12#if defined(_MSC_VER)
13# pragma once
14#endif
15
16#include <map>
17#include <string>
18#include <vector>
19#include <climits> // for INT_MAX
20#include <typeinfo>
21#include <boost/mpl/bool.hpp>
22#include <boost/mpl/size_t.hpp>
23#include <boost/shared_ptr.hpp>
24#include <boost/xpressive/xpressive_fwd.hpp>
25
26namespace boost { namespace xpressive { namespace detail
27{
28 typedef unsigned int uint_t;
29
30 template<uint_t Min, uint_t Max = Min>
31 struct generic_quant_tag;
32
33 struct modifier_tag;
34
35 struct check_tag;
36
37 typedef mpl::size_t<INT_MAX / 2 - 1> unknown_width;
38
39 struct type_info_less;
40
41 typedef std::map<std::type_info const *, void *, type_info_less> action_args_type;
42
43 struct action_context;
44
45 struct ReplaceAlgo;
46
47 ///////////////////////////////////////////////////////////////////////////////
48 // placeholders
49 //
50 struct mark_placeholder;
51
52 struct posix_charset_placeholder;
53
54 template<typename Cond>
55 struct assert_word_placeholder;
56
57 template<typename Char>
58 struct range_placeholder;
59
60 struct assert_bol_placeholder;
61
62 struct assert_eol_placeholder;
63
64 struct logical_newline_placeholder;
65
66 struct self_placeholder;
67
68 template<typename Nbr>
69 struct attribute_placeholder;
70
71 ///////////////////////////////////////////////////////////////////////////////
72 // matchers
73 //
74 struct end_matcher;
75
76 struct independent_end_matcher;
77
78 struct assert_bos_matcher;
79
80 struct assert_eos_matcher;
81
82 template<typename Traits>
83 struct assert_bol_matcher;
84
85 template<typename Traits>
86 struct assert_eol_matcher;
87
88 template<typename Cond, typename Traits>
89 struct assert_word_matcher;
90
91 struct true_matcher;
92
93 template<typename Alternates, typename Traits>
94 struct alternate_matcher;
95
96 struct alternate_end_matcher;
97
98 template<typename Traits>
99 struct posix_charset_matcher;
100
101 template<typename BidiIter>
102 struct sequence;
103
104 template<typename Traits, typename ICase>
105 struct mark_matcher;
106
107 struct mark_begin_matcher;
108
109 struct mark_end_matcher;
110
111 template<typename BidiIter>
112 struct regex_matcher;
113
114 template<typename BidiIter>
115 struct regex_byref_matcher;
116
117 template<typename Traits>
118 struct compound_charset;
119
120 template<typename Traits, typename ICase, typename CharSet = compound_charset<Traits> >
121 struct charset_matcher;
122
123 template<typename Traits, typename ICase>
124 struct range_matcher;
125
126 template<typename Traits, typename Size>
127 struct set_matcher;
128
129 template<typename Xpr, typename Greedy>
130 struct simple_repeat_matcher;
131
132 struct repeat_begin_matcher;
133
134 template<typename Greedy>
135 struct repeat_end_matcher;
136
137 template<typename Traits, typename ICase, typename Not>
138 struct literal_matcher;
139
140 template<typename Traits, typename ICase>
141 struct string_matcher;
142
143 template<typename Actor>
144 struct action_matcher;
145
146 template<typename Predicate>
147 struct predicate_matcher;
148
149 template<typename Xpr, typename Greedy>
150 struct optional_matcher;
151
152 template<typename Xpr, typename Greedy>
153 struct optional_mark_matcher;
154
155 template<typename Matcher, typename Traits, typename ICase>
156 struct attr_matcher;
157
158 template<typename Nbr>
159 struct attr_begin_matcher;
160
161 struct attr_end_matcher;
162
163 template<typename Xpr>
164 struct is_modifiable;
165
166 template<typename Head, typename Tail>
167 struct alternates_list;
168
169 template<typename Modifier>
170 struct modifier_op;
171
172 struct icase_modifier;
173
174 template<typename BidiIter, typename ICase, typename Traits>
175 struct xpression_visitor;
176
177 template<typename BidiIter>
178 struct regex_impl;
179
180 struct epsilon_matcher;
181
182 template<typename BidiIter>
183 struct nested_results;
184
185 template<typename BidiIter>
186 struct regex_id_filter_predicate;
187
188 template<typename Xpr>
189 struct keeper_matcher;
190
191 template<typename Xpr>
192 struct lookahead_matcher;
193
194 template<typename Xpr>
195 struct lookbehind_matcher;
196
197 template<typename IsBoundary>
198 struct word_boundary;
199
200 template<typename BidiIter, typename Matcher>
201 sequence<BidiIter> make_dynamic(Matcher const &matcher);
202
203 template<typename Char>
204 struct xpression_linker;
205
206 template<typename Char>
207 struct xpression_peeker;
208
209 struct any_matcher;
210
211 template<typename Traits>
212 struct logical_newline_matcher;
213
214 typedef proto::expr<proto::tag::terminal, proto::term<logical_newline_placeholder>, 0> logical_newline_xpression;
215
216 struct set_initializer;
217
218 typedef proto::expr<proto::tag::terminal, proto::term<set_initializer>, 0> set_initializer_type;
219
220 struct lookahead_tag;
221
222 struct lookbehind_tag;
223
224 struct keeper_tag;
225
226 template<typename Locale>
227 struct locale_modifier;
228
229 template<typename Matcher>
230 struct matcher_wrapper;
231
232 template<typename Locale, typename BidiIter>
233 struct regex_traits_type;
234
235 template<typename Expr>
236 struct let_;
237
238 template<typename Args, typename BidiIter>
239 void bind_args(let_<Args> const &, match_results<BidiIter> &);
240
241 ///////////////////////////////////////////////////////////////////////////////
242 // Misc.
243 struct no_next;
244
245 template<typename BidiIter>
246 struct core_access;
247
248 template<typename BidiIter>
249 struct match_state;
250
251 template<typename BidiIter>
252 struct matchable;
253
254 template<typename BidiIter>
255 struct matchable_ex;
256
257 template<typename Matcher, typename BidiIter>
258 struct dynamic_xpression;
259
260 template<typename BidiIter>
261 struct shared_matchable;
262
263 template<typename BidiIter>
264 struct alternates_vector;
265
266 template<typename Matcher, typename Next>
267 struct static_xpression;
268
269 typedef static_xpression<end_matcher, no_next> end_xpression;
270
271 typedef static_xpression<alternate_end_matcher, no_next> alternate_end_xpression;
272
273 typedef static_xpression<independent_end_matcher, no_next> independent_end_xpression;
274
275 typedef static_xpression<true_matcher, no_next> true_xpression;
276
277 template<typename Matcher, typename Next = end_xpression>
278 struct static_xpression;
279
280 template<typename Top, typename Next>
281 struct stacked_xpression;
282
283 template<typename Xpr>
284 struct is_static_xpression;
285
286 template<typename BidiIter>
287 struct sub_match_impl;
288
289 template<typename T>
290 struct list;
291
292 template<typename BidiIter>
293 struct results_cache;
294
295 template<typename T>
296 struct sequence_stack;
297
298 template<typename BidiIter>
299 struct results_extras;
300
301 template<typename BidiIter>
302 struct match_context;
303
304 template<typename BidiIter>
305 struct sub_match_vector;
306
307 template<typename T, typename U>
308 struct action_arg;
309
310 struct actionable;
311
312 template<typename Char>
313 struct traits;
314
315 template<typename Traits, typename BidiIter>
316 Traits const &traits_cast(match_state<BidiIter> const &state);
317
318 template<typename Char>
319 struct basic_chset;
320
321 template<typename Char>
322 struct named_mark;
323
324 template<typename BidiIter>
325 struct memento;
326
327 template<typename Char, typename Traits>
328 void set_char(compound_charset<Traits> &chset, Char ch, Traits const &tr, bool icase);
329
330 template<typename Char, typename Traits>
331 void set_range(compound_charset<Traits> &chset, Char from, Char to, Traits const &tr, bool icase);
332
333 template<typename Traits>
334 void set_class(compound_charset<Traits> &chset, typename Traits::char_class_type char_class, bool no, Traits const &tr);
335
336 template<typename Char, typename Traits>
337 void set_char(basic_chset<Char> &chset, Char ch, Traits const &tr, bool icase);
338
339 template<typename Char, typename Traits>
340 void set_range(basic_chset<Char> &chset, Char from, Char to, Traits const &tr, bool icase);
341
342 template<typename Char, typename Traits>
343 void set_class(basic_chset<Char> &chset, typename Traits::char_class_type char_class, bool no, Traits const &tr);
344
345 template<typename Matcher>
346 static_xpression<Matcher> const
347 make_static(Matcher const &matcher);
348
349 template<typename Matcher, typename Next>
350 static_xpression<Matcher, Next> const
351 make_static(Matcher const &matcher, Next const &next);
352
353 int get_mark_number(basic_mark_tag const &);
354
355 template<typename Xpr, typename BidiIter>
356 void static_compile(Xpr const &xpr, shared_ptr<regex_impl<BidiIter> > const &impl);
357
358 struct quant_spec;
359
360 template<typename BidiIter, typename Xpr>
361 void make_simple_repeat(quant_spec const &spec, sequence<BidiIter> &seq, Xpr const &xpr);
362
363 template<typename BidiIter>
364 void make_simple_repeat(quant_spec const &spec, sequence<BidiIter> &seq);
365
366 template<typename BidiIter>
367 void make_repeat(quant_spec const &spec, sequence<BidiIter> &seq, int mark_nbr);
368
369 template<typename BidiIter>
370 void make_repeat(quant_spec const &spec, sequence<BidiIter> &seq);
371
372 template<typename BidiIter>
373 void make_optional(quant_spec const &spec, sequence<BidiIter> &seq);
374
375 template<typename BidiIter>
376 void make_optional(quant_spec const &spec, sequence<BidiIter> &seq, int mark_nbr);
377
378 template<typename Char>
379 struct string_type
380 {
381 typedef std::vector<Char> type;
382 };
383
384 template<>
385 struct string_type<char>
386 {
387 typedef std::string type;
388 };
389
390 #ifndef BOOST_XPRESSIVE_NO_WREGEX
391 template<>
392 struct string_type<wchar_t>
393 {
394 typedef std::wstring type;
395 };
396 #endif
397
398}}} // namespace boost::xpressive::detail
399
400namespace boost { namespace xpressive { namespace grammar_detail
401{
402 using proto::_;
403 using proto::or_;
404 using proto::if_;
405 using proto::call;
406 using proto::when;
407 using proto::otherwise;
408 using proto::switch_;
409 using proto::make;
410 using proto::_child;
411 using proto::_value;
412 using proto::_left;
413 using proto::_right;
414 using proto::not_;
415 using proto::_state;
416 using proto::_data;
417 using proto::callable;
418 using proto::transform;
419 using proto::fold;
420 using proto::reverse_fold;
421 using proto::fold_tree;
422 using proto::reverse_fold_tree;
423 using proto::terminal;
424 using proto::shift_right;
425 using proto::bitwise_or;
426 using proto::logical_not;
427 using proto::dereference;
428 using proto::unary_plus;
429 using proto::negate;
430 using proto::complement;
431 using proto::comma;
432 using proto::assign;
433 using proto::subscript;
434 using proto::nary_expr;
435 using proto::unary_expr;
436 using proto::binary_expr;
437 using proto::_deep_copy;
438 using proto::vararg;
439 namespace tag = proto::tag;
440}}}
441
442namespace boost { namespace xpressive { namespace op
443{
444 struct push;
445 struct push_back;
446 struct pop;
447 struct push_front;
448 struct pop_back;
449 struct pop_front;
450 struct back;
451 struct front;
452 struct top;
453 struct first;
454 struct second;
455 struct matched;
456 struct length;
457 struct str;
458 struct insert;
459 struct make_pair;
460
461 template<typename T>
462 struct as;
463 template<typename T>
464 struct static_cast_;
465 template<typename T>
466 struct dynamic_cast_;
467 template<typename T>
468 struct const_cast_;
469 template<typename T>
470 struct construct;
471 template<typename T>
472 struct throw_;
473}}} // namespace boost::xpressive::op
474
475/// INTERNAL ONLY
476namespace boost { namespace xpressive
477{
478
479 /// INTERNAL ONLY
480 template<typename Traits, std::size_t N>
481 typename Traits::char_class_type
482 lookup_classname(Traits const &traits, char const (&cname)[N], bool icase = false);
483
484}} // namespace boost::xpressive
485
486#endif