This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
497d0914cd3316eeda7deefc6d335726368bfbe8
[perl5.git] / regcharclass.h
1 /* -*- buffer-read-only: t -*-
2  *
3  *    regcharclass.h
4  *
5  *    Copyright (C) 2007, 2011 by Larry Wall and others
6  *
7  *    You may distribute under the terms of either the GNU General Public
8  *    License or the Artistic License, as specified in the README file.
9  *
10  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
11  * This file is built by regen/regcharclass.pl.
12  * Any changes made here will be lost!
13  */
14
15
16 #ifndef H_REGCHARCLASS   /* Guard against nested #includes */
17 #define H_REGCHARCLASS 1
18
19 /*
20         LNBREAK: Line Break: \R
21
22         "\x0D\x0A"      # CRLF - Network (Windows) line ending
23         \p{VertSpace}
24 */
25 /*** GENERATED CODE ***/
26 #define is_LNBREAK(s,is_utf8)                                               \
27 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                        \
28 : ( 0x0D == ((U8*)s)[0] ) ?                                                 \
29     ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                     \
30 : ( is_utf8 ) ?                                                             \
31     ( ( 0xC2 == ((U8*)s)[0] ) ?                                             \
32         ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                                 \
33     : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
34 : ( 0x85 == ((U8*)s)[0] ) )
35
36 /*** GENERATED CODE ***/
37 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
38 ( ((e)-(s) > 2) ?                                                           \
39     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                    \
40     : ( 0x0D == ((U8*)s)[0] ) ?                                             \
41         ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
42     : ( is_utf8 ) ?                                                         \
43         ( ( 0xC2 == ((U8*)s)[0] ) ?                                         \
44             ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                             \
45         : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
46     : ( 0x85 == ((U8*)s)[0] ) )                                             \
47 : ((e)-(s) > 1) ?                                                           \
48     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                    \
49     : ( 0x0D == ((U8*)s)[0] ) ?                                             \
50         ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
51     : ( is_utf8 ) ?                                                         \
52         ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 )  \
53     : ( 0x85 == ((U8*)s)[0] ) )                                             \
54 : ((e)-(s) > 0) ?                                                           \
55     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1                    \
56     : ( !( is_utf8 ) ) ?                                                    \
57         ( 0x85 == ((U8*)s)[0] )                                             \
58     : 0 )                                                                   \
59 : 0 )
60
61 /*** GENERATED CODE ***/
62 #define is_LNBREAK_utf8(s)                                                  \
63 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                        \
64 : ( 0x0D == ((U8*)s)[0] ) ?                                                 \
65     ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                     \
66 : ( 0xC2 == ((U8*)s)[0] ) ?                                                 \
67     ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
68 : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
69
70 /*** GENERATED CODE ***/
71 #define is_LNBREAK_utf8_safe(s,e)                                           \
72 ( ((e)-(s) > 2) ?                                                           \
73     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                    \
74     : ( 0x0D == ((U8*)s)[0] ) ?                                             \
75         ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
76     : ( 0xC2 == ((U8*)s)[0] ) ?                                             \
77         ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                                 \
78     : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
79 : ((e)-(s) > 1) ?                                                           \
80     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1                    \
81     : ( 0x0D == ((U8*)s)[0] ) ?                                             \
82         ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
83     : ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 )      \
84 : ((e)-(s) > 0) ?                                                           \
85     ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D )                          \
86 : 0 )
87
88 /*** GENERATED CODE ***/
89 #define is_LNBREAK_latin1(s)                                                \
90 ( ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) || 0x85 == ((U8*)s)[0] ) ? 1\
91 : ( 0x0D == ((U8*)s)[0] ) ?                                                 \
92     ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                     \
93 : 0 )
94
95 /*** GENERATED CODE ***/
96 #define is_LNBREAK_latin1_safe(s,e)                                         \
97 ( ((e)-(s) > 1) ?                                                           \
98     ( ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) || 0x85 == ((U8*)s)[0] ) ? 1\
99     : ( 0x0D == ((U8*)s)[0] ) ?                                             \
100         ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 )                                 \
101     : 0 )                                                                   \
102 : ((e)-(s) > 0) ?                                                           \
103     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
104 : 0 )
105
106 /*
107         HORIZWS: Horizontal Whitespace: \h \H
108
109         \p{HorizSpace}
110 */
111 /*** GENERATED CODE ***/
112 #define is_HORIZWS(s,is_utf8)                                               \
113 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1                        \
114 : ( is_utf8 ) ?                                                             \
115     ( ( 0xC2 == ((U8*)s)[0] ) ?                                             \
116         ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 )                                 \
117     : ( 0xE1 == ((U8*)s)[0] ) ?                                             \
118         ( ( 0x9A == ((U8*)s)[1] ) ?                                         \
119             ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 )                             \
120         : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 )  \
121     : ( 0xE2 == ((U8*)s)[0] ) ?                                             \
122         ( ( 0x80 == ((U8*)s)[1] ) ?                                         \
123             ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
124         : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 )  \
125     : ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
126 : ( 0xA0 == ((U8*)s)[0] ) )
127
128 /*** GENERATED CODE ***/
129 #define is_HORIZWS_safe(s,e,is_utf8)                                        \
130 ( ((e)-(s) > 2) ?                                                           \
131     ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1                    \
132     : ( is_utf8 ) ?                                                         \
133         ( ( 0xC2 == ((U8*)s)[0] ) ?                                         \
134             ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 )                             \
135         : ( 0xE1 == ((U8*)s)[0] ) ?                                         \
136             ( ( 0x9A == ((U8*)s)[1] ) ?                                     \
137                 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 )                         \
138             : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 )\
139         : ( 0xE2 == ((U8*)s)[0] ) ?                                         \
140             ( ( 0x80 == ((U8*)s)[1] ) ?                                     \
141                 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
142             : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 )\
143         : ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
144     : ( 0xA0 == ((U8*)s)[0] ) )                                             \
145 : ((e)-(s) > 1) ?                                                           \
146     ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1                    \
147     : ( is_utf8 ) ?                                                         \
148         ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 2 : 0 )  \
149     : ( 0xA0 == ((U8*)s)[0] ) )                                             \
150 : ((e)-(s) > 0) ?                                                           \
151     ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1                    \
152     : ( !( is_utf8 ) ) ?                                                    \
153         ( 0xA0 == ((U8*)s)[0] )                                             \
154     : 0 )                                                                   \
155 : 0 )
156
157 /*** GENERATED CODE ***/
158 #define is_HORIZWS_utf8(s)                                                  \
159 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1                        \
160 : ( 0xC2 == ((U8*)s)[0] ) ?                                                 \
161     ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
162 : ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
163     ( ( 0x9A == ((U8*)s)[1] ) ?                                             \
164         ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
165     : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 )      \
166 : ( 0xE2 == ((U8*)s)[0] ) ?                                                 \
167     ( ( 0x80 == ((U8*)s)[1] ) ?                                             \
168         ( ( ( ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )      \
169     : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 )      \
170 : ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )
171
172 /*** GENERATED CODE ***/
173 #define is_HORIZWS_utf8_safe(s,e)                                           \
174 ( ((e)-(s) > 2) ?                                                           \
175     ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1                    \
176     : ( 0xC2 == ((U8*)s)[0] ) ?                                             \
177         ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 )                                 \
178     : ( 0xE1 == ((U8*)s)[0] ) ?                                             \
179         ( ( 0x9A == ((U8*)s)[1] ) ?                                         \
180             ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 )                             \
181         : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) ? 3 : 0 )  \
182     : ( 0xE2 == ((U8*)s)[0] ) ?                                             \
183         ( ( 0x80 == ((U8*)s)[1] ) ?                                         \
184             ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
185         : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 )  \
186     : ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
187 : ((e)-(s) > 1) ?                                                           \
188     ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1                    \
189     : ( ( 0xC2 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 2 : 0 )      \
190 : ((e)-(s) > 0) ?                                                           \
191     ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] )                          \
192 : 0 )
193
194 /*** GENERATED CODE ***/
195 #define is_HORIZWS_latin1(s)                                                \
196 ( ((U8*)s)[0] == 0x09 || ( ( ((U8*)s)[0] & 0x7F ) == 0x20 ) )
197
198 /*** GENERATED CODE ***/
199 #define is_HORIZWS_latin1_safe(s,e)                                         \
200 ( ((e)-(s) > 0) ?                                                           \
201     ( ((U8*)s)[0] == 0x09 || ( ( ((U8*)s)[0] & 0x7F ) == 0x20 ) )           \
202 : 0 )
203
204 /*** GENERATED CODE ***/
205 #define is_HORIZWS_cp(cp)                                                   \
206 ( 0x09 == cp || ( 0x09 < cp &&                                              \
207 ( 0x20 == cp || ( 0x20 < cp &&                                              \
208 ( 0xA0 == cp || ( 0xA0 < cp &&                                              \
209 ( 0x1680 == cp || ( 0x1680 < cp &&                                          \
210 ( 0x180E == cp || ( 0x180E < cp &&                                          \
211 ( ( 0x2000 <= cp && cp <= 0x200A ) || ( 0x200A < cp &&                      \
212 ( 0x202F == cp || ( 0x202F < cp &&                                          \
213 ( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
214
215 /*
216         VERTWS: Vertical Whitespace: \v \V
217
218         \p{VertSpace}
219 */
220 /*** GENERATED CODE ***/
221 #define is_VERTWS(s,is_utf8)                                                \
222 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1                        \
223 : ( is_utf8 ) ?                                                             \
224     ( ( 0xC2 == ((U8*)s)[0] ) ?                                             \
225         ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                                 \
226     : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
227 : ( 0x85 == ((U8*)s)[0] ) )
228
229 /*** GENERATED CODE ***/
230 #define is_VERTWS_safe(s,e,is_utf8)                                         \
231 ( ((e)-(s) > 2) ?                                                           \
232     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1                    \
233     : ( is_utf8 ) ?                                                         \
234         ( ( 0xC2 == ((U8*)s)[0] ) ?                                         \
235             ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                             \
236         : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
237     : ( 0x85 == ((U8*)s)[0] ) )                                             \
238 : ((e)-(s) > 1) ?                                                           \
239     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1                    \
240     : ( is_utf8 ) ?                                                         \
241         ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 )  \
242     : ( 0x85 == ((U8*)s)[0] ) )                                             \
243 : ((e)-(s) > 0) ?                                                           \
244     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1                    \
245     : ( !( is_utf8 ) ) ?                                                    \
246         ( 0x85 == ((U8*)s)[0] )                                             \
247     : 0 )                                                                   \
248 : 0 )
249
250 /*** GENERATED CODE ***/
251 #define is_VERTWS_utf8(s)                                                   \
252 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1                        \
253 : ( 0xC2 == ((U8*)s)[0] ) ?                                                 \
254     ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                                     \
255 : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
256
257 /*** GENERATED CODE ***/
258 #define is_VERTWS_utf8_safe(s,e)                                            \
259 ( ((e)-(s) > 2) ?                                                           \
260     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1                    \
261     : ( 0xC2 == ((U8*)s)[0] ) ?                                             \
262         ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 )                                 \
263     : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
264 : ((e)-(s) > 1) ?                                                           \
265     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1                    \
266     : ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 )      \
267 : ((e)-(s) > 0) ?                                                           \
268     ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D )                          \
269 : 0 )
270
271 /*** GENERATED CODE ***/
272 #define is_VERTWS_high(s)                                                   \
273 ( ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
274
275 /*** GENERATED CODE ***/
276 #define is_VERTWS_high_safe(s,e)                                            \
277 ( ( ( ( ((e)-(s) > 2) && ( 0xE2 == ((U8*)s)[0] ) ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )
278
279 /*** GENERATED CODE ***/
280 #define is_VERTWS_latin1(s)                                                 \
281 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )
282
283 /*** GENERATED CODE ***/
284 #define is_VERTWS_latin1_safe(s,e)                                          \
285 ( ((e)-(s) > 0) ?                                                           \
286     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
287 : 0 )
288
289 /*** GENERATED CODE ***/
290 #define is_VERTWS_cp(cp)                                                    \
291 ( ( 0x0A <= cp && cp <= 0x0D ) || ( 0x0D < cp &&                            \
292 ( 0x85 == cp || ( 0x85 < cp &&                                              \
293 ( 0x2028 == cp || 0x2029 == cp ) ) ) ) )
294
295 /*** GENERATED CODE ***/
296 #define is_VERTWS_cp_high(cp)                                               \
297 ( 0x2028 == cp || 0x2029 == cp )
298
299 /*
300         REPLACEMENT: Unicode REPLACEMENT CHARACTER
301
302         0xFFFD
303 */
304 /*** GENERATED CODE ***/
305 #define is_REPLACEMENT_utf8_safe(s,e)                                       \
306 ( ( ( ( ((e)-(s) > 2) && ( 0xEF == ((U8*)s)[0] ) ) && ( 0xBF == ((U8*)s)[1] ) ) && ( 0xBD == ((U8*)s)[2] ) ) ? 3 : 0 )
307
308 /*
309         NONCHAR: Non character code points
310
311         \p{Nchar}
312 */
313 /*** GENERATED CODE ***/
314 #define is_NONCHAR_utf8(s)                                                  \
315 ( ( 0xEF == ((U8*)s)[0] ) ?                                                 \
316     ( ( 0xB7 == ((U8*)s)[1] ) ?                                             \
317         ( ( 0x90 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ? 3 : 0 )          \
318     : ( ( 0xBF == ((U8*)s)[1] ) && ( ((U8*)s)[2] >= 0xBE ) ) ? 3 : 0 )      \
319 : ( 0xF0 == ((U8*)s)[0] ) ?                                                 \
320     ( ( ( ( ((U8*)s)[1] == 0x9F || ( ( ((U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\
321 : ( 0xF1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xF3 ) ?                          \
322     ( ( ( ( ( ((U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\
323 : ( ( ( ( 0xF4 == ((U8*)s)[0] ) && ( 0x8F == ((U8*)s)[1] ) ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )
324
325 /*
326         SURROGATE: Surrogate characters
327
328         \p{Gc=Cs}
329 */
330 /*** GENERATED CODE ***/
331 #define is_SURROGATE_utf8(s)                                                \
332 ( ( ( 0xED == ((U8*)s)[0] ) && ( ((U8*)s)[1] >= 0xA0 ) ) ? 3 : 0 )
333
334 /*
335         GCB_L: Grapheme_Cluster_Break=L
336
337         \p{_X_GCB_L}
338 */
339 /*** GENERATED CODE ***/
340 #define is_GCB_L_utf8(s)                                                    \
341 ( ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
342     ( ( 0x84 == ((U8*)s)[1] ) ?                                             \
343         3                                                                   \
344     : ( ( 0x85 == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0x9F ) ) ? 3 : 0 )      \
345 : ( ( ( 0xEA == ((U8*)s)[0] ) && ( 0xA5 == ((U8*)s)[1] ) ) && ( 0xA0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBC ) ) ? 3 : 0 )
346
347 /*
348         GCB_LV_LVT_V: Grapheme_Cluster_Break=(LV or LVT or V)
349
350         \p{_X_LV_LVT_V}
351 */
352 /*** GENERATED CODE ***/
353 #define is_GCB_LV_LVT_V_utf8(s)                                             \
354 ( ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
355     ( ( 0x85 == ((U8*)s)[1] ) ?                                             \
356         ( ( ((U8*)s)[2] >= 0xA0 ) ? 3 : 0 )                                 \
357     : ( ( 0x86 == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0xA7 ) ) ? 3 : 0 )      \
358 : ( 0xEA == ((U8*)s)[0] ) ?                                                 \
359     ( ( ((U8*)s)[1] >= 0xB0 ) ?                                             \
360         3                                                                   \
361     : 0 )                                                                   \
362 : ( 0xEB == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ?                          \
363     3                                                                       \
364 : ( 0xED == ((U8*)s)[0] ) ?                                                 \
365     ( ( ((U8*)s)[1] <= 0x9D ) ?                                             \
366         3                                                                   \
367     : ( 0x9E == ((U8*)s)[1] ) ?                                             \
368         ( ( ( ((U8*)s)[2] <= 0xA3 ) || ( ((U8*)s)[2] >= 0xB0 ) ) ? 3 : 0 )  \
369     : ( ( 0x9F == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )      \
370 : 0 )
371
372 /*
373         GCB_Prepend: Grapheme_Cluster_Break=Prepend
374
375         \p{_X_GCB_Prepend}
376 */
377 /*** GENERATED CODE ***/
378 #define is_GCB_Prepend_utf8(s)                                              \
379 ( 0 )
380
381 /*
382         GCB_RI: Grapheme_Cluster_Break=RI
383
384         \p{_X_RI}
385 */
386 /*** GENERATED CODE ***/
387 #define is_GCB_RI_utf8(s)                                                   \
388 ( ( ( ( ( 0xF0 == ((U8*)s)[0] ) && ( 0x9F == ((U8*)s)[1] ) ) && ( 0x87 == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xA6 ) ) ? 4 : 0 )
389
390 /*
391         GCB_SPECIAL_BEGIN: Grapheme_Cluster_Break=special_begins
392
393         \p{_X_Special_Begin}
394 */
395 /*** GENERATED CODE ***/
396 #define is_GCB_SPECIAL_BEGIN_utf8(s)                                        \
397 ( ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
398     ( ( ( ((U8*)s)[1] & 0xFC ) == 0x84 ) ?                                  \
399         3                                                                   \
400     : 0 )                                                                   \
401 : ( 0xEA == ((U8*)s)[0] ) ?                                                 \
402     ( ( 0xA5 == ((U8*)s)[1] ) ?                                             \
403         ( ( 0xA0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBC ) ? 3 : 0 )          \
404     : ( ((U8*)s)[1] >= 0xB0 ) ?                                             \
405         3                                                                   \
406     : 0 )                                                                   \
407 : ( 0xEB == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ?                          \
408     3                                                                       \
409 : ( 0xED == ((U8*)s)[0] ) ?                                                 \
410     ( ( ((U8*)s)[1] <= 0x9D ) ?                                             \
411         3                                                                   \
412     : ( 0x9E == ((U8*)s)[1] ) ?                                             \
413         ( ( ( ((U8*)s)[2] <= 0xA3 ) || ( ((U8*)s)[2] >= 0xB0 ) ) ? 3 : 0 )  \
414     : ( ( 0x9F == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] <= 0x86 ) || ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBB ) ) ) ? 3 : 0 )\
415 : ( ( ( ( 0xF0 == ((U8*)s)[0] ) && ( 0x9F == ((U8*)s)[1] ) ) && ( 0x87 == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xA6 ) ) ? 4 : 0 )
416
417 /*
418         GCB_T: Grapheme_Cluster_Break=T
419
420         \p{_X_GCB_T}
421 */
422 /*** GENERATED CODE ***/
423 #define is_GCB_T_utf8(s)                                                    \
424 ( ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
425     ( ( 0x86 == ((U8*)s)[1] ) ?                                             \
426         ( ( ((U8*)s)[2] >= 0xA8 ) ? 3 : 0 )                                 \
427     : ( 0x87 == ((U8*)s)[1] ) ?                                             \
428         3                                                                   \
429     : 0 )                                                                   \
430 : ( ( ( 0xED == ((U8*)s)[0] ) && ( 0x9F == ((U8*)s)[1] ) ) && ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBB ) ) ? 3 : 0 )
431
432 /*
433         GCB_V: Grapheme_Cluster_Break=V
434
435         \p{_X_GCB_V}
436 */
437 /*** GENERATED CODE ***/
438 #define is_GCB_V_utf8(s)                                                    \
439 ( ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
440     ( ( 0x85 == ((U8*)s)[1] ) ?                                             \
441         ( ( ((U8*)s)[2] >= 0xA0 ) ? 3 : 0 )                                 \
442     : ( ( 0x86 == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0xA7 ) ) ? 3 : 0 )      \
443 : ( 0xED == ((U8*)s)[0] ) ?                                                 \
444     ( ( 0x9E == ((U8*)s)[1] ) ?                                             \
445         ( ( ((U8*)s)[2] >= 0xB0 ) ? 3 : 0 )                                 \
446     : ( ( 0x9F == ((U8*)s)[1] ) && ( ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )      \
447 : 0 )
448
449 /*
450         QUOTEMETA: Meta-characters that \Q should quote
451
452         \p{_Perl_Quotemeta}
453 */
454 /*** GENERATED CODE ***/
455 #define is_QUOTEMETA_high(s)                                                \
456 ( ( 0xCD == ((U8*)s)[0] ) ?                                                 \
457     ( ( 0x8F == ((U8*)s)[1] ) ? 2 : 0 )                                     \
458 : ( 0xE1 == ((U8*)s)[0] ) ?                                                 \
459     ( ( 0x85 == ((U8*)s)[1] ) ?                                             \
460         ( ( 0x9F == ((U8*)s)[2] || 0xA0 == ((U8*)s)[2] ) ? 3 : 0 )          \
461     : ( 0x9A == ((U8*)s)[1] ) ?                                             \
462         ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
463     : ( 0x9E == ((U8*)s)[1] ) ?                                             \
464         ( ( ( ((U8*)s)[2] & 0xFE ) == 0xB4 ) ? 3 : 0 )                      \
465     : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8E ) ) ? 3 : 0 )\
466 : ( 0xE2 == ((U8*)s)[0] ) ?                                                 \
467     ( ( 0x80 == ((U8*)s)[1] ) ?                                             \
468         ( ( ((U8*)s)[2] <= 0xBE ) ? 3 : 0 )                                 \
469     : ( 0x81 == ((U8*)s)[1] ) ?                                             \
470         ( ( ( 0x81 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x93 ) || ( 0x95 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ) ? 3 : 0 )\
471     : ( 0x86 == ((U8*)s)[1] ) ?                                             \
472         ( ( ((U8*)s)[2] >= 0x90 ) ? 3 : 0 )                                 \
473     : ( ( 0x87 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x90 ) || ( 0x94 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x9C ) || ( 0x9F <= ((U8*)s)[1] && ((U8*)s)[1] <= 0xAF ) || ( ((U8*)s)[1] & 0xFE ) == 0xB8 ) ?\
474         3                                                                   \
475     : ( 0x91 == ((U8*)s)[1] ) ?                                             \
476         ( ( ((U8*)s)[2] <= 0x9F ) ? 3 : 0 )                                 \
477     : ( 0x9D == ((U8*)s)[1] ) ?                                             \
478         ( ( ((U8*)s)[2] <= 0xB5 ) ? 3 : 0 )                                 \
479     : ( ( 0x9E == ((U8*)s)[1] ) && ( ((U8*)s)[2] >= 0x94 ) ) ? 3 : 0 )      \
480 : ( 0xE3 == ((U8*)s)[0] ) ?                                                 \
481     ( ( 0x80 == ((U8*)s)[1] ) ?                                             \
482         ( ( ( ((U8*)s)[2] <= 0x83 ) || ( 0x88 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xA0 ) || 0xB0 == ((U8*)s)[2] ) ? 3 : 0 )\
483     : ( ( 0x85 == ((U8*)s)[1] ) && ( 0xA4 == ((U8*)s)[2] ) ) ? 3 : 0 )      \
484 : ( 0xEF == ((U8*)s)[0] ) ?                                                 \
485     ( ( 0xB4 == ((U8*)s)[1] ) ?                                             \
486         ( ( ((U8*)s)[2] >= 0xBE ) ? 3 : 0 )                                 \
487     : ( 0xB8 == ((U8*)s)[1] ) ?                                             \
488         ( ( ((U8*)s)[2] <= 0x8F ) ? 3 : 0 )                                 \
489     : ( 0xB9 == ((U8*)s)[1] ) ?                                             \
490         ( ( 0x85 == ((U8*)s)[2] || 0x86 == ((U8*)s)[2] ) ? 3 : 0 )          \
491     : ( 0xBB == ((U8*)s)[1] ) ?                                             \
492         ( ( 0xBF == ((U8*)s)[2] ) ? 3 : 0 )                                 \
493     : ( 0xBE == ((U8*)s)[1] ) ?                                             \
494         ( ( 0xA0 == ((U8*)s)[2] ) ? 3 : 0 )                                 \
495     : ( ( 0xBF == ((U8*)s)[1] ) && ( 0xB0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xB8 ) ) ? 3 : 0 )\
496 : ( 0xF0 == ((U8*)s)[0] ) ?                                                 \
497     ( ( ( ( 0x9D == ((U8*)s)[1] ) && ( 0x85 == ((U8*)s)[2] ) ) && ( 0xB3 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0xBA ) ) ? 4 : 0 )\
498 : ( ( 0xF3 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 4 : 0 )
499
500 /*
501         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
502
503         do regen/regcharclass_multi_char_folds.pl
504         &regcharclass_multi_char_folds::multi_char_folds(1)
505 */
506 /*** GENERATED CODE ***/
507 #define is_MULTI_CHAR_FOLD_utf8_safe(s,e)                                   \
508 ( ((e)-(s) > 5) ?                                                           \
509     ( ( 0x61 == ((U8*)s)[0] ) ?                                             \
510         ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 )  \
511     : ( 0x66 == ((U8*)s)[0] ) ?                                             \
512         ( ( 0x66 == ((U8*)s)[1] ) ?                                         \
513             ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 )      \
514         : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )          \
515     : ( 0x68 == ((U8*)s)[0] ) ?                                             \
516         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
517     : ( 0x69 == ((U8*)s)[0] ) ?                                             \
518         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
519     : ( 0x6A == ((U8*)s)[0] ) ?                                             \
520         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 )  \
521     : ( 0x73 == ((U8*)s)[0] ) ?                                             \
522         ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 )          \
523     : ( 0x74 == ((U8*)s)[0] ) ?                                             \
524         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
525     : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ?                      \
526         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 )  \
527     : ( 0xCA == ((U8*)s)[0] ) ?                                             \
528         ( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )  \
529     : ( 0xCE == ((U8*)s)[0] ) ?                                             \
530         ( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ?                              \
531             ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
532         : ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ?                  \
533             ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
534                 ( ( 0x82 == ((U8*)s)[3] ) ?                                 \
535                     ( ( ( 0xCE == ((U8*)s)[4] ) && ( 0xB9 == ((U8*)s)[5] ) ) ? 6 : 4 )\
536                 : 0 )                                                       \
537             : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
538         : ( 0xB9 == ((U8*)s)[1] ) ?                                         \
539             ( ( 0xCC == ((U8*)s)[2] ) ?                                     \
540                 ( ( 0x88 == ((U8*)s)[3] ) ?                                 \
541                     ( ( 0xCC == ((U8*)s)[4] ) ?                             \
542                         ( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 )      \
543                     : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 0 )\
544                 : 0 )                                                       \
545             : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
546         : 0 )                                                               \
547     : ( 0xCF == ((U8*)s)[0] ) ?                                             \
548         ( ( 0x81 == ((U8*)s)[1] ) ?                                         \
549             ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\
550         : ( 0x85 == ((U8*)s)[1] ) ?                                         \
551             ( ( 0xCC == ((U8*)s)[2] ) ?                                     \
552                 ( ( 0x88 == ((U8*)s)[3] ) ?                                 \
553                     ( ( 0xCC == ((U8*)s)[4] ) ?                             \
554                         ( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 )      \
555                     : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 0 )\
556                 : ( 0x93 == ((U8*)s)[3] ) ?                                 \
557                     ( ( 0xCC == ((U8*)s)[4] ) ?                             \
558                         ( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 4 )      \
559                     : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 4 )\
560                 : 0 )                                                       \
561             : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
562         : ( 0x89 == ((U8*)s)[1] ) ?                                         \
563             ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
564                 ( ( 0x82 == ((U8*)s)[3] ) ?                                 \
565                     ( ( ( 0xCE == ((U8*)s)[4] ) && ( 0xB9 == ((U8*)s)[5] ) ) ? 6 : 4 )\
566                 : 0 )                                                       \
567             : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
568         : ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
569     : ( 0xD5 == ((U8*)s)[0] ) ?                                             \
570         ( ( 0xA5 == ((U8*)s)[1] ) ?                                         \
571             ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
572         : ( 0xB4 == ((U8*)s)[1] ) ?                                         \
573             ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
574         : ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\
575     : ( 0xE1 == ((U8*)s)[0] ) ?                                             \
576         ( ( 0xBC == ((U8*)s)[1] ) ?                                         \
577             ( ( ( ( ( ((U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
578         : ( ( ( ( 0xBD == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFB ) == 0xB0 ) || ((U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
579     : 0 )                                                                   \
580 : ((e)-(s) > 4) ?                                                           \
581     ( ( 0x61 == ((U8*)s)[0] ) ?                                             \
582         ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 )  \
583     : ( 0x66 == ((U8*)s)[0] ) ?                                             \
584         ( ( 0x66 == ((U8*)s)[1] ) ?                                         \
585             ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 )      \
586         : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )          \
587     : ( 0x68 == ((U8*)s)[0] ) ?                                             \
588         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
589     : ( 0x69 == ((U8*)s)[0] ) ?                                             \
590         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
591     : ( 0x6A == ((U8*)s)[0] ) ?                                             \
592         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 )  \
593     : ( 0x73 == ((U8*)s)[0] ) ?                                             \
594         ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 )          \
595     : ( 0x74 == ((U8*)s)[0] ) ?                                             \
596         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
597     : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ?                      \
598         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 )  \
599     : ( 0xCA == ((U8*)s)[0] ) ?                                             \
600         ( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )  \
601     : ( 0xCE == ((U8*)s)[0] ) ?                                             \
602         ( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ?                              \
603             ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
604         : ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ?                  \
605             ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
606                 ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 )                         \
607             : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
608         : ( ( ( 0xB9 == ((U8*)s)[1] ) && ( 0xCD == ((U8*)s)[2] ) ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
609     : ( 0xCF == ((U8*)s)[0] ) ?                                             \
610         ( ( 0x81 == ((U8*)s)[1] ) ?                                         \
611             ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\
612         : ( 0x85 == ((U8*)s)[1] ) ?                                         \
613             ( ( 0xCC == ((U8*)s)[2] ) ?                                     \
614                 ( ( 0x93 == ((U8*)s)[3] ) ? 4 : 0 )                         \
615             : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
616         : ( 0x89 == ((U8*)s)[1] ) ?                                         \
617             ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
618                 ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 )                         \
619             : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
620         : ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
621     : ( 0xD5 == ((U8*)s)[0] ) ?                                             \
622         ( ( 0xA5 == ((U8*)s)[1] ) ?                                         \
623             ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
624         : ( 0xB4 == ((U8*)s)[1] ) ?                                         \
625             ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
626         : ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\
627     : ( 0xE1 == ((U8*)s)[0] ) ?                                             \
628         ( ( 0xBC == ((U8*)s)[1] ) ?                                         \
629             ( ( ( ( ( ((U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
630         : ( ( ( ( 0xBD == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFB ) == 0xB0 ) || ((U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\
631     : 0 )                                                                   \
632 : ((e)-(s) > 3) ?                                                           \
633     ( ( 0x61 == ((U8*)s)[0] ) ?                                             \
634         ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 )  \
635     : ( 0x66 == ((U8*)s)[0] ) ?                                             \
636         ( ( 0x66 == ((U8*)s)[1] ) ?                                         \
637             ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 )      \
638         : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )          \
639     : ( 0x68 == ((U8*)s)[0] ) ?                                             \
640         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
641     : ( 0x69 == ((U8*)s)[0] ) ?                                             \
642         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
643     : ( 0x6A == ((U8*)s)[0] ) ?                                             \
644         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 )  \
645     : ( 0x73 == ((U8*)s)[0] ) ?                                             \
646         ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 )          \
647     : ( 0x74 == ((U8*)s)[0] ) ?                                             \
648         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
649     : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ?                      \
650         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 )  \
651     : ( 0xCA == ((U8*)s)[0] ) ?                                             \
652         ( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )  \
653     : ( 0xCE == ((U8*)s)[0] ) ?                                             \
654         ( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ?                              \
655             ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
656         : ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ?                  \
657             ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
658                 ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 )                         \
659             : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
660         : ( ( ( 0xB9 == ((U8*)s)[1] ) && ( 0xCD == ((U8*)s)[2] ) ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
661     : ( 0xCF == ((U8*)s)[0] ) ?                                             \
662         ( ( 0x81 == ((U8*)s)[1] ) ?                                         \
663             ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\
664         : ( 0x85 == ((U8*)s)[1] ) ?                                         \
665             ( ( 0xCC == ((U8*)s)[2] ) ?                                     \
666                 ( ( 0x93 == ((U8*)s)[3] ) ? 4 : 0 )                         \
667             : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
668         : ( 0x89 == ((U8*)s)[1] ) ?                                         \
669             ( ( 0xCD == ((U8*)s)[2] ) ?                                     \
670                 ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 )                         \
671             : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
672         : ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\
673     : ( 0xD5 == ((U8*)s)[0] ) ?                                             \
674         ( ( 0xA5 == ((U8*)s)[1] ) ?                                         \
675             ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
676         : ( 0xB4 == ((U8*)s)[1] ) ?                                         \
677             ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\
678         : ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\
679     : 0 )                                                                   \
680 : ((e)-(s) > 2) ?                                                           \
681     ( ( 0x61 == ((U8*)s)[0] ) ?                                             \
682         ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 )  \
683     : ( 0x66 == ((U8*)s)[0] ) ?                                             \
684         ( ( 0x66 == ((U8*)s)[1] ) ?                                         \
685             ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 )      \
686         : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )          \
687     : ( 0x68 == ((U8*)s)[0] ) ?                                             \
688         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
689     : ( 0x69 == ((U8*)s)[0] ) ?                                             \
690         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
691     : ( 0x6A == ((U8*)s)[0] ) ?                                             \
692         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 )  \
693     : ( 0x73 == ((U8*)s)[0] ) ?                                             \
694         ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 )          \
695     : ( 0x74 == ((U8*)s)[0] ) ?                                             \
696         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 )  \
697     : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ?                      \
698         ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 )  \
699     : ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0xBC == ((U8*)s)[1] ) ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )\
700 : ((e)-(s) > 1) ?                                                           \
701     ( ( 0x66 == ((U8*)s)[0] ) ?                                             \
702         ( ( 0x66 == ((U8*)s)[1] || 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )\
703     : ( ( 0x73 == ((U8*)s)[0] ) && ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ) ? 2 : 0 )\
704 : 0 )
705
706 /*
707         MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
708
709         &regcharclass_multi_char_folds::multi_char_folds(0)
710 */
711 /*** GENERATED CODE ***/
712 #define is_MULTI_CHAR_FOLD_latin1_safe(s,e)                                 \
713 ( ((e)-(s) > 2) ?                                                           \
714     ( ( ( ((U8*)s)[0] & 0xDF ) == 0x46 ) ?                                  \
715         ( ( ( ((U8*)s)[1] & 0xDF ) == 0x46 ) ?                              \
716             ( ( ( ( ((U8*)s)[2] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[2] & 0xDF ) == 0x4C ) ) ? 3 : 2 )\
717         : ( ( ( ((U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\
718     : ( ( ( ((U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\
719 : ((e)-(s) > 1) ?                                                           \
720     ( ( ( ((U8*)s)[0] & 0xDF ) == 0x46 ) ?                                  \
721         ( ( ( ( ((U8*)s)[1] & 0xDF ) == 0x46 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\
722     : ( ( ( ((U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\
723 : 0 )
724
725
726 #endif /* H_REGCHARCLASS */
727
728 /* ex: set ro: */