This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
EU::Typemaps: Helper module for easy typemap inclusion in XS
[perl5.git] / regcharclass.h
CommitLineData
8770da0e 1/* -*- buffer-read-only: t -*-
58fbde93
RGS
2 *
3 * regcharclass.h
4 *
8770da0e 5 * Copyright (C) 2007 by Larry Wall and others
58fbde93
RGS
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 !!!!!!!
98e310af 11 * This file is built by regen/regcharclass.pl.
58fbde93
RGS
12 * Any changes made here will be lost!
13 */
12b72891
RGS
14
15/*
16 LNBREAK: Line Break: \R
17
58fbde93 18 "\x0D\x0A" # CRLF - Network (Windows) line ending
12b72891
RGS
19 0x0A # LF | LINE FEED
20 0x0B # VT | VERTICAL TAB
21 0x0C # FF | FORM FEED
22 0x0D # CR | CARRIAGE RETURN
23 0x85 # NEL | NEXT LINE
24 0x2028 # LINE SEPARATOR
25 0x2029 # PARAGRAPH SEPARATOR
26*/
27/*** GENERATED CODE ***/
28#define is_LNBREAK(s,is_utf8) \
e64b1bd1
YO
29( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
30: ( 0x0D == ((U8*)s)[0] ) ? \
31 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
32: ( is_utf8 ) ? \
33 ( ( 0xC2 == ((U8*)s)[0] ) ? \
34 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
35 : ( 0xE2 == ((U8*)s)[0] ) ? \
36 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
37 : 0 ) \
38: ( 0x85 == ((U8*)s)[0] ) )
e1d1eefb 39
12b72891
RGS
40/*** GENERATED CODE ***/
41#define is_LNBREAK_safe(s,e,is_utf8) \
e64b1bd1
YO
42( ((e)-(s) > 2) ? \
43 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
44 : ( 0x0D == ((U8*)s)[0] ) ? \
45 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
46 : ( is_utf8 ) ? \
47 ( ( 0xC2 == ((U8*)s)[0] ) ? \
48 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
49 : ( 0xE2 == ((U8*)s)[0] ) ? \
50 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
51 : 0 ) \
52 : ( 0x85 == ((U8*)s)[0] ) ) \
53: ((e)-(s) > 1) ? \
54 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
55 : ( 0x0D == ((U8*)s)[0] ) ? \
56 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
57 : ( is_utf8 ) ? \
58 ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
59 : ( 0x85 == ((U8*)s)[0] ) ) \
60: ((e)-(s) > 0) ? \
61 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
62 : ( !( is_utf8 ) ) ? \
63 ( 0x85 == ((U8*)s)[0] ) \
64 : 0 ) \
65: 0 )
e1d1eefb 66
12b72891
RGS
67/*** GENERATED CODE ***/
68#define is_LNBREAK_utf8(s) \
e64b1bd1
YO
69( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
70: ( 0x0D == ((U8*)s)[0] ) ? \
71 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
72: ( 0xC2 == ((U8*)s)[0] ) ? \
73 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
74: ( 0xE2 == ((U8*)s)[0] ) ? \
75 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
76: 0 )
e1d1eefb 77
12b72891
RGS
78/*** GENERATED CODE ***/
79#define is_LNBREAK_utf8_safe(s,e) \
e64b1bd1
YO
80( ((e)-(s) > 2) ? \
81 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
82 : ( 0x0D == ((U8*)s)[0] ) ? \
83 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
84 : ( 0xC2 == ((U8*)s)[0] ) ? \
85 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
86 : ( 0xE2 == ((U8*)s)[0] ) ? \
87 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
88 : 0 ) \
89: ((e)-(s) > 1) ? \
90 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
91 : ( 0x0D == ((U8*)s)[0] ) ? \
92 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
93 : ( 0xC2 == ((U8*)s)[0] ) ? \
94 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
95 : 0 ) \
96: ((e)-(s) > 0) ? \
97 ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) \
98: 0 )
e1d1eefb 99
12b72891
RGS
100/*** GENERATED CODE ***/
101#define is_LNBREAK_latin1(s) \
e64b1bd1
YO
102( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
103: ( 0x0D == ((U8*)s)[0] ) ? \
104 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
105: ( 0x85 == ((U8*)s)[0] ) )
e1d1eefb 106
12b72891
RGS
107/*** GENERATED CODE ***/
108#define is_LNBREAK_latin1_safe(s,e) \
e64b1bd1
YO
109( ((e)-(s) > 1) ? \
110 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \
111 : ( 0x0D == ((U8*)s)[0] ) ? \
112 ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \
113 : ( 0x85 == ((U8*)s)[0] ) ) \
114: ((e)-(s) > 0) ? \
115 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
116: 0 )
12b72891
RGS
117
118/*
119 HORIZWS: Horizontal Whitespace: \h \H
120
121 0x09 # HT
122 0x20 # SPACE
123 0xa0 # NBSP
124 0x1680 # OGHAM SPACE MARK
125 0x180e # MONGOLIAN VOWEL SEPARATOR
126 0x2000 # EN QUAD
127 0x2001 # EM QUAD
128 0x2002 # EN SPACE
129 0x2003 # EM SPACE
130 0x2004 # THREE-PER-EM SPACE
131 0x2005 # FOUR-PER-EM SPACE
132 0x2006 # SIX-PER-EM SPACE
133 0x2007 # FIGURE SPACE
134 0x2008 # PUNCTUATION SPACE
135 0x2009 # THIN SPACE
136 0x200A # HAIR SPACE
137 0x202f # NARROW NO-BREAK SPACE
138 0x205f # MEDIUM MATHEMATICAL SPACE
139 0x3000 # IDEOGRAPHIC SPACE
140*/
141/*** GENERATED CODE ***/
142#define is_HORIZWS(s,is_utf8) \
e64b1bd1
YO
143( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
144: ( is_utf8 ) ? \
145 ( ( 0xC2 == ((U8*)s)[0] ) ? \
146 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
147 : ( 0xE1 == ((U8*)s)[0] ) ? \
148 ( ( 0x9A == ((U8*)s)[1] ) ? \
149 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
150 : ( 0xA0 == ((U8*)s)[1] ) ? \
151 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
152 : 0 ) \
153 : ( 0xE2 == ((U8*)s)[0] ) ? \
154 ( ( 0x80 == ((U8*)s)[1] ) ? \
155 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
156 : ( 0x81 == ((U8*)s)[1] ) ? \
157 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
158 : 0 ) \
159 : ( 0xE3 == ((U8*)s)[0] ) ? \
160 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
161 : 0 ) \
162: ( 0xA0 == ((U8*)s)[0] ) )
e1d1eefb 163
12b72891
RGS
164/*** GENERATED CODE ***/
165#define is_HORIZWS_safe(s,e,is_utf8) \
e64b1bd1
YO
166( ((e)-(s) > 2) ? \
167 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
168 : ( is_utf8 ) ? \
169 ( ( 0xC2 == ((U8*)s)[0] ) ? \
170 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
171 : ( 0xE1 == ((U8*)s)[0] ) ? \
172 ( ( 0x9A == ((U8*)s)[1] ) ? \
173 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
174 : ( 0xA0 == ((U8*)s)[1] ) ? \
175 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
176 : 0 ) \
177 : ( 0xE2 == ((U8*)s)[0] ) ? \
178 ( ( 0x80 == ((U8*)s)[1] ) ? \
179 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
180 : ( 0x81 == ((U8*)s)[1] ) ? \
181 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
182 : 0 ) \
183 : ( 0xE3 == ((U8*)s)[0] ) ? \
184 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 )\
185 : 0 ) \
186 : ( 0xA0 == ((U8*)s)[0] ) ) \
187: ((e)-(s) > 1) ? \
188 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
189 : ( is_utf8 ) ? \
190 ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
191 : ( 0xA0 == ((U8*)s)[0] ) ) \
192: ((e)-(s) > 0) ? \
193 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
194 : ( !( is_utf8 ) ) ? \
195 ( 0xA0 == ((U8*)s)[0] ) \
196 : 0 ) \
197: 0 )
e1d1eefb 198
12b72891
RGS
199/*** GENERATED CODE ***/
200#define is_HORIZWS_utf8(s) \
e64b1bd1
YO
201( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
202: ( 0xC2 == ((U8*)s)[0] ) ? \
203 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
204: ( 0xE1 == ((U8*)s)[0] ) ? \
205 ( ( 0x9A == ((U8*)s)[1] ) ? \
206 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
207 : ( 0xA0 == ((U8*)s)[1] ) ? \
208 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
209 : 0 ) \
210: ( 0xE2 == ((U8*)s)[0] ) ? \
211 ( ( 0x80 == ((U8*)s)[1] ) ? \
212 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
213 : ( 0x81 == ((U8*)s)[1] ) ? \
214 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
215 : 0 ) \
216: ( 0xE3 == ((U8*)s)[0] ) ? \
217 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
218: 0 )
e1d1eefb 219
12b72891
RGS
220/*** GENERATED CODE ***/
221#define is_HORIZWS_utf8_safe(s,e) \
e64b1bd1
YO
222( ((e)-(s) > 2) ? \
223 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
224 : ( 0xC2 == ((U8*)s)[0] ) ? \
225 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
226 : ( 0xE1 == ((U8*)s)[0] ) ? \
227 ( ( 0x9A == ((U8*)s)[1] ) ? \
228 ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \
229 : ( 0xA0 == ((U8*)s)[1] ) ? \
230 ( ( 0x8E == ((U8*)s)[2] ) ? 3 : 0 ) \
231 : 0 ) \
232 : ( 0xE2 == ((U8*)s)[0] ) ? \
233 ( ( 0x80 == ((U8*)s)[1] ) ? \
234 ( ( ( 0x80 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\
235 : ( 0x81 == ((U8*)s)[1] ) ? \
236 ( ( 0x9F == ((U8*)s)[2] ) ? 3 : 0 ) \
237 : 0 ) \
238 : ( 0xE3 == ((U8*)s)[0] ) ? \
239 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \
240 : 0 ) \
241: ((e)-(s) > 1) ? \
242 ( ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) ? 1 \
243 : ( 0xC2 == ((U8*)s)[0] ) ? \
244 ( ( 0xA0 == ((U8*)s)[1] ) ? 2 : 0 ) \
245 : 0 ) \
246: ((e)-(s) > 0) ? \
247 ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] ) \
248: 0 )
e1d1eefb 249
12b72891
RGS
250/*** GENERATED CODE ***/
251#define is_HORIZWS_latin1(s) \
e64b1bd1 252( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] )
e1d1eefb 253
12b72891
RGS
254/*** GENERATED CODE ***/
255#define is_HORIZWS_latin1_safe(s,e) \
e64b1bd1
YO
256( ((e)-(s) > 0) ? \
257 ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] ) \
258: 0 )
e1d1eefb 259
12b72891
RGS
260/*** GENERATED CODE ***/
261#define is_HORIZWS_cp(cp) \
e64b1bd1
YO
262( 0x09 == cp || ( 0x09 < cp && \
263( 0x20 == cp || ( 0x20 < cp && \
264( 0xA0 == cp || ( 0xA0 < cp && \
265( 0x1680 == cp || ( 0x1680 < cp && \
266( 0x180E == cp || ( 0x180E < cp && \
267( ( 0x2000 <= cp && cp <= 0x200A ) || ( 0x200A < cp && \
268( 0x202F == cp || ( 0x202F < cp && \
269( 0x205F == cp || ( 0x205F < cp && \
2700x3000 == cp ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
e1d1eefb 271
12b72891
RGS
272/*
273 VERTWS: Vertical Whitespace: \v \V
e1d1eefb 274
12b72891
RGS
275 0x0A # LF
276 0x0B # VT
58fbde93 277 0x0C # FF
12b72891
RGS
278 0x0D # CR
279 0x85 # NEL
280 0x2028 # LINE SEPARATOR
281 0x2029 # PARAGRAPH SEPARATOR
282*/
283/*** GENERATED CODE ***/
284#define is_VERTWS(s,is_utf8) \
e64b1bd1
YO
285( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
286: ( is_utf8 ) ? \
287 ( ( 0xC2 == ((U8*)s)[0] ) ? \
288 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
289 : ( 0xE2 == ((U8*)s)[0] ) ? \
290 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
291 : 0 ) \
292: ( 0x85 == ((U8*)s)[0] ) )
e1d1eefb 293
12b72891
RGS
294/*** GENERATED CODE ***/
295#define is_VERTWS_safe(s,e,is_utf8) \
e64b1bd1
YO
296( ((e)-(s) > 2) ? \
297 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
298 : ( is_utf8 ) ? \
299 ( ( 0xC2 == ((U8*)s)[0] ) ? \
300 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
301 : ( 0xE2 == ((U8*)s)[0] ) ? \
302 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
303 : 0 ) \
304 : ( 0x85 == ((U8*)s)[0] ) ) \
305: ((e)-(s) > 1) ? \
306 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
307 : ( is_utf8 ) ? \
308 ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \
309 : ( 0x85 == ((U8*)s)[0] ) ) \
310: ((e)-(s) > 0) ? \
311 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
312 : ( !( is_utf8 ) ) ? \
313 ( 0x85 == ((U8*)s)[0] ) \
314 : 0 ) \
315: 0 )
e1d1eefb 316
12b72891
RGS
317/*** GENERATED CODE ***/
318#define is_VERTWS_utf8(s) \
e64b1bd1
YO
319( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
320: ( 0xC2 == ((U8*)s)[0] ) ? \
321 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
322: ( 0xE2 == ((U8*)s)[0] ) ? \
323 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
324: 0 )
e1d1eefb 325
12b72891
RGS
326/*** GENERATED CODE ***/
327#define is_VERTWS_utf8_safe(s,e) \
e64b1bd1
YO
328( ((e)-(s) > 2) ? \
329 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
330 : ( 0xC2 == ((U8*)s)[0] ) ? \
331 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
332 : ( 0xE2 == ((U8*)s)[0] ) ? \
333 ( ( ( 0x80 == ((U8*)s)[1] ) && ( 0xA8 == ((U8*)s)[2] || 0xA9 == ((U8*)s)[2] ) ) ? 3 : 0 )\
334 : 0 ) \
335: ((e)-(s) > 1) ? \
336 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \
337 : ( 0xC2 == ((U8*)s)[0] ) ? \
338 ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \
339 : 0 ) \
340: ((e)-(s) > 0) ? \
341 ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) \
342: 0 )
e1d1eefb 343
12b72891
RGS
344/*** GENERATED CODE ***/
345#define is_VERTWS_latin1(s) \
e64b1bd1 346( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )
e1d1eefb 347
12b72891
RGS
348/*** GENERATED CODE ***/
349#define is_VERTWS_latin1_safe(s,e) \
e64b1bd1
YO
350( ((e)-(s) > 0) ? \
351 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
352: 0 )
e1d1eefb 353
12b72891
RGS
354/*** GENERATED CODE ***/
355#define is_VERTWS_cp(cp) \
e64b1bd1
YO
356( ( 0x0A <= cp && cp <= 0x0D ) || ( 0x0D < cp && \
357( 0x85 == cp || ( 0x85 < cp && \
358( 0x2028 == cp || ( 0x2028 < cp && \
3590x2029 == cp ) ) ) ) ) )
e1d1eefb 360
32e6a07c 361/*
dddecdc7 362 TRICKYFOLD: Problematic fold case letters. When adding to this list, also should add them to regcomp.c and fold_grind.t
32e6a07c 363
90826b5c 364 0x00DF # LATIN SMALL LETTER SHARP S
32e6a07c
YO
365 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
366 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
90826b5c
KW
367 0x1E9E # LATIN CAPITAL LETTER SHARP S, because maps to same as 00DF
368 0x1FD3 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA; maps same as 0390
369 0x1FE3 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA; maps same as 03B0
32e6a07c
YO
370*/
371/*** GENERATED CODE ***/
372#define is_TRICKYFOLD(s,is_utf8) \
e64b1bd1
YO
373( ( is_utf8 ) ? \
374 ( ( 0xC3 == ((U8*)s)[0] ) ? \
375 ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \
376 : ( 0xCE == ((U8*)s)[0] ) ? \
377 ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \
90826b5c
KW
378 : ( 0xE1 == ((U8*)s)[0] ) ? \
379 ( ( 0xBA == ((U8*)s)[1] ) ? \
380 ( ( 0x9E == ((U8*)s)[2] ) ? 3 : 0 ) \
381 : ( 0xBF == ((U8*)s)[1] ) ? \
382 ( ( 0x93 == ((U8*)s)[2] || 0xA3 == ((U8*)s)[2] ) ? 3 : 0 ) \
383 : 0 ) \
e64b1bd1
YO
384 : 0 ) \
385: ( 0xDF == ((U8*)s)[0] ) )
32e6a07c
YO
386
387/*** GENERATED CODE ***/
388#define is_TRICKYFOLD_safe(s,e,is_utf8) \
90826b5c
KW
389( ((e)-(s) > 2) ? \
390 ( ( is_utf8 ) ? \
391 ( ( 0xC3 == ((U8*)s)[0] ) ? \
392 ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \
393 : ( 0xCE == ((U8*)s)[0] ) ? \
394 ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \
395 : ( 0xE1 == ((U8*)s)[0] ) ? \
396 ( ( 0xBA == ((U8*)s)[1] ) ? \
397 ( ( 0x9E == ((U8*)s)[2] ) ? 3 : 0 ) \
398 : ( 0xBF == ((U8*)s)[1] ) ? \
399 ( ( 0x93 == ((U8*)s)[2] || 0xA3 == ((U8*)s)[2] ) ? 3 : 0 ) \
400 : 0 ) \
401 : 0 ) \
402 : ( 0xDF == ((U8*)s)[0] ) ) \
403: ((e)-(s) > 1) ? \
e64b1bd1
YO
404 ( ( is_utf8 ) ? \
405 ( ( 0xC3 == ((U8*)s)[0] ) ? \
406 ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \
407 : ( 0xCE == ((U8*)s)[0] ) ? \
408 ( ( 0x90 == ((U8*)s)[1] || 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \
409 : 0 ) \
410 : ( 0xDF == ((U8*)s)[0] ) ) \
411: ((e)-(s) > 0) ? \
412 ( ( !( is_utf8 ) ) ? \
413 ( 0xDF == ((U8*)s)[0] ) \
414 : 0 ) \
415: 0 )
32e6a07c
YO
416
417/*** GENERATED CODE ***/
e64b1bd1
YO
418#define is_TRICKYFOLD_cp(cp) \
419( 0xDF == cp || ( 0xDF < cp && \
420( 0x390 == cp || ( 0x390 < cp && \
90826b5c
KW
421( 0x3B0 == cp || ( 0x3B0 < cp && \
422( 0x1E9E == cp || ( 0x1E9E < cp && \
423( 0x1FD3 == cp || ( 0x1FD3 < cp && \
4240x1FE3 == cp ) ) ) ) ) ) ) ) ) )
32e6a07c
YO
425
426/*** GENERATED CODE ***/
e64b1bd1
YO
427#define what_TRICKYFOLD(s,is_utf8) \
428( ( is_utf8 ) ? \
429 ( ( 0xC3 == ((U8*)s)[0] ) ? \
430 ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \
431 : ( 0xCE == ((U8*)s)[0] ) ? \
432 ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \
433 : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \
90826b5c
KW
434 : ( 0xE1 == ((U8*)s)[0] ) ? \
435 ( ( 0xBA == ((U8*)s)[1] ) ? \
436 ( ( 0x9E == ((U8*)s)[2] ) ? 0x1E9E : 0 ) \
437 : ( 0xBF == ((U8*)s)[1] ) ? \
438 ( ( 0x93 == ((U8*)s)[2] ) ? 0x1FD3 \
439 : ( 0xA3 == ((U8*)s)[2] ) ? 0x1FE3 : 0 ) \
440 : 0 ) \
e64b1bd1
YO
441 : 0 ) \
442: ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 )
32e6a07c
YO
443
444/*** GENERATED CODE ***/
e64b1bd1 445#define what_TRICKYFOLD_safe(s,e,is_utf8) \
90826b5c
KW
446( ((e)-(s) > 2) ? \
447 ( ( is_utf8 ) ? \
448 ( ( 0xC3 == ((U8*)s)[0] ) ? \
449 ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \
450 : ( 0xCE == ((U8*)s)[0] ) ? \
451 ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \
452 : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \
453 : ( 0xE1 == ((U8*)s)[0] ) ? \
454 ( ( 0xBA == ((U8*)s)[1] ) ? \
455 ( ( 0x9E == ((U8*)s)[2] ) ? 0x1E9E : 0 ) \
456 : ( 0xBF == ((U8*)s)[1] ) ? \
457 ( ( 0x93 == ((U8*)s)[2] ) ? 0x1FD3 \
458 : ( 0xA3 == ((U8*)s)[2] ) ? 0x1FE3 : 0 ) \
459 : 0 ) \
460 : 0 ) \
461 : ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 ) \
462: ((e)-(s) > 1) ? \
e64b1bd1
YO
463 ( ( is_utf8 ) ? \
464 ( ( 0xC3 == ((U8*)s)[0] ) ? \
465 ( ( 0x9F == ((U8*)s)[1] ) ? 0xDF : 0 ) \
466 : ( 0xCE == ((U8*)s)[0] ) ? \
467 ( ( 0x90 == ((U8*)s)[1] ) ? 0x390 \
468 : ( 0xB0 == ((U8*)s)[1] ) ? 0x3B0 : 0 ) \
469 : 0 ) \
470 : ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 ) \
471: ((e)-(s) > 0) ? \
472 ( ( ( !( is_utf8 ) ) && ( 0xDF == ((U8*)s)[0] ) ) ? 0xDF : 0 ) \
473: 0 )
32e6a07c
YO
474
475/*** GENERATED CODE ***/
e64b1bd1
YO
476#define what_len_TRICKYFOLD(s,is_utf8,len) \
477( ( is_utf8 ) ? \
478 ( ( 0xC3 == ((U8*)s)[0] ) ? \
479 ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \
480 : ( 0xCE == ((U8*)s)[0] ) ? \
481 ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \
482 : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \
90826b5c
KW
483 : ( 0xE1 == ((U8*)s)[0] ) ? \
484 ( ( 0xBA == ((U8*)s)[1] ) ? \
485 ( ( 0x9E == ((U8*)s)[2] ) ? len=3, 0x1E9E : 0 ) \
486 : ( 0xBF == ((U8*)s)[1] ) ? \
487 ( ( 0x93 == ((U8*)s)[2] ) ? len=3, 0x1FD3 \
488 : ( 0xA3 == ((U8*)s)[2] ) ? len=3, 0x1FE3 : 0 ) \
489 : 0 ) \
e64b1bd1
YO
490 : 0 ) \
491: ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 )
32e6a07c
YO
492
493/*** GENERATED CODE ***/
e64b1bd1 494#define what_len_TRICKYFOLD_safe(s,e,is_utf8,len) \
90826b5c
KW
495( ((e)-(s) > 2) ? \
496 ( ( is_utf8 ) ? \
497 ( ( 0xC3 == ((U8*)s)[0] ) ? \
498 ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \
499 : ( 0xCE == ((U8*)s)[0] ) ? \
500 ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \
501 : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \
502 : ( 0xE1 == ((U8*)s)[0] ) ? \
503 ( ( 0xBA == ((U8*)s)[1] ) ? \
504 ( ( 0x9E == ((U8*)s)[2] ) ? len=3, 0x1E9E : 0 ) \
505 : ( 0xBF == ((U8*)s)[1] ) ? \
506 ( ( 0x93 == ((U8*)s)[2] ) ? len=3, 0x1FD3 \
507 : ( 0xA3 == ((U8*)s)[2] ) ? len=3, 0x1FE3 : 0 ) \
508 : 0 ) \
509 : 0 ) \
510 : ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 ) \
511: ((e)-(s) > 1) ? \
e64b1bd1
YO
512 ( ( is_utf8 ) ? \
513 ( ( 0xC3 == ((U8*)s)[0] ) ? \
514 ( ( 0x9F == ((U8*)s)[1] ) ? len=2, 0xDF : 0 ) \
515 : ( 0xCE == ((U8*)s)[0] ) ? \
516 ( ( 0x90 == ((U8*)s)[1] ) ? len=2, 0x390 \
517 : ( 0xB0 == ((U8*)s)[1] ) ? len=2, 0x3B0 : 0 ) \
518 : 0 ) \
519 : ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 ) \
520: ((e)-(s) > 0) ? \
521 ( ( ( !( is_utf8 ) ) && ( 0xDF == ((U8*)s)[0] ) ) ? len=1, 0xDF : 0 ) \
522: 0 )
32e6a07c 523
8770da0e 524
58fbde93 525/* ex: set ro: */