3 * Copyright (c) 1998-2002
6 * Permission to use, copy, modify, distribute and sell this software
7 * and its documentation for any purpose is hereby granted without fee,
8 * provided that the above copyright notice appear in all copies and
9 * that both that copyright notice and this permission notice appear
10 * in supporting documentation. Dr John Maddock makes no representations
11 * about the suitability of this software for any purpose.
12 * It is provided "as is" without express or implied warranty.
17 * LOCATION: see http://www.boost.org for most recent version.
18 * FILE: c_regex_traits_common.cpp
19 * VERSION: see <boost/version.hpp>
20 * DESCRIPTION: Implements common code and data for the
21 * c_regex_traits<charT> traits classes.
25 #define BOOST_REGEX_SOURCE
31 #include <boost/regex/regex_traits.hpp>
32 #include <boost/regex/detail/regex_synch.hpp>
39 // these are the POSIX collating names:
41 BOOST_REGEX_DECL const char* def_coll_names[] = {
42 "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "alert", "backspace", "tab", "newline",
43 "vertical-tab", "form-feed", "carriage-return", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK",
44 "SYN", "ETB", "CAN", "EM", "SUB", "ESC", "IS4", "IS3", "IS2", "IS1", "space", "exclamation-mark",
45 "quotation-mark", "number-sign", "dollar-sign", "percent-sign", "ampersand", "apostrophe",
46 "left-parenthesis", "right-parenthesis", "asterisk", "plus-sign", "comma", "hyphen",
47 "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
48 "colon", "semicolon", "less-than-sign", "equals-sign", "greater-than-sign",
49 "question-mark", "commercial-at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
50 "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "left-square-bracket", "backslash",
51 "right-square-bracket", "circumflex", "underscore", "grave-accent", "a", "b", "c", "d", "e", "f",
52 "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "left-curly-bracket",
53 "vertical-line", "right-curly-bracket", "tilde", "DEL", "",
56 // these multi-character collating elements
57 // should keep most Western-European locales
58 // happy - we should really localise these a
59 // little more - but this will have to do for
62 BOOST_REGEX_DECL const char* def_multi_coll[] = {
89 BOOST_REGEX_DECL bool BOOST_REGEX_CALL re_lookup_def_collate_name(std::string& buf, const char* name)
93 while(*def_coll_names[i])
95 if(std::strcmp(def_coll_names[i], name) == 0)
103 while(*def_multi_coll[i])
105 if(std::strcmp(def_multi_coll[i], name) == 0)
107 buf = def_multi_coll[i];
117 BOOST_REGEX_DECL const char * re_default_error_messages[] =
118 { "Success", /* REG_NOERROR */
119 "No match", /* REG_NOMATCH */
120 "Invalid regular expression", /* REG_BADPAT */
121 "Invalid collation character", /* REG_ECOLLATE */
122 "Invalid character class name", /* REG_ECTYPE */
123 "Trailing backslash", /* REG_EESCAPE */
124 "Invalid back reference", /* REG_ESUBREG */
125 "Unmatched [ or [^", /* REG_EBRACK */
126 "Unmatched ( or \\(", /* REG_EPAREN */
127 "Unmatched \\{", /* REG_EBRACE */
128 "Invalid content of \\{\\}", /* REG_BADBR */
129 "Invalid range end", /* REG_ERANGE */
130 "Memory exhausted", /* REG_ESPACE */
131 "Invalid preceding regular expression", /* REG_BADRPT */
132 "Premature end of regular expression", /* REG_EEND */
133 "Regular expression too big", /* REG_ESIZE */
134 "Unmatched ) or \\)", /* REG_ERPAREN */
135 "Empty expression", /* REG_EMPTY */
136 "Unknown error", /* REG_E_UNKNOWN */
142 const mss default_messages[] = {
143 { 100+ c_regex_traits<char>::syntax_open_bracket, "(", },
144 { 100+ c_regex_traits<char>::syntax_close_bracket, ")", },
145 { 100+ c_regex_traits<char>::syntax_dollar, "$", },
146 { 100+ c_regex_traits<char>::syntax_caret, "^", },
147 { 100+ c_regex_traits<char>::syntax_dot, ".", },
148 { 100+ c_regex_traits<char>::syntax_star, "*", },
149 { 100+ c_regex_traits<char>::syntax_plus, "+", },
150 { 100+ c_regex_traits<char>::syntax_question, "?", },
151 { 100+ c_regex_traits<char>::syntax_open_set, "[", },
152 { 100+ c_regex_traits<char>::syntax_close_set, "]", },
153 { 100+ c_regex_traits<char>::syntax_or, "|", },
154 { 100+ c_regex_traits<char>::syntax_slash, "\\", },
155 { 100+ c_regex_traits<char>::syntax_hash, "#", },
156 { 100+ c_regex_traits<char>::syntax_dash, "-", },
157 { 100+ c_regex_traits<char>::syntax_open_brace, "{", },
158 { 100+ c_regex_traits<char>::syntax_close_brace, "}", },
159 { 100+ c_regex_traits<char>::syntax_digit, "0123456789", },
160 { 100+ c_regex_traits<char>::syntax_b, "b", },
161 { 100+ c_regex_traits<char>::syntax_B, "B", },
162 { 100+ c_regex_traits<char>::syntax_left_word, "<", },
163 { 100+ c_regex_traits<char>::syntax_right_word, ">", },
164 { 100+ c_regex_traits<char>::syntax_w, "w", },
165 { 100+ c_regex_traits<char>::syntax_W, "W", },
166 { 100+ c_regex_traits<char>::syntax_start_buffer, "`A", },
167 { 100+ c_regex_traits<char>::syntax_end_buffer, "'z", },
168 { 100+ c_regex_traits<char>::syntax_newline, "\n", },
169 { 100+ c_regex_traits<char>::syntax_comma, ",", },
170 { 100+ c_regex_traits<char>::syntax_a, "a", },
171 { 100+ c_regex_traits<char>::syntax_f, "f", },
172 { 100+ c_regex_traits<char>::syntax_n, "n", },
173 { 100+ c_regex_traits<char>::syntax_r, "r", },
174 { 100+ c_regex_traits<char>::syntax_t, "t", },
175 { 100+ c_regex_traits<char>::syntax_v, "v", },
176 { 100+ c_regex_traits<char>::syntax_x, "x", },
177 { 100+ c_regex_traits<char>::syntax_c, "c", },
178 { 100+ c_regex_traits<char>::syntax_colon, ":", },
179 { 100+ c_regex_traits<char>::syntax_equal, "=", },
181 { 100 + c_regex_traits<char>::syntax_e, "e", },
182 { 100 + c_regex_traits<char>::syntax_l, "l", },
183 { 100 + c_regex_traits<char>::syntax_L, "L", },
184 { 100 + c_regex_traits<char>::syntax_u, "u", },
185 { 100 + c_regex_traits<char>::syntax_U, "U", },
186 { 100 + c_regex_traits<char>::syntax_s, "s", },
187 { 100 + c_regex_traits<char>::syntax_S, "S", },
188 { 100 + c_regex_traits<char>::syntax_d, "d", },
189 { 100 + c_regex_traits<char>::syntax_D, "D", },
190 { 100 + c_regex_traits<char>::syntax_E, "E", },
191 { 100 + c_regex_traits<char>::syntax_Q, "Q", },
192 { 100 + c_regex_traits<char>::syntax_X, "X", },
193 { 100 + c_regex_traits<char>::syntax_C, "C", },
194 { 100 + c_regex_traits<char>::syntax_Z, "Z", },
195 { 100 + c_regex_traits<char>::syntax_G, "G", },
197 { 100 + c_regex_traits<char>::syntax_not, "!", },
202 BOOST_REGEX_DECL std::size_t BOOST_REGEX_CALL re_get_default_message(char* buf, std::size_t len, std::size_t id)
205 const mss* pm = default_messages;
210 std::size_t size = re_strlen(pm->what) + 1;
213 re_strcpy(buf, pm->what);
223 #ifndef BOOST_NO_WREGEX
224 const wchar_t combining_ranges[] = { 0x0300, 0x0361,
263 BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining(wchar_t c)
266 const wchar_t* p = combining_ranges + 1;
267 while(*p < c) p += 2;
269 if((c >= *p) && (c <= *(p+1)))
274 BOOST_REGEX_DECL unsigned short wide_unicode_classes[] = {
275 c_traits_base::char_class_cntrl, // '' 0
276 c_traits_base::char_class_cntrl, // '' 1
277 c_traits_base::char_class_cntrl, // '' 2
278 c_traits_base::char_class_cntrl, // '' 3
279 c_traits_base::char_class_cntrl, // '' 4
280 c_traits_base::char_class_cntrl, // '' 5
281 c_traits_base::char_class_cntrl, // '' 6
282 c_traits_base::char_class_cntrl, // '' 7
283 c_traits_base::char_class_cntrl, // '' 8
284 c_traits_base::char_class_cntrl | c_traits_base::char_class_space | c_traits_base::char_class_blank, // '' 9
285 c_traits_base::char_class_cntrl | c_traits_base::char_class_space, // '' 10
286 c_traits_base::char_class_cntrl | c_traits_base::char_class_space, // '' 11
287 c_traits_base::char_class_cntrl | c_traits_base::char_class_space, // '' 12
288 c_traits_base::char_class_cntrl | c_traits_base::char_class_space, // '' 13
289 c_traits_base::char_class_cntrl, // '.' 14
290 c_traits_base::char_class_cntrl, // '.' 15
291 c_traits_base::char_class_cntrl, // '.' 16
292 c_traits_base::char_class_cntrl, // '.' 17
293 c_traits_base::char_class_cntrl, // '.' 18
294 c_traits_base::char_class_cntrl, // '.' 19
295 c_traits_base::char_class_cntrl, // '.' 20
296 c_traits_base::char_class_cntrl, // '.' 21
297 c_traits_base::char_class_cntrl, // '.' 22
298 c_traits_base::char_class_cntrl, // '.' 23
299 c_traits_base::char_class_cntrl, // '.' 24
300 c_traits_base::char_class_cntrl, // '' 25
301 c_traits_base::char_class_cntrl, // '' 26
302 c_traits_base::char_class_cntrl, // '' 27
303 c_traits_base::char_class_cntrl, // '.' 28
304 c_traits_base::char_class_cntrl, // '.' 29
305 c_traits_base::char_class_cntrl, // '.' 30
306 c_traits_base::char_class_cntrl, // '.' 31
307 c_traits_base::char_class_space | c_traits_base::char_class_blank, // ' ' 32
308 c_traits_base::char_class_punct, // '!' 33
309 c_traits_base::char_class_punct, // '"' 34
310 c_traits_base::char_class_punct, // '#' 35
311 c_traits_base::char_class_punct, // '$' 36
312 c_traits_base::char_class_punct, // '%' 37
313 c_traits_base::char_class_punct, // '&' 38
314 c_traits_base::char_class_punct, // ''' 39
315 c_traits_base::char_class_punct, // '(' 40
316 c_traits_base::char_class_punct, // ')' 41
317 c_traits_base::char_class_punct, // '*' 42
318 c_traits_base::char_class_punct, // '+' 43
319 c_traits_base::char_class_punct, // ',' 44
320 c_traits_base::char_class_punct, // '-' 45
321 c_traits_base::char_class_punct, // '.' 46
322 c_traits_base::char_class_punct, // '/' 47
323 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '0' 48
324 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '1' 49
325 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '2' 50
326 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '3' 51
327 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '4' 52
328 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '5' 53
329 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '6' 54
330 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '7' 55
331 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '8' 56
332 c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '9' 57
333 c_traits_base::char_class_punct, // ':' 58
334 c_traits_base::char_class_punct, // ';' 59
335 c_traits_base::char_class_punct, // '<' 60
336 c_traits_base::char_class_punct, // '=' 61
337 c_traits_base::char_class_punct, // '>' 62
338 c_traits_base::char_class_punct, // '?' 63
339 c_traits_base::char_class_punct, // '@' 64
340 c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'A' 65
341 c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'B' 66
342 c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'C' 67
343 c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'D' 68
344 c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'E' 69
345 c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'F' 70
346 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'G' 71
347 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'H' 72
348 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'I' 73
349 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'J' 74
350 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'K' 75
351 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'L' 76
352 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'M' 77
353 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'N' 78
354 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'O' 79
355 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'P' 80
356 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Q' 81
357 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'R' 82
358 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'S' 83
359 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'T' 84
360 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'U' 85
361 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'V' 86
362 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'W' 87
363 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'X' 88
364 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Y' 89
365 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Z' 90
366 c_traits_base::char_class_punct, // '[' 91
367 c_traits_base::char_class_punct, // '\' 92
368 c_traits_base::char_class_punct, // ']' 93
369 c_traits_base::char_class_punct, // '^' 94
370 c_traits_base::char_class_punct | c_traits_base::char_class_underscore, // '_' 95
371 c_traits_base::char_class_punct, // '`' 96
372 c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'a' 97
373 c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'b' 98
374 c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'c' 99
375 c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'd' 100
376 c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'e' 101
377 c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'f' 102
378 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'g' 103
379 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'h' 104
380 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'i' 105
381 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'j' 106
382 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'k' 107
383 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'l' 108
384 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'm' 109
385 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'n' 110
386 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'o' 111
387 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'p' 112
388 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'q' 113
389 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'r' 114
390 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 's' 115
391 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 't' 116
392 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'u' 117
393 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'v' 118
394 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'w' 119
395 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'x' 120
396 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'y' 121
397 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'z' 122
398 c_traits_base::char_class_punct, // '{' 123
399 c_traits_base::char_class_punct, // '|' 124
400 c_traits_base::char_class_punct, // '}' 125
401 c_traits_base::char_class_punct, // '~' 126
403 c_traits_base::char_class_cntrl, // '
\7f' 127
404 c_traits_base::char_class_cntrl, // '
\80' 128
405 c_traits_base::char_class_cntrl, // '
\81' 129
406 c_traits_base::char_class_cntrl, // '
\82' 130
407 c_traits_base::char_class_cntrl, // '
\83' 131
408 c_traits_base::char_class_cntrl, // '
\84' 132
409 c_traits_base::char_class_cntrl, // '
\85' 133
410 c_traits_base::char_class_cntrl, // '
\86' 134
411 c_traits_base::char_class_cntrl, // '
\87' 135
412 c_traits_base::char_class_cntrl, // '
\88' 136
413 c_traits_base::char_class_cntrl, // '
\89' 137
414 c_traits_base::char_class_cntrl, // '
\8a' 138
415 c_traits_base::char_class_cntrl, // '
\8b' 139
416 c_traits_base::char_class_cntrl, // '
\8c' 140
417 c_traits_base::char_class_cntrl, // '
\8d' 141
418 c_traits_base::char_class_cntrl, // '
\8e' 142
419 c_traits_base::char_class_cntrl, // '
\8f' 143
420 c_traits_base::char_class_cntrl, // '
\90' 144
421 c_traits_base::char_class_cntrl, // '
\91' 145
422 c_traits_base::char_class_cntrl, // '
\92' 146
423 c_traits_base::char_class_cntrl, // '
\93' 147
424 c_traits_base::char_class_cntrl, // '
\94' 148
425 c_traits_base::char_class_cntrl, // '
\95' 149
426 c_traits_base::char_class_cntrl, // '
\96' 150
427 c_traits_base::char_class_cntrl, // '
\97' 151
428 c_traits_base::char_class_cntrl, // '
\98' 152
429 c_traits_base::char_class_cntrl, // '
\99' 153
430 c_traits_base::char_class_cntrl, // '
\9a' 154
431 c_traits_base::char_class_cntrl, // '
\9b' 155
432 c_traits_base::char_class_cntrl, // '
\9c' 156
433 c_traits_base::char_class_cntrl, // '
\9d' 157
434 c_traits_base::char_class_cntrl, // '
\9e' 158
435 c_traits_base::char_class_cntrl, // '
\9f' 159
436 c_traits_base::char_class_space | c_traits_base::char_class_blank, // ' ' 160
437 c_traits_base::char_class_punct, // '¡' 161
438 c_traits_base::char_class_punct, // '¢' 162
439 c_traits_base::char_class_punct, // '£' 163
440 c_traits_base::char_class_punct, // '¤' 164
441 c_traits_base::char_class_punct, // '¥' 165
442 c_traits_base::char_class_punct, // '¦' 166
443 c_traits_base::char_class_punct, // '§' 167
444 c_traits_base::char_class_punct, // '¨' 168
445 c_traits_base::char_class_punct, // '©' 169
446 c_traits_base::char_class_punct, // 'ª' 170
447 c_traits_base::char_class_punct, // '«' 171
448 c_traits_base::char_class_punct, // '¬' 172
449 c_traits_base::char_class_punct, // '' 173
450 c_traits_base::char_class_punct, // '®' 174
451 c_traits_base::char_class_punct, // '¯' 175
452 c_traits_base::char_class_punct, // '°' 176
453 c_traits_base::char_class_punct, // '±' 177
454 c_traits_base::char_class_punct, // '²' 178
455 c_traits_base::char_class_punct, // '³' 179
456 c_traits_base::char_class_punct, // '´' 180
457 c_traits_base::char_class_punct, // 'µ' 181
458 c_traits_base::char_class_punct, // '¶' 182
459 c_traits_base::char_class_punct, // '·' 183
460 c_traits_base::char_class_punct, // '¸' 184
461 c_traits_base::char_class_punct, // '¹' 185
462 c_traits_base::char_class_punct, // 'º' 186
463 c_traits_base::char_class_punct, // '»' 187
464 c_traits_base::char_class_punct, // '¼' 188
465 c_traits_base::char_class_punct, // '½' 189
466 c_traits_base::char_class_punct, // '¾' 190
467 c_traits_base::char_class_punct, // '¿' 191
468 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'À' 192
469 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Á' 193
470 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Â' 194
471 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ã' 195
472 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ä' 196
473 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Å' 197
474 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Æ' 198
475 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ç' 199
476 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'È' 200
477 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'É' 201
478 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ê' 202
479 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ë' 203
480 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ì' 204
481 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Í' 205
482 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Î' 206
483 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ï' 207
484 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ð' 208
485 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ñ' 209
486 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ò' 210
487 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ó' 211
488 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ô' 212
489 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Õ' 213
490 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ö' 214
491 c_traits_base::char_class_punct, // '×' 215
492 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ø' 216
493 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ù' 217
494 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ú' 218
495 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Û' 219
496 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ü' 220
497 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Ý' 221
498 c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Þ' 222
499 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ß' 223
500 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'à' 224
501 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'á' 225
502 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'â' 226
503 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ã' 227
504 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ä' 228
505 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'å' 229
506 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'æ' 230
507 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ç' 231
508 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'è' 232
509 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'é' 233
510 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ê' 234
511 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ë' 235
512 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ì' 236
513 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'í' 237
514 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'î' 238
515 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ï' 239
516 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ð' 240
517 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ñ' 241
518 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ò' 242
519 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ó' 243
520 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ô' 244
521 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'õ' 245
522 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ö' 246
523 c_traits_base::char_class_punct, // '÷' 247
524 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ø' 248
525 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ù' 249
526 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ú' 250
527 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'û' 251
528 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ü' 252
529 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ý' 253
530 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'þ' 254
531 c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'ÿ' 255
534 BOOST_REGEX_DECL wchar_t wide_lower_case_map[] = {
535 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf,
536 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
537 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
538 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
539 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
540 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
541 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
542 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
543 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
544 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
545 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
546 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
547 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
548 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xd7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf,
549 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
550 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
552 #endif // BOOST_NO_WREGEX
554 } // namespace re_detail