annotate DEPENDENCIES/generic/include/boost/xpressive/detail/detail_fwd.hpp @ 125:34e428693f5d vext

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