1 /* -*- buffer-read-only: t -*-
5 * Copyright (C) 2007, 2011 by Larry Wall and others
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.
10 * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
11 * This file is built by regen/regcharclass.pl.
12 * Any changes made here will be lost!
16 #ifndef H_REGCHARCLASS /* Guard against nested #includes */
17 #define H_REGCHARCLASS 1
20 LNBREAK: Line Break: \R
22 "\x0D\x0A" # CRLF - Network (Windows) line ending
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 ) \
31 ( ( 0xC2 == ((U8*)s)[0] ) ? \
32 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
33 : ( 0xE2 == ((U8*)s)[0] ) ? \
34 ( ( ( 0x80 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
36 : ( 0x85 == ((U8*)s)[0] ) )
38 /*** GENERATED CODE ***/
39 #define is_LNBREAK_safe(s,e,is_utf8) \
41 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
42 : ( 0x0D == ((U8*)s)[0] ) ? \
43 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
45 ( ( 0xC2 == ((U8*)s)[0] ) ? \
46 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
47 : ( 0xE2 == ((U8*)s)[0] ) ? \
48 ( ( ( 0x80 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
50 : ( 0x85 == ((U8*)s)[0] ) ) \
52 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
53 : ( 0x0D == ((U8*)s)[0] ) ? \
54 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
56 ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
57 : ( 0x85 == ((U8*)s)[0] ) ) \
59 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
60 : ( !( is_utf8 ) ) ? \
61 ( 0x85 == ((U8*)s)[0] ) \
65 /*** GENERATED CODE ***/
66 #define is_LNBREAK_utf8(s) \
67 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
68 : ( 0x0D == ((U8*)s)[0] ) ? \
69 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
70 : ( 0xC2 == ((U8*)s)[0] ) ? \
71 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
72 : ( 0xE2 == ((U8*)s)[0] ) ? \
73 ( ( ( 0x80 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
76 /*** GENERATED CODE ***/
77 #define is_LNBREAK_utf8_safe(s,e) \
79 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
80 : ( 0x0D == ((U8*)s)[0] ) ? \
81 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
82 : ( 0xC2 == ((U8*)s)[0] ) ? \
83 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
84 : ( 0xE2 == ((U8*)s)[0] ) ? \
85 ( ( ( 0x80 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
88 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
89 : ( 0x0D == ((U8*)s)[0] ) ? \
90 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
91 : ( 0xC2 == ((U8*)s)[0] ) ? \
92 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
95 ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) \
98 /*** GENERATED CODE ***/
99 #define is_LNBREAK_latin1(s) \
100 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
101 : ( 0x0D == ((U8*)s)[0] ) ? \
102 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
103 : ( 0x85 == ((U8*)s)[0] ) )
105 /*** GENERATED CODE ***/
106 #define is_LNBREAK_latin1_safe(s,e) \
108 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
109 : ( 0x0D == ((U8*)s)[0] ) ? \
110 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
111 : ( 0x85 == ((U8*)s)[0] ) ) \
113 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
117 HORIZWS: Horizontal Whitespace: \h \H
121 /*** GENERATED CODE ***/
122 #define is_HORIZWS(s,is_utf8) \
123 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
125 ( ( 0xC2 == ((U8*)s)[0] ) ? \
126 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
127 : ( 0xE1 == ((U8*)s)[0] ) ? \
128 ( ( 0x9A == ((U8*)s)[1] ) ? \
129 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
130 : ( 0xA0 == ((U8*)s)[1] ) ? \
131 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
133 : ( 0xE2 == ((U8*)s)[0] ) ? \
134 ( ( 0x80 == ((U8*)s)[1] ) ? \
135 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
136 : ( 0x81 == ((U8*)s)[1] ) ? \
137 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
139 : ( 0xE3 == ((U8*)s)[0] ) ? \
140 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
142 : ( 0xA0 == ((U8*)s)[0] ) )
144 /*** GENERATED CODE ***/
145 #define is_HORIZWS_safe(s,e,is_utf8) \
147 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
149 ( ( 0xC2 == ((U8*)s)[0] ) ? \
150 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
151 : ( 0xE1 == ((U8*)s)[0] ) ? \
152 ( ( 0x9A == ((U8*)s)[1] ) ? \
153 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
154 : ( 0xA0 == ((U8*)s)[1] ) ? \
155 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
157 : ( 0xE2 == ((U8*)s)[0] ) ? \
158 ( ( 0x80 == ((U8*)s)[1] ) ? \
159 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
160 : ( 0x81 == ((U8*)s)[1] ) ? \
161 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
163 : ( 0xE3 == ((U8*)s)[0] ) ? \
164 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
166 : ( 0xA0 == ((U8*)s)[0] ) ) \
168 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
170 ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
171 : ( 0xA0 == ((U8*)s)[0] ) ) \
173 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
174 : ( !( is_utf8 ) ) ? \
175 ( 0xA0 == ((U8*)s)[0] ) \
179 /*** GENERATED CODE ***/
180 #define is_HORIZWS_utf8(s) \
181 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
182 : ( 0xC2 == ((U8*)s)[0] ) ? \
183 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
184 : ( 0xE1 == ((U8*)s)[0] ) ? \
185 ( ( 0x9A == ((U8*)s)[1] ) ? \
186 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
187 : ( 0xA0 == ((U8*)s)[1] ) ? \
188 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
190 : ( 0xE2 == ((U8*)s)[0] ) ? \
191 ( ( 0x80 == ((U8*)s)[1] ) ? \
192 ( ( ( ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 ) \
193 : ( 0x81 == ((U8*)s)[1] ) ? \
194 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
196 : ( 0xE3 == ((U8*)s)[0] ) ? \
197 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
200 /*** GENERATED CODE ***/
201 #define is_HORIZWS_utf8_safe(s,e) \
203 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
204 : ( 0xC2 == ((U8*)s)[0] ) ? \
205 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
206 : ( 0xE1 == ((U8*)s)[0] ) ? \
207 ( ( 0x9A == ((U8*)s)[1] ) ? \
208 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
209 : ( 0xA0 == ((U8*)s)[1] ) ? \
210 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
212 : ( 0xE2 == ((U8*)s)[0] ) ? \
213 ( ( 0x80 == ((U8*)s)[1] ) ? \
214 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
215 : ( 0x81 == ((U8*)s)[1] ) ? \
216 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
218 : ( 0xE3 == ((U8*)s)[0] ) ? \
219 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
222 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
223 : ( 0xC2 == ((U8*)s)[0] ) ? \
224 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
227 ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) \
230 /*** GENERATED CODE ***/
231 #define is_HORIZWS_latin1(s) \
232 ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] )
234 /*** GENERATED CODE ***/
235 #define is_HORIZWS_latin1_safe(s,e) \
237 ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] ) \
240 /*** GENERATED CODE ***/
241 #define is_HORIZWS_cp(cp) \
242 ( 0x09 == cp || ( 0x09 < cp && \
243 ( 0x20 == cp || ( 0x20 < cp && \
244 ( 0xA0 == cp || ( 0xA0 < cp && \
245 ( 0x1680 == cp || ( 0x1680 < cp && \
246 ( 0x180E == cp || ( 0x180E < cp && \
247 ( ( 0x2000 <= cp && cp <= 0x200A ) || ( 0x200A < cp && \
248 ( 0x202F == cp || ( 0x202F < cp && \
249 ( 0x205F == cp || ( 0x205F < cp && \
250 0x3000 == cp ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
253 VERTWS: Vertical Whitespace: \v \V
257 /*** GENERATED CODE ***/
258 #define is_VERTWS(s,is_utf8) \
259 ( ( 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] ) ? \
264 ( ( ( 0x80 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
266 : ( 0x85 == ((U8*)s)[0] ) )
268 /*** GENERATED CODE ***/
269 #define is_VERTWS_safe(s,e,is_utf8) \
271 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
273 ( ( 0xC2 == ((U8*)s)[0] ) ? \
274 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
275 : ( 0xE2 == ((U8*)s)[0] ) ? \
276 ( ( ( 0x80 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
278 : ( 0x85 == ((U8*)s)[0] ) ) \
280 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
282 ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
283 : ( 0x85 == ((U8*)s)[0] ) ) \
285 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
286 : ( !( is_utf8 ) ) ? \
287 ( 0x85 == ((U8*)s)[0] ) \
291 /*** GENERATED CODE ***/
292 #define is_VERTWS_utf8(s) \
293 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
294 : ( 0xC2 == ((U8*)s)[0] ) ? \
295 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
296 : ( 0xE2 == ((U8*)s)[0] ) ? \
297 ( ( ( 0x80 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
300 /*** GENERATED CODE ***/
301 #define is_VERTWS_utf8_safe(s,e) \
303 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
304 : ( 0xC2 == ((U8*)s)[0] ) ? \
305 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
306 : ( 0xE2 == ((U8*)s)[0] ) ? \
307 ( ( ( 0x80 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\
310 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
311 : ( 0xC2 == ((U8*)s)[0] ) ? \
312 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
315 ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) \
318 /*** GENERATED CODE ***/
319 #define is_VERTWS_latin1(s) \
320 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )
322 /*** GENERATED CODE ***/
323 #define is_VERTWS_latin1_safe(s,e) \
325 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
328 /*** GENERATED CODE ***/
329 #define is_VERTWS_cp(cp) \
330 ( ( 0x0A <= cp && cp <= 0x0D ) || ( 0x0D < cp && \
331 ( 0x85 == cp || ( 0x85 < cp && \
332 ( 0x2028 == cp || ( 0x2028 < cp && \
333 0x2029 == cp ) ) ) ) ) )
336 REPLACEMENT: Unicode REPLACEMENT CHARACTER
340 /*** GENERATED CODE ***/
341 #define is_REPLACEMENT_utf8_safe(s,e) \
342 ( ( ( ( ((e)-(s) > 2) && ( 0xEF == ((U8*)s)[0] ) ) && ( 0xBF == ((U8*)s)[1] ) ) && ( 0xBD == ((U8*)s)[2] ) ) ? 3 : 0 )
345 NONCHAR: Non character code points
349 /*** GENERATED CODE ***/
350 #define is_NONCHAR_utf8(s) \
351 ( ( 0xEF == ((U8*)s)[0] ) ? \
352 ( ( 0xB7 == ((U8*)s)[1] ) ? \
353 ( ( 0x90 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ? 3 : 0 ) \
354 : ( 0xBF == ((U8*)s)[1] ) ? \
355 ( ( ((U8*)s)[2] >= 0xBE ) ? 3 : 0 ) \
357 : ( 0xF0 == ((U8*)s)[0] ) ? \
358 ( ( ( ( 0x9F == ((U8*)s)[1] || 0xAF == ((U8*)s)[1] || 0xBF == ((U8*)s)[1] ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\
359 : ( 0xF1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xF3 ) ? \
360 ( ( ( ( ( ((U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\
361 : ( 0xF4 == ((U8*)s)[0] ) ? \
362 ( ( ( ( 0x8F == ((U8*)s)[1] ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\
366 SURROGATE: Surrogate characters
370 /*** GENERATED CODE ***/
371 #define is_SURROGATE_utf8(s) \
372 ( ( ( 0xED == ((U8*)s)[0] ) && ( ((U8*)s)[1] >= 0xA0 ) ) ? 3 : 0 )
375 GCB_L: Grapheme_Cluster_Break=L
379 /*** GENERATED CODE ***/
380 #define is_GCB_L_utf8(s) \
381 ( ( 0xE1 == ((U8*)s)[0] ) ? \
382 ( ( 0x84 == ((U8*)s)[1] ) ? \
384 : ( 0x85 == ((U8*)s)[1] ) ? \
385 ( ( ((U8*)s)[2] <= 0x9F ) ? 3 : 0 ) \
387 : ( 0xEA == ((U8*)s)[0] ) ? \
388 ( ( ( 0xA5 == ((U8*)s)[1] ) && ( 0xA0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBC ) ) ? 3 : 0 )\
392 GCB_LV_LVT_V: Grapheme_Cluster_Break=(LV or LVT or V)
396 /*** GENERATED CODE ***/
397 #define is_GCB_LV_LVT_V_utf8(s) \
398 ( ( 0xE1 == ((U8*)s)[0] ) ? \
399 ( ( 0x85 == ((U8*)s)[1] ) ? \
400 ( ( ((U8*)s)[2] >= 0xA0 ) ? 3 : 0 ) \
401 : ( 0x86 == ((U8*)s)[1] ) ? \
402 ( ( ((U8*)s)[2] <= 0xA7 ) ? 3 : 0 ) \
404 : ( 0xEA == ((U8*)s)[0] ) ? \
405 ( ( ((U8*)s)[1] >= 0xB0 ) ? \
408 : ( 0xEB == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ? \
410 : ( 0xED == ((U8*)s)[0] ) ? \
411 ( ( ((U8*)s)[1] <= 0x9D ) ? \
413 : ( 0x9E == ((U8*)s)[1] ) ? \
414 ( ( ( ((U8*)s)[2] <= 0xA3 ) || ( ((U8*)s)[2] >= 0xB0 ) ) ? 3 : 0 ) \
415 : ( 0x9F == ((U8*)s)[1] ) ? \
416 ( ( ((U8*)s)[2] <= 0x86 ) ? 3 : 0 ) \
421 GCB_Prepend: Grapheme_Cluster_Break=Prepend
425 /*** GENERATED CODE ***/
426 #define is_GCB_Prepend_utf8(s) \
430 GCB_RI: Grapheme_Cluster_Break=RI
434 /*** GENERATED CODE ***/
435 #define is_GCB_RI_utf8(s) \
436 ( ( ( ( ( 0xF0 == ((U8*)s)[0] ) && ( 0x9F == ((U8*)s)[1] ) ) && ( 0x87 == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xA6 ) ) ? 4 : 0 )
439 GCB_SPECIAL_BEGIN: Grapheme_Cluster_Break=special_begins
443 /*** GENERATED CODE ***/
444 #define is_GCB_SPECIAL_BEGIN_utf8(s) \
445 ( ( 0xE1 == ((U8*)s)[0] ) ? \
446 ( ( ( ((U8*)s)[1] & 0xFC ) == 0x84 ) ? \
449 : ( 0xEA == ((U8*)s)[0] ) ? \
450 ( ( 0xA5 == ((U8*)s)[1] ) ? \
451 ( ( 0xA0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBC ) ? 3 : 0 ) \
452 : ( ((U8*)s)[1] >= 0xB0 ) ? \
455 : ( 0xEB == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ? \
457 : ( 0xED == ((U8*)s)[0] ) ? \
458 ( ( ((U8*)s)[1] <= 0x9D ) ? \
460 : ( 0x9E == ((U8*)s)[1] ) ? \
461 ( ( ( ((U8*)s)[2] <= 0xA3 ) || ( ((U8*)s)[2] >= 0xB0 ) ) ? 3 : 0 ) \
462 : ( 0x9F == ((U8*)s)[1] ) ? \
463 ( ( ( ((U8*)s)[2] <= 0x86 ) || ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBB ) ) ? 3 : 0 )\
465 : ( 0xF0 == ((U8*)s)[0] ) ? \
466 ( ( ( ( 0x9F == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xA6 ) ) ? 4 : 0 )\
470 GCB_T: Grapheme_Cluster_Break=T
474 /*** GENERATED CODE ***/
475 #define is_GCB_T_utf8(s) \
476 ( ( 0xE1 == ((U8*)s)[0] ) ? \
477 ( ( 0x86 == ((U8*)s)[1] ) ? \
478 ( ( ((U8*)s)[2] >= 0xA8 ) ? 3 : 0 ) \
479 : ( 0x87 == ((U8*)s)[1] ) ? \
482 : ( 0xED == ((U8*)s)[0] ) ? \
483 ( ( ( 0x9F == ((U8*)s)[1] ) && ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xBB ) ) ? 3 : 0 )\
487 GCB_V: Grapheme_Cluster_Break=V
491 /*** GENERATED CODE ***/
492 #define is_GCB_V_utf8(s) \
493 ( ( 0xE1 == ((U8*)s)[0] ) ? \
494 ( ( 0x85 == ((U8*)s)[1] ) ? \
495 ( ( ((U8*)s)[2] >= 0xA0 ) ? 3 : 0 ) \
496 : ( 0x86 == ((U8*)s)[1] ) ? \
497 ( ( ((U8*)s)[2] <= 0xA7 ) ? 3 : 0 ) \
499 : ( 0xED == ((U8*)s)[0] ) ? \
500 ( ( 0x9E == ((U8*)s)[1] ) ? \
501 ( ( ((U8*)s)[2] >= 0xB0 ) ? 3 : 0 ) \
502 : ( 0x9F == ((U8*)s)[1] ) ? \
503 ( ( ((U8*)s)[2] <= 0x86 ) ? 3 : 0 ) \
508 QUOTEMETA: Meta-characters that \Q should quote
512 /*** GENERATED CODE ***/
513 #define is_QUOTEMETA_high(s) \
514 ( ( 0xCD == ((U8*)s)[0] ) ? \
515 ( ( 0x8F == ((U8*)s)[1] ) ? 2 : 0 ) \
516 : ( 0xE1 == ((U8*)s)[0] ) ? \
517 ( ( 0x85 == ((U8*)s)[1] ) ? \
518 ( ( 0x9F == ((U8*)s)[2] || 0xA0 == ((U8*)s)[2] ) ? 3 : 0 ) \
519 : ( 0x9A == ((U8*)s)[1] ) ? \
520 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
521 : ( 0x9E == ((U8*)s)[1] ) ? \
522 ( ( ( ((U8*)s)[2] & 0xFE ) == 0xB4 ) ? 3 : 0 ) \
523 : ( 0xA0 == ((U8*)s)[1] ) ? \
524 ( ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8E ) ? 3 : 0 ) \
526 : ( 0xE2 == ((U8*)s)[0] ) ? \
527 ( ( 0x80 == ((U8*)s)[1] ) ? \
528 ( ( ((U8*)s)[2] <= 0xBE ) ? 3 : 0 ) \
529 : ( 0x81 == ((U8*)s)[1] ) ? \
530 ( ( ( 0x81 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x93 ) || ( 0x95 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ) ? 3 : 0 )\
531 : ( 0x86 == ((U8*)s)[1] ) ? \
532 ( ( ((U8*)s)[2] >= 0x90 ) ? 3 : 0 ) \
533 : ( 0x87 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x90 ) ? \
535 : ( 0x91 == ((U8*)s)[1] ) ? \
536 ( ( ((U8*)s)[2] <= 0x9F ) ? 3 : 0 ) \
537 : ( 0x94 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x9C ) ? \
539 : ( 0x9D == ((U8*)s)[1] ) ? \
540 ( ( ((U8*)s)[2] <= 0xB5 ) ? 3 : 0 ) \
541 : ( 0x9E == ((U8*)s)[1] ) ? \
542 ( ( ((U8*)s)[2] >= 0x94 ) ? 3 : 0 ) \
543 : ( ( 0x9F <= ((U8*)s)[1] && ((U8*)s)[1] <= 0xAF ) || ( ((U8*)s)[1] & 0xFE ) == 0xB8 ) ?\
546 : ( 0xE3 == ((U8*)s)[0] ) ? \
547 ( ( 0x80 == ((U8*)s)[1] ) ? \
548 ( ( ( ((U8*)s)[2] <= 0x83 ) || ( 0x88 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xA0 ) || 0xB0 == ((U8*)s)[2] ) ? 3 : 0 )\
549 : ( 0x85 == ((U8*)s)[1] ) ? \
550 ( ( 0xA4 == ((U8*)s)[2] ) ? 3 : 0 ) \
552 : ( 0xEF == ((U8*)s)[0] ) ? \
553 ( ( 0xB4 == ((U8*)s)[1] ) ? \
554 ( ( ((U8*)s)[2] >= 0xBE ) ? 3 : 0 ) \
555 : ( 0xB8 == ((U8*)s)[1] ) ? \
556 ( ( ((U8*)s)[2] <= 0x8F ) ? 3 : 0 ) \
557 : ( 0xB9 == ((U8*)s)[1] ) ? \
558 ( ( 0x85 == ((U8*)s)[2] || 0x86 == ((U8*)s)[2] ) ? 3 : 0 ) \
559 : ( 0xBB == ((U8*)s)[1] ) ? \
560 ( ( 0xBF == ((U8*)s)[2] ) ? 3 : 0 ) \
561 : ( 0xBE == ((U8*)s)[1] ) ? \
562 ( ( 0xA0 == ((U8*)s)[2] ) ? 3 : 0 ) \
563 : ( 0xBF == ((U8*)s)[1] ) ? \
564 ( ( 0xB0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xB8 ) ? 3 : 0 ) \
566 : ( 0xF0 == ((U8*)s)[0] ) ? \
567 ( ( ( ( 0x9D == ((U8*)s)[1] ) && ( 0x85 == ((U8*)s)[2] ) ) && ( 0xB3 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0xBA ) ) ? 4 : 0 )\
568 : ( 0xF3 == ((U8*)s)[0] ) ? \
569 ( ( 0xA0 == ((U8*)s)[1] ) ? \
575 FOR_TESTING_DEMO: This is used to test if we generate incorrect code (currently is bad)
578 "\x{3B9}\x{308}\x{301}"
580 /*** GENERATED CODE ***/
581 #define is_FOR_TESTING_DEMO_utf8_safe(s,e) \
582 ( ( ((e)-(s) > 5) && ( 0xCE == ((U8*)s)[0] ) ) ? ( ( 0xB7 == ((U8*)s)[1] ) ?\
583 ( ( 0xCD == ((U8*)s)[2] ) ? \
584 ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 ) \
585 : ( 0xB9 == ((U8*)s)[1] ) ? \
586 ( ( ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x88 == ((U8*)s)[3] ) ) && ( 0xCC == ((U8*)s)[4] ) ) && ( 0x81 == ((U8*)s)[5] ) ) ? 6 : 0 )\
590 ( ( ( ( ( 0xCE == ((U8*)s)[0] ) && ( 0xB7 == ((U8*)s)[1] ) ) && ( 0xCD == ((U8*)s)[2] ) ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\
594 #endif /* H_REGCHARCLASS */