]> git.lyx.org Git - lyx.git/blob - boost/libs/regex/src/c_regex_traits_common.cpp
update
[lyx.git] / boost / libs / regex / src / c_regex_traits_common.cpp
1 /*
2  *
3  * Copyright (c) 1998-2002
4  * Dr John Maddock
5  *
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.
13  *
14  */
15  
16  /*
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.
22   */
23
24
25 #define BOOST_REGEX_SOURCE
26
27 #include <clocale>
28 #include <cstdio>
29 #include <list>
30 #include <cctype>
31 #include <boost/regex/regex_traits.hpp>
32 #include <boost/regex/detail/regex_synch.hpp>
33
34
35 namespace boost{
36    namespace re_detail{
37
38 //
39 // these are the POSIX collating names:
40 //
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", "", 
54 };
55
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
60 // now:
61
62 BOOST_REGEX_DECL const char* def_multi_coll[] = {
63    "ae",
64    "Ae",
65    "AE",
66    "ch",
67    "Ch",
68    "CH",
69    "ll",
70    "Ll",
71    "LL",
72    "ss",
73    "Ss",
74    "SS",
75    "nj",
76    "Nj",
77    "NJ",
78    "dz",
79    "Dz",
80    "DZ",
81    "lj",
82    "Lj",
83    "LJ",
84    "",
85 };
86
87
88
89 BOOST_REGEX_DECL bool BOOST_REGEX_CALL re_lookup_def_collate_name(std::string& buf, const char* name)
90 {
91    BOOST_RE_GUARD_STACK
92    unsigned int i = 0;
93    while(*def_coll_names[i])
94    {
95       if(std::strcmp(def_coll_names[i], name) == 0)
96       {
97          buf = (char)i;
98          return true;
99       }
100       ++i;
101    }
102    i = 0;
103    while(*def_multi_coll[i])
104    {
105       if(std::strcmp(def_multi_coll[i], name) == 0)
106       {
107          buf = def_multi_coll[i];
108          return true;
109       }
110       ++i;
111    }
112    return false;
113 }
114
115 //
116 // messages:
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 */
137    "",
138    "",
139    "",
140 };
141
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, "=", },
180
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", },
196
197                               { 100 + c_regex_traits<char>::syntax_not, "!", },
198
199                             { 0, "", },
200                          };
201
202 BOOST_REGEX_DECL std::size_t BOOST_REGEX_CALL re_get_default_message(char* buf, std::size_t len, std::size_t id)
203 {
204    BOOST_RE_GUARD_STACK
205    const mss* pm = default_messages;
206    while(pm->id)
207    {
208       if(pm->id == id)
209       {
210          std::size_t size = re_strlen(pm->what) + 1;
211          if(size > len)
212             return size;
213          re_strcpy(buf, pm->what);
214          return size;
215       }
216       ++pm;
217    }
218    if(buf && len)
219       *buf = 0;
220    return 1;
221 }
222
223 #ifndef BOOST_NO_WREGEX
224 const wchar_t combining_ranges[] = { 0x0300, 0x0361, 
225                            0x0483, 0x0486, 
226                            0x0903, 0x0903, 
227                            0x093E, 0x0940, 
228                            0x0949, 0x094C,
229                            0x0982, 0x0983,
230                            0x09BE, 0x09C0,
231                            0x09C7, 0x09CC,
232                            0x09D7, 0x09D7,
233                            0x0A3E, 0x0A40,
234                            0x0A83, 0x0A83,
235                            0x0ABE, 0x0AC0,
236                            0x0AC9, 0x0ACC,
237                            0x0B02, 0x0B03,
238                            0x0B3E, 0x0B3E,
239                            0x0B40, 0x0B40,
240                            0x0B47, 0x0B4C,
241                            0x0B57, 0x0B57,
242                            0x0B83, 0x0B83,
243                            0x0BBE, 0x0BBF,
244                            0x0BC1, 0x0BCC,
245                            0x0BD7, 0x0BD7,
246                            0x0C01, 0x0C03,
247                            0x0C41, 0x0C44,
248                            0x0C82, 0x0C83,
249                            0x0CBE, 0x0CBE,
250                            0x0CC0, 0x0CC4,
251                            0x0CC7, 0x0CCB,
252                            0x0CD5, 0x0CD6,
253                            0x0D02, 0x0D03,
254                            0x0D3E, 0x0D40,
255                            0x0D46, 0x0D4C,
256                            0x0D57, 0x0D57,
257                            0x0F7F, 0x0F7F,
258                            0x20D0, 0x20E1, 
259                            0x3099, 0x309A,
260                            0xFE20, 0xFE23, 
261                            0xffff, 0xffff, };
262
263 BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining(wchar_t c)
264 {
265    BOOST_RE_GUARD_STACK
266    const wchar_t* p = combining_ranges + 1;
267    while(*p < c) p += 2;
268    --p;
269    if((c >= *p) && (c <= *(p+1)))
270          return true;
271    return false;
272 }
273
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
402
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
532 };
533
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, 
551 };
552 #endif // BOOST_NO_WREGEX
553
554    } // namespace re_detail
555 } // namespace boost
556