This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Note in comment that many \N{...} tests won't work here
[perl5.git] / regcharclass.h
CommitLineData
58fbde93
RGS
1/* -*- buffer-read-only: t -*-
2 *
3 * regcharclass.h
4 *
5 * Copyright (C) 2007, 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 Porting/regcharclass.pl.
dda856b2 12 *
58fbde93 13 * Any changes made here will be lost!
dda856b2 14 *
58fbde93 15 */
12b72891
RGS
16
17/*
18 LNBREAK: Line Break: \R
19
58fbde93 20 "\x0D\x0A" # CRLF - Network (Windows) line ending
12b72891
RGS
21 0x0A # LF | LINE FEED
22 0x0B # VT | VERTICAL TAB
23 0x0C # FF | FORM FEED
24 0x0D # CR | CARRIAGE RETURN
25 0x85 # NEL | NEXT LINE
26 0x2028 # LINE SEPARATOR
27 0x2029 # PARAGRAPH SEPARATOR
28*/
29/*** GENERATED CODE ***/
30#define is_LNBREAK(s,is_utf8) \
e64b1bd1
YO
31( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
32: ( 0x0D == ((U8*)s)[0] ) ? \
33 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
34: ( is_utf8 ) ? \
35 ( ( 0xC2 == ((U8*)s)[0] ) ? \
36 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
37 : ( 0xE2 == ((U8*)s)[0] ) ? \
38 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
39 : 0 ) \
40: ( 0x85 == ((U8*)s)[0] ) )
e1d1eefb 41
12b72891
RGS
42/*** GENERATED CODE ***/
43#define is_LNBREAK_safe(s,e,is_utf8) \
e64b1bd1
YO
44( ((e)-(s) > 2) ? \
45 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
46 : ( 0x0D == ((U8*)s)[0] ) ? \
47 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
48 : ( is_utf8 ) ? \
49 ( ( 0xC2 == ((U8*)s)[0] ) ? \
50 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
51 : ( 0xE2 == ((U8*)s)[0] ) ? \
52 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
53 : 0 ) \
54 : ( 0x85 == ((U8*)s)[0] ) ) \
55: ((e)-(s) > 1) ? \
56 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
57 : ( 0x0D == ((U8*)s)[0] ) ? \
58 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
59 : ( is_utf8 ) ? \
60 ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
61 : ( 0x85 == ((U8*)s)[0] ) ) \
62: ((e)-(s) > 0) ? \
63 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
64 : ( !( is_utf8 ) ) ? \
65 ( 0x85 == ((U8*)s)[0] ) \
66 : 0 ) \
67: 0 )
e1d1eefb 68
12b72891
RGS
69/*** GENERATED CODE ***/
70#define is_LNBREAK_utf8(s) \
e64b1bd1
YO
71( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
72: ( 0x0D == ((U8*)s)[0] ) ? \
73 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
74: ( 0xC2 == ((U8*)s)[0] ) ? \
75 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
76: ( 0xE2 == ((U8*)s)[0] ) ? \
77 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
78: 0 )
e1d1eefb 79
12b72891
RGS
80/*** GENERATED CODE ***/
81#define is_LNBREAK_utf8_safe(s,e) \
e64b1bd1
YO
82( ((e)-(s) > 2) ? \
83 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
84 : ( 0x0D == ((U8*)s)[0] ) ? \
85 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
86 : ( 0xC2 == ((U8*)s)[0] ) ? \
87 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
88 : ( 0xE2 == ((U8*)s)[0] ) ? \
89 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
90 : 0 ) \
91: ((e)-(s) > 1) ? \
92 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
93 : ( 0x0D == ((U8*)s)[0] ) ? \
94 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
95 : ( 0xC2 == ((U8*)s)[0] ) ? \
96 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
97 : 0 ) \
98: ((e)-(s) > 0) ? \
99 ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) \
100: 0 )
e1d1eefb 101
12b72891
RGS
102/*** GENERATED CODE ***/
103#define is_LNBREAK_latin1(s) \
e64b1bd1
YO
104( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
105: ( 0x0D == ((U8*)s)[0] ) ? \
106 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
107: ( 0x85 == ((U8*)s)[0] ) )
e1d1eefb 108
12b72891
RGS
109/*** GENERATED CODE ***/
110#define is_LNBREAK_latin1_safe(s,e) \
e64b1bd1
YO
111( ((e)-(s) > 1) ? \
112 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
113 : ( 0x0D == ((U8*)s)[0] ) ? \
114 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
115 : ( 0x85 == ((U8*)s)[0] ) ) \
116: ((e)-(s) > 0) ? \
117 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
118: 0 )
12b72891
RGS
119
120/*
121 HORIZWS: Horizontal Whitespace: \h \H
122
123 0x09 # HT
124 0x20 # SPACE
125 0xa0 # NBSP
126 0x1680 # OGHAM SPACE MARK
127 0x180e # MONGOLIAN VOWEL SEPARATOR
128 0x2000 # EN QUAD
129 0x2001 # EM QUAD
130 0x2002 # EN SPACE
131 0x2003 # EM SPACE
132 0x2004 # THREE-PER-EM SPACE
133 0x2005 # FOUR-PER-EM SPACE
134 0x2006 # SIX-PER-EM SPACE
135 0x2007 # FIGURE SPACE
136 0x2008 # PUNCTUATION SPACE
137 0x2009 # THIN SPACE
138 0x200A # HAIR SPACE
139 0x202f # NARROW NO-BREAK SPACE
140 0x205f # MEDIUM MATHEMATICAL SPACE
141 0x3000 # IDEOGRAPHIC SPACE
142*/
143/*** GENERATED CODE ***/
144#define is_HORIZWS(s,is_utf8) \
e64b1bd1
YO
145( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
146: ( is_utf8 ) ? \
147 ( ( 0xC2 == ((U8*)s)[0] ) ? \
148 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
149 : ( 0xE1 == ((U8*)s)[0] ) ? \
150 ( ( 0x9A == ((U8*)s)[1] ) ? \
151 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
152 : ( 0xA0 == ((U8*)s)[1] ) ? \
153 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
154 : 0 ) \
155 : ( 0xE2 == ((U8*)s)[0] ) ? \
156 ( ( 0x80 == ((U8*)s)[1] ) ? \
157 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
158 : ( 0x81 == ((U8*)s)[1] ) ? \
159 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
160 : 0 ) \
161 : ( 0xE3 == ((U8*)s)[0] ) ? \
162 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
163 : 0 ) \
164: ( 0xA0 == ((U8*)s)[0] ) )
e1d1eefb 165
12b72891
RGS
166/*** GENERATED CODE ***/
167#define is_HORIZWS_safe(s,e,is_utf8) \
e64b1bd1
YO
168( ((e)-(s) > 2) ? \
169 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
170 : ( is_utf8 ) ? \
171 ( ( 0xC2 == ((U8*)s)[0] ) ? \
172 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
173 : ( 0xE1 == ((U8*)s)[0] ) ? \
174 ( ( 0x9A == ((U8*)s)[1] ) ? \
175 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
176 : ( 0xA0 == ((U8*)s)[1] ) ? \
177 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
178 : 0 ) \
179 : ( 0xE2 == ((U8*)s)[0] ) ? \
180 ( ( 0x80 == ((U8*)s)[1] ) ? \
181 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
182 : ( 0x81 == ((U8*)s)[1] ) ? \
183 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
184 : 0 ) \
185 : ( 0xE3 == ((U8*)s)[0] ) ? \
186 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
187 : 0 ) \
188 : ( 0xA0 == ((U8*)s)[0] ) ) \
189: ((e)-(s) > 1) ? \
190 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
191 : ( is_utf8 ) ? \
192 ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
193 : ( 0xA0 == ((U8*)s)[0] ) ) \
194: ((e)-(s) > 0) ? \
195 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
196 : ( !( is_utf8 ) ) ? \
197 ( 0xA0 == ((U8*)s)[0] ) \
198 : 0 ) \
199: 0 )
e1d1eefb 200
12b72891
RGS
201/*** GENERATED CODE ***/
202#define is_HORIZWS_utf8(s) \
e64b1bd1
YO
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 ) \
211 : 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 ) \
217 : 0 ) \
218: ( 0xE3 == ((U8*)s)[0] ) ? \
219 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
220: 0 )
e1d1eefb 221
12b72891
RGS
222/*** GENERATED CODE ***/
223#define is_HORIZWS_utf8_safe(s,e) \
e64b1bd1
YO
224( ((e)-(s) > 2) ? \
225 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
226 : ( 0xC2 == ((U8*)s)[0] ) ? \
227 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
228 : ( 0xE1 == ((U8*)s)[0] ) ? \
229 ( ( 0x9A == ((U8*)s)[1] ) ? \
230 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
231 : ( 0xA0 == ((U8*)s)[1] ) ? \
232 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
233 : 0 ) \
234 : ( 0xE2 == ((U8*)s)[0] ) ? \
235 ( ( 0x80 == ((U8*)s)[1] ) ? \
236 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
237 : ( 0x81 == ((U8*)s)[1] ) ? \
238 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
239 : 0 ) \
240 : ( 0xE3 == ((U8*)s)[0] ) ? \
241 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
242 : 0 ) \
243: ((e)-(s) > 1) ? \
244 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
245 : ( 0xC2 == ((U8*)s)[0] ) ? \
246 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
247 : 0 ) \
248: ((e)-(s) > 0) ? \
249 ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) \
250: 0 )
e1d1eefb 251
12b72891
RGS
252/*** GENERATED CODE ***/
253#define is_HORIZWS_latin1(s) \
e64b1bd1 254( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] )
e1d1eefb 255
12b72891
RGS
256/*** GENERATED CODE ***/
257#define is_HORIZWS_latin1_safe(s,e) \
e64b1bd1
YO
258( ((e)-(s) > 0) ? \
259 ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] ) \
260: 0 )
e1d1eefb 261
12b72891
RGS
262/*** GENERATED CODE ***/
263#define is_HORIZWS_cp(cp) \
e64b1bd1
YO
264( 0x09 == cp || ( 0x09 < cp && \
265( 0x20 == cp || ( 0x20 < cp && \
266( 0xA0 == cp || ( 0xA0 < cp && \
267( 0x1680 == cp || ( 0x1680 < cp && \
268( 0x180E == cp || ( 0x180E < cp && \
269( ( 0x2000 <= cp && cp <= 0x200A ) || ( 0x200A < cp && \
270( 0x202F == cp || ( 0x202F < cp && \
271( 0x205F == cp || ( 0x205F < cp && \
2720x3000 == cp ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
e1d1eefb 273
12b72891
RGS
274/*
275 VERTWS: Vertical Whitespace: \v \V
e1d1eefb 276
12b72891
RGS
277 0x0A # LF
278 0x0B # VT
58fbde93 279 0x0C # FF
12b72891
RGS
280 0x0D # CR
281 0x85 # NEL
282 0x2028 # LINE SEPARATOR
283 0x2029 # PARAGRAPH SEPARATOR
284*/
285/*** GENERATED CODE ***/
286#define is_VERTWS(s,is_utf8) \
e64b1bd1
YO
287( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
288: ( is_utf8 ) ? \
289 ( ( 0xC2 == ((U8*)s)[0] ) ? \
290 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
291 : ( 0xE2 == ((U8*)s)[0] ) ? \
292 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
293 : 0 ) \
294: ( 0x85 == ((U8*)s)[0] ) )
e1d1eefb 295
12b72891
RGS
296/*** GENERATED CODE ***/
297#define is_VERTWS_safe(s,e,is_utf8) \
e64b1bd1
YO
298( ((e)-(s) > 2) ? \
299 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
300 : ( is_utf8 ) ? \
301 ( ( 0xC2 == ((U8*)s)[0] ) ? \
302 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
303 : ( 0xE2 == ((U8*)s)[0] ) ? \
304 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
305 : 0 ) \
306 : ( 0x85 == ((U8*)s)[0] ) ) \
307: ((e)-(s) > 1) ? \
308 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
309 : ( is_utf8 ) ? \
310 ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
311 : ( 0x85 == ((U8*)s)[0] ) ) \
312: ((e)-(s) > 0) ? \
313 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
314 : ( !( is_utf8 ) ) ? \
315 ( 0x85 == ((U8*)s)[0] ) \
316 : 0 ) \
317: 0 )
e1d1eefb 318
12b72891
RGS
319/*** GENERATED CODE ***/
320#define is_VERTWS_utf8(s) \
e64b1bd1
YO
321( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
322: ( 0xC2 == ((U8*)s)[0] ) ? \
323 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
324: ( 0xE2 == ((U8*)s)[0] ) ? \
325 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
326: 0 )
e1d1eefb 327
12b72891
RGS
328/*** GENERATED CODE ***/
329#define is_VERTWS_utf8_safe(s,e) \
e64b1bd1
YO
330( ((e)-(s) > 2) ? \
331 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
332 : ( 0xC2 == ((U8*)s)[0] ) ? \
333 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
334 : ( 0xE2 == ((U8*)s)[0] ) ? \
335 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
336 : 0 ) \
337: ((e)-(s) > 1) ? \
338 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
339 : ( 0xC2 == ((U8*)s)[0] ) ? \
340 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
341 : 0 ) \
342: ((e)-(s) > 0) ? \
343 ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) \
344: 0 )
e1d1eefb 345
12b72891
RGS
346/*** GENERATED CODE ***/
347#define is_VERTWS_latin1(s) \
e64b1bd1 348( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )
e1d1eefb 349
12b72891
RGS
350/*** GENERATED CODE ***/
351#define is_VERTWS_latin1_safe(s,e) \
e64b1bd1
YO
352( ((e)-(s) > 0) ? \
353 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
354: 0 )
e1d1eefb 355
12b72891
RGS
356/*** GENERATED CODE ***/
357#define is_VERTWS_cp(cp) \
e64b1bd1
YO
358( ( 0x0A <= cp && cp <= 0x0D ) || ( 0x0D < cp && \
359( 0x85 == cp || ( 0x85 < cp && \
360( 0x2028 == cp || ( 0x2028 < cp && \
3610x2029 == cp ) ) ) ) ) )
e1d1eefb 362
32e6a07c
YO
363/*
364 TRICKYFOLD: Problematic fold case letters.
365
e64b1bd1 366 0x00DF # LATIN1 SMALL LETTER SHARP S
32e6a07c
YO
367 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
368 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
369*/
370/*** GENERATED CODE ***/
371#define is_TRICKYFOLD(s,is_utf8) \
e64b1bd1
YO
372( ( is_utf8 ) ? \
373 ( ( 0xC3 == ((U8*)s)[0] ) ? \
374 ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \
375 : ( 0xCE == ((U8*)s)[0] ) ? \
376 ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \
377 : 0 ) \
378: ( 0xDF == ((U8*)s)[0] ) )
32e6a07c
YO
379
380/*** GENERATED CODE ***/
381#define is_TRICKYFOLD_safe(s,e,is_utf8) \
e64b1bd1
YO
382( ((e)-(s) > 1) ? \
383 ( ( is_utf8 ) ? \
384 ( ( 0xC3 == ((U8*)s)[0] ) ? \
385 ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \
386 : ( 0xCE == ((U8*)s)[0] ) ? \
387 ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \
388 : 0 ) \
389 : ( 0xDF == ((U8*)s)[0] ) ) \
390: ((e)-(s) > 0) ? \
391 ( ( !( is_utf8 ) ) ? \
392 ( 0xDF == ((U8*)s)[0] ) \
393 : 0 ) \
394: 0 )
32e6a07c
YO
395
396/*** GENERATED CODE ***/
e64b1bd1
YO
397#define is_TRICKYFOLD_cp(cp) \
398( 0xDF == cp || ( 0xDF < cp && \
399( 0x390 == cp || ( 0x390 < cp && \
4000x3B0 == cp ) ) ) )
32e6a07c
YO
401
402/*** GENERATED CODE ***/
e64b1bd1
YO
403#define what_TRICKYFOLD(s,is_utf8) \
404( ( is_utf8 ) ? \
405 ( ( 0xC3 == ((U8*)s)[0] ) ? \
406 ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \
407 : ( 0xCE == ((U8*)s)[0] ) ? \
408 ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \
409 : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \
410 : 0 ) \
411: ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 )
32e6a07c
YO
412
413/*** GENERATED CODE ***/
e64b1bd1
YO
414#define what_TRICKYFOLD_safe(s,e,is_utf8) \
415( ((e)-(s) > 1) ? \
416 ( ( is_utf8 ) ? \
417 ( ( 0xC3 == ((U8*)s)[0] ) ? \
418 ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \
419 : ( 0xCE == ((U8*)s)[0] ) ? \
420 ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \
421 : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \
422 : 0 ) \
423 : ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 ) \
424: ((e)-(s) > 0) ? \
425 ( ( ( !( is_utf8 ) ) && ( 0xDF == ((U8*)s)[0] ) ) ? 0xDF : 0 ) \
426: 0 )
32e6a07c
YO
427
428/*** GENERATED CODE ***/
e64b1bd1
YO
429#define what_len_TRICKYFOLD(s,is_utf8,len) \
430( ( is_utf8 ) ? \
431 ( ( 0xC3 == ((U8*)s)[0] ) ? \
432 ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \
433 : ( 0xCE == ((U8*)s)[0] ) ? \
434 ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \
435 : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \
436 : 0 ) \
437: ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 )
32e6a07c
YO
438
439/*** GENERATED CODE ***/
e64b1bd1
YO
440#define what_len_TRICKYFOLD_safe(s,e,is_utf8,len) \
441( ((e)-(s) > 1) ? \
442 ( ( is_utf8 ) ? \
443 ( ( 0xC3 == ((U8*)s)[0] ) ? \
444 ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \
445 : ( 0xCE == ((U8*)s)[0] ) ? \
446 ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \
447 : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \
448 : 0 ) \
449 : ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 ) \
450: ((e)-(s) > 0) ? \
451 ( ( ( !( is_utf8 ) ) && ( 0xDF == ((U8*)s)[0] ) ) ? len=1, 0xDF : 0 ) \
452: 0 )
32e6a07c 453
58fbde93 454/* ex: set ro: */