Files
boost_regex/src/c_regex_traits_common.cpp
2002-11-10 11:35:53 +00:00

558 lines
31 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*
* Copyright (c) 1998-2002
* Dr John Maddock
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Dr John Maddock makes no representations
* about the suitability of this software for any purpose.
* It is provided "as is" without express or implied warranty.
*
*/
/*
* LOCATION: see http://www.boost.org for most recent version.
* FILE: c_regex_traits_common.cpp
* VERSION: see <boost/version.hpp>
* DESCRIPTION: Implements common code and data for the
* c_regex_traits<charT> traits classes.
*/
#define BOOST_REGEX_SOURCE
#include <clocale>
#include <cstdio>
#include <list>
#include <cctype>
#include <boost/regex/regex_traits.hpp>
#include <boost/regex/v3/regex_synch.hpp>
namespace boost{
namespace re_detail{
//
// these are the POSIX collating names:
//
BOOST_REGEX_DECL const char* def_coll_names[] = {
"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "alert", "backspace", "tab", "newline",
"vertical-tab", "form-feed", "carriage-return", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK",
"SYN", "ETB", "CAN", "EM", "SUB", "ESC", "IS4", "IS3", "IS2", "IS1", "space", "exclamation-mark",
"quotation-mark", "number-sign", "dollar-sign", "percent-sign", "ampersand", "apostrophe",
"left-parenthesis", "right-parenthesis", "asterisk", "plus-sign", "comma", "hyphen",
"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
"colon", "semicolon", "less-than-sign", "equals-sign", "greater-than-sign",
"question-mark", "commercial-at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "left-square-bracket", "backslash",
"right-square-bracket", "circumflex", "underscore", "grave-accent", "a", "b", "c", "d", "e", "f",
"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "left-curly-bracket",
"vertical-line", "right-curly-bracket", "tilde", "DEL", "",
};
// these multi-character collating elements
// should keep most Western-European locales
// happy - we should really localise these a
// little more - but this will have to do for
// now:
BOOST_REGEX_DECL const char* def_multi_coll[] = {
"ae",
"Ae",
"AE",
"ch",
"Ch",
"CH",
"ll",
"Ll",
"LL",
"ss",
"Ss",
"SS",
"nj",
"Nj",
"NJ",
"dz",
"Dz",
"DZ",
"lj",
"Lj",
"LJ",
"",
};
BOOST_REGEX_DECL bool BOOST_REGEX_CALL re_lookup_def_collate_name(std::string& buf, const char* name)
{
BOOST_RE_GUARD_STACK
unsigned int i = 0;
while(*def_coll_names[i])
{
if(std::strcmp(def_coll_names[i], name) == 0)
{
buf = (char)i;
return true;
}
++i;
}
i = 0;
while(*def_multi_coll[i])
{
if(std::strcmp(def_multi_coll[i], name) == 0)
{
buf = def_multi_coll[i];
return true;
}
++i;
}
return false;
}
//
// messages:
BOOST_REGEX_DECL const char * re_default_error_messages[] =
{ "Success", /* REG_NOERROR */
"No match", /* REG_NOMATCH */
"Invalid regular expression", /* REG_BADPAT */
"Invalid collation character", /* REG_ECOLLATE */
"Invalid character class name", /* REG_ECTYPE */
"Trailing backslash", /* REG_EESCAPE */
"Invalid back reference", /* REG_ESUBREG */
"Unmatched [ or [^", /* REG_EBRACK */
"Unmatched ( or \\(", /* REG_EPAREN */
"Unmatched \\{", /* REG_EBRACE */
"Invalid content of \\{\\}", /* REG_BADBR */
"Invalid range end", /* REG_ERANGE */
"Memory exhausted", /* REG_ESPACE */
"Invalid preceding regular expression", /* REG_BADRPT */
"Premature end of regular expression", /* REG_EEND */
"Regular expression too big", /* REG_ESIZE */
"Unmatched ) or \\)", /* REG_ERPAREN */
"Empty expression", /* REG_EMPTY */
"Unknown error", /* REG_E_UNKNOWN */
"",
"",
"",
};
const mss default_messages[] = {
{ 100+ c_regex_traits<char>::syntax_open_bracket, "(", },
{ 100+ c_regex_traits<char>::syntax_close_bracket, ")", },
{ 100+ c_regex_traits<char>::syntax_dollar, "$", },
{ 100+ c_regex_traits<char>::syntax_caret, "^", },
{ 100+ c_regex_traits<char>::syntax_dot, ".", },
{ 100+ c_regex_traits<char>::syntax_star, "*", },
{ 100+ c_regex_traits<char>::syntax_plus, "+", },
{ 100+ c_regex_traits<char>::syntax_question, "?", },
{ 100+ c_regex_traits<char>::syntax_open_set, "[", },
{ 100+ c_regex_traits<char>::syntax_close_set, "]", },
{ 100+ c_regex_traits<char>::syntax_or, "|", },
{ 100+ c_regex_traits<char>::syntax_slash, "\\", },
{ 100+ c_regex_traits<char>::syntax_hash, "#", },
{ 100+ c_regex_traits<char>::syntax_dash, "-", },
{ 100+ c_regex_traits<char>::syntax_open_brace, "{", },
{ 100+ c_regex_traits<char>::syntax_close_brace, "}", },
{ 100+ c_regex_traits<char>::syntax_digit, "0123456789", },
{ 100+ c_regex_traits<char>::syntax_b, "b", },
{ 100+ c_regex_traits<char>::syntax_B, "B", },
{ 100+ c_regex_traits<char>::syntax_left_word, "<", },
{ 100+ c_regex_traits<char>::syntax_right_word, ">", },
{ 100+ c_regex_traits<char>::syntax_w, "w", },
{ 100+ c_regex_traits<char>::syntax_W, "W", },
{ 100+ c_regex_traits<char>::syntax_start_buffer, "`A", },
{ 100+ c_regex_traits<char>::syntax_end_buffer, "'z", },
{ 100+ c_regex_traits<char>::syntax_newline, "\n", },
{ 100+ c_regex_traits<char>::syntax_comma, ",", },
{ 100+ c_regex_traits<char>::syntax_a, "a", },
{ 100+ c_regex_traits<char>::syntax_f, "f", },
{ 100+ c_regex_traits<char>::syntax_n, "n", },
{ 100+ c_regex_traits<char>::syntax_r, "r", },
{ 100+ c_regex_traits<char>::syntax_t, "t", },
{ 100+ c_regex_traits<char>::syntax_v, "v", },
{ 100+ c_regex_traits<char>::syntax_x, "x", },
{ 100+ c_regex_traits<char>::syntax_c, "c", },
{ 100+ c_regex_traits<char>::syntax_colon, ":", },
{ 100+ c_regex_traits<char>::syntax_equal, "=", },
{ 100 + c_regex_traits<char>::syntax_e, "e", },
{ 100 + c_regex_traits<char>::syntax_l, "l", },
{ 100 + c_regex_traits<char>::syntax_L, "L", },
{ 100 + c_regex_traits<char>::syntax_u, "u", },
{ 100 + c_regex_traits<char>::syntax_U, "U", },
{ 100 + c_regex_traits<char>::syntax_s, "s", },
{ 100 + c_regex_traits<char>::syntax_S, "S", },
{ 100 + c_regex_traits<char>::syntax_d, "d", },
{ 100 + c_regex_traits<char>::syntax_D, "D", },
{ 100 + c_regex_traits<char>::syntax_E, "E", },
{ 100 + c_regex_traits<char>::syntax_Q, "Q", },
{ 100 + c_regex_traits<char>::syntax_X, "X", },
{ 100 + c_regex_traits<char>::syntax_C, "C", },
{ 100 + c_regex_traits<char>::syntax_Z, "Z", },
{ 100 + c_regex_traits<char>::syntax_G, "G", },
{ 100 + c_regex_traits<char>::syntax_not, "!", },
{ 0, "", },
};
BOOST_REGEX_DECL std::size_t BOOST_REGEX_CALL re_get_default_message(char* buf, std::size_t len, std::size_t id)
{
BOOST_RE_GUARD_STACK
const mss* pm = default_messages;
while(pm->id)
{
if(pm->id == id)
{
std::size_t size = re_strlen(pm->what) + 1;
if(size > len)
return size;
re_strcpy(buf, pm->what);
return size;
}
++pm;
}
if(buf && len)
*buf = 0;
return 1;
}
#ifndef BOOST_NO_WREGEX
const wchar_t combining_ranges[] = { 0x0300, 0x0361,
0x0483, 0x0486,
0x0903, 0x0903,
0x093E, 0x0940,
0x0949, 0x094C,
0x0982, 0x0983,
0x09BE, 0x09C0,
0x09C7, 0x09CC,
0x09D7, 0x09D7,
0x0A3E, 0x0A40,
0x0A83, 0x0A83,
0x0ABE, 0x0AC0,
0x0AC9, 0x0ACC,
0x0B02, 0x0B03,
0x0B3E, 0x0B3E,
0x0B40, 0x0B40,
0x0B47, 0x0B4C,
0x0B57, 0x0B57,
0x0B83, 0x0B83,
0x0BBE, 0x0BBF,
0x0BC1, 0x0BCC,
0x0BD7, 0x0BD7,
0x0C01, 0x0C03,
0x0C41, 0x0C44,
0x0C82, 0x0C83,
0x0CBE, 0x0CBE,
0x0CC0, 0x0CC4,
0x0CC7, 0x0CCB,
0x0CD5, 0x0CD6,
0x0D02, 0x0D03,
0x0D3E, 0x0D40,
0x0D46, 0x0D4C,
0x0D57, 0x0D57,
0x0F7F, 0x0F7F,
0x20D0, 0x20E1,
0x3099, 0x309A,
0xFE20, 0xFE23,
0xffff, 0xffff, };
BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining(wchar_t c)
{
BOOST_RE_GUARD_STACK
const wchar_t* p = combining_ranges + 1;
while(*p < c) p += 2;
--p;
if((c >= *p) && (c <= *(p+1)))
return true;
return false;
}
BOOST_REGEX_DECL unsigned short wide_unicode_classes[] = {
c_traits_base::char_class_cntrl, // '' 0
c_traits_base::char_class_cntrl, // '' 1
c_traits_base::char_class_cntrl, // '' 2
c_traits_base::char_class_cntrl, // '' 3
c_traits_base::char_class_cntrl, // '' 4
c_traits_base::char_class_cntrl, // '' 5
c_traits_base::char_class_cntrl, // '' 6
c_traits_base::char_class_cntrl, // '' 7
c_traits_base::char_class_cntrl, // '' 8
c_traits_base::char_class_cntrl | c_traits_base::char_class_space | c_traits_base::char_class_blank, // '' 9
c_traits_base::char_class_cntrl | c_traits_base::char_class_space, // '' 10
c_traits_base::char_class_cntrl | c_traits_base::char_class_space, // '' 11
c_traits_base::char_class_cntrl | c_traits_base::char_class_space, // '' 12
c_traits_base::char_class_cntrl | c_traits_base::char_class_space, // '' 13
c_traits_base::char_class_cntrl, // '.' 14
c_traits_base::char_class_cntrl, // '.' 15
c_traits_base::char_class_cntrl, // '.' 16
c_traits_base::char_class_cntrl, // '.' 17
c_traits_base::char_class_cntrl, // '.' 18
c_traits_base::char_class_cntrl, // '.' 19
c_traits_base::char_class_cntrl, // '.' 20
c_traits_base::char_class_cntrl, // '.' 21
c_traits_base::char_class_cntrl, // '.' 22
c_traits_base::char_class_cntrl, // '.' 23
c_traits_base::char_class_cntrl, // '.' 24
c_traits_base::char_class_cntrl, // '' 25
c_traits_base::char_class_cntrl, // '' 26
c_traits_base::char_class_cntrl, // '' 27
c_traits_base::char_class_cntrl, // '.' 28
c_traits_base::char_class_cntrl, // '.' 29
c_traits_base::char_class_cntrl, // '.' 30
c_traits_base::char_class_cntrl, // '.' 31
c_traits_base::char_class_space | c_traits_base::char_class_blank, // ' ' 32
c_traits_base::char_class_punct, // '!' 33
c_traits_base::char_class_punct, // '"' 34
c_traits_base::char_class_punct, // '#' 35
c_traits_base::char_class_punct, // '$' 36
c_traits_base::char_class_punct, // '%' 37
c_traits_base::char_class_punct, // '&' 38
c_traits_base::char_class_punct, // ''' 39
c_traits_base::char_class_punct, // '(' 40
c_traits_base::char_class_punct, // ')' 41
c_traits_base::char_class_punct, // '*' 42
c_traits_base::char_class_punct, // '+' 43
c_traits_base::char_class_punct, // ',' 44
c_traits_base::char_class_punct, // '-' 45
c_traits_base::char_class_punct, // '.' 46
c_traits_base::char_class_punct, // '/' 47
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '0' 48
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '1' 49
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '2' 50
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '3' 51
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '4' 52
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '5' 53
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '6' 54
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '7' 55
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '8' 56
c_traits_base::char_class_digit | c_traits_base::char_class_xdigit, // '9' 57
c_traits_base::char_class_punct, // ':' 58
c_traits_base::char_class_punct, // ';' 59
c_traits_base::char_class_punct, // '<' 60
c_traits_base::char_class_punct, // '=' 61
c_traits_base::char_class_punct, // '>' 62
c_traits_base::char_class_punct, // '?' 63
c_traits_base::char_class_punct, // '@' 64
c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'A' 65
c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'B' 66
c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'C' 67
c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'D' 68
c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'E' 69
c_traits_base::char_class_alpha | c_traits_base::char_class_upper | c_traits_base::char_class_xdigit, // 'F' 70
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'G' 71
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'H' 72
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'I' 73
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'J' 74
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'K' 75
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'L' 76
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'M' 77
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'N' 78
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'O' 79
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'P' 80
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Q' 81
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'R' 82
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'S' 83
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'T' 84
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'U' 85
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'V' 86
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'W' 87
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'X' 88
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Y' 89
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // 'Z' 90
c_traits_base::char_class_punct, // '[' 91
c_traits_base::char_class_punct, // '\' 92
c_traits_base::char_class_punct, // ']' 93
c_traits_base::char_class_punct, // '^' 94
c_traits_base::char_class_punct | c_traits_base::char_class_underscore, // '_' 95
c_traits_base::char_class_punct, // '`' 96
c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'a' 97
c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'b' 98
c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'c' 99
c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'd' 100
c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'e' 101
c_traits_base::char_class_alpha | c_traits_base::char_class_lower | c_traits_base::char_class_xdigit, // 'f' 102
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'g' 103
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'h' 104
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'i' 105
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'j' 106
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'k' 107
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'l' 108
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'm' 109
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'n' 110
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'o' 111
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'p' 112
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'q' 113
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'r' 114
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 's' 115
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 't' 116
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'u' 117
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'v' 118
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'w' 119
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'x' 120
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'y' 121
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // 'z' 122
c_traits_base::char_class_punct, // '{' 123
c_traits_base::char_class_punct, // '|' 124
c_traits_base::char_class_punct, // '}' 125
c_traits_base::char_class_punct, // '~' 126
c_traits_base::char_class_cntrl, // '' 127
c_traits_base::char_class_cntrl, // '<27>' 128
c_traits_base::char_class_cntrl, // '<27>' 129
c_traits_base::char_class_cntrl, // '<27>' 130
c_traits_base::char_class_cntrl, // '<27>' 131
c_traits_base::char_class_cntrl, // '<27>' 132
c_traits_base::char_class_cntrl, // '<27>' 133
c_traits_base::char_class_cntrl, // '<27>' 134
c_traits_base::char_class_cntrl, // '<27>' 135
c_traits_base::char_class_cntrl, // '<27>' 136
c_traits_base::char_class_cntrl, // '<27>' 137
c_traits_base::char_class_cntrl, // '<27>' 138
c_traits_base::char_class_cntrl, // '<27>' 139
c_traits_base::char_class_cntrl, // '<27>' 140
c_traits_base::char_class_cntrl, // '<27>' 141
c_traits_base::char_class_cntrl, // '<27>' 142
c_traits_base::char_class_cntrl, // '<27>' 143
c_traits_base::char_class_cntrl, // '<27>' 144
c_traits_base::char_class_cntrl, // '<27>' 145
c_traits_base::char_class_cntrl, // '<27>' 146
c_traits_base::char_class_cntrl, // '<27>' 147
c_traits_base::char_class_cntrl, // '<27>' 148
c_traits_base::char_class_cntrl, // '<27>' 149
c_traits_base::char_class_cntrl, // '<27>' 150
c_traits_base::char_class_cntrl, // '<27>' 151
c_traits_base::char_class_cntrl, // '<27>' 152
c_traits_base::char_class_cntrl, // '<27>' 153
c_traits_base::char_class_cntrl, // '<27>' 154
c_traits_base::char_class_cntrl, // '<27>' 155
c_traits_base::char_class_cntrl, // '<27>' 156
c_traits_base::char_class_cntrl, // '<27>' 157
c_traits_base::char_class_cntrl, // '<27>' 158
c_traits_base::char_class_cntrl, // '<27>' 159
c_traits_base::char_class_space | c_traits_base::char_class_blank, // '<27>' 160
c_traits_base::char_class_punct, // '<27>' 161
c_traits_base::char_class_punct, // '<27>' 162
c_traits_base::char_class_punct, // '<27>' 163
c_traits_base::char_class_punct, // '<27>' 164
c_traits_base::char_class_punct, // '<27>' 165
c_traits_base::char_class_punct, // '<27>' 166
c_traits_base::char_class_punct, // '<27>' 167
c_traits_base::char_class_punct, // '<27>' 168
c_traits_base::char_class_punct, // '<27>' 169
c_traits_base::char_class_punct, // '<27>' 170
c_traits_base::char_class_punct, // '<27>' 171
c_traits_base::char_class_punct, // '<27>' 172
c_traits_base::char_class_punct, // '<27>' 173
c_traits_base::char_class_punct, // '<27>' 174
c_traits_base::char_class_punct, // '<27>' 175
c_traits_base::char_class_punct, // '<27>' 176
c_traits_base::char_class_punct, // '<27>' 177
c_traits_base::char_class_punct, // '<27>' 178
c_traits_base::char_class_punct, // '<27>' 179
c_traits_base::char_class_punct, // '<27>' 180
c_traits_base::char_class_punct, // '<27>' 181
c_traits_base::char_class_punct, // '<27>' 182
c_traits_base::char_class_punct, // '<27>' 183
c_traits_base::char_class_punct, // '<27>' 184
c_traits_base::char_class_punct, // '<27>' 185
c_traits_base::char_class_punct, // '<27>' 186
c_traits_base::char_class_punct, // '<27>' 187
c_traits_base::char_class_punct, // '<27>' 188
c_traits_base::char_class_punct, // '<27>' 189
c_traits_base::char_class_punct, // '<27>' 190
c_traits_base::char_class_punct, // '<27>' 191
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 192
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 193
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 194
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 195
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 196
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 197
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 198
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 199
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 200
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 201
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 202
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 203
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 204
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 205
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 206
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 207
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 208
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 209
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 210
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 211
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 212
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 213
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 214
c_traits_base::char_class_punct, // '<27>' 215
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 216
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 217
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 218
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 219
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 220
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 221
c_traits_base::char_class_alpha | c_traits_base::char_class_upper, // '<27>' 222
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 223
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 224
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 225
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 226
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 227
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 228
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 229
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 230
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 231
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 232
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 233
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 234
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 235
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 236
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 237
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 238
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 239
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 240
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 241
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 242
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 243
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 244
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 245
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 246
c_traits_base::char_class_punct, // '<27>' 247
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 248
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 249
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 250
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 251
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 252
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 253
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 254
c_traits_base::char_class_alpha | c_traits_base::char_class_lower, // '<27>' 255
};
BOOST_REGEX_DECL wchar_t wide_lower_case_map[] = {
0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xd7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xdf,
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
};
#endif // BOOST_NO_WREGEX
} // namespace re_detail
} // namespace boost