This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove untrue comment from t/op/ref.t
[perl5.git] / regcharclass.h
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 regen/regcharclass.pl.
12  * Any changes made here will be lost!
13  */
14
15 /*
16         LNBREAK: Line Break: \R
17
18         "\x0D\x0A"      # CRLF - Network (Windows) line ending
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)                                               \
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] ) )
39
40 /*** GENERATED CODE ***/
41 #define is_LNBREAK_safe(s,e,is_utf8)                                        \
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 )
66
67 /*** GENERATED CODE ***/
68 #define is_LNBREAK_utf8(s)                                                  \
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 )
77
78 /*** GENERATED CODE ***/
79 #define is_LNBREAK_utf8_safe(s,e)                                           \
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 )
99
100 /*** GENERATED CODE ***/
101 #define is_LNBREAK_latin1(s)                                                \
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] ) )
106
107 /*** GENERATED CODE ***/
108 #define is_LNBREAK_latin1_safe(s,e)                                         \
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 )
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)                                               \
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] ) )
163
164 /*** GENERATED CODE ***/
165 #define is_HORIZWS_safe(s,e,is_utf8)                                        \
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 )
198
199 /*** GENERATED CODE ***/
200 #define is_HORIZWS_utf8(s)                                                  \
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 )
219
220 /*** GENERATED CODE ***/
221 #define is_HORIZWS_utf8_safe(s,e)                                           \
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 )
249
250 /*** GENERATED CODE ***/
251 #define is_HORIZWS_latin1(s)                                                \
252 ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] )
253
254 /*** GENERATED CODE ***/
255 #define is_HORIZWS_latin1_safe(s,e)                                         \
256 ( ((e)-(s) > 0) ?                                                           \
257     ( 0x09 == ((U8*)s)[0] || 0x20 == ((U8*)s)[0] || 0xA0 == ((U8*)s)[0] )   \
258 : 0 )
259
260 /*** GENERATED CODE ***/
261 #define is_HORIZWS_cp(cp)                                                   \
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 &&                                          \
270 0x3000 == cp ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
271
272 /*
273         VERTWS: Vertical Whitespace: \v \V
274
275         0x0A            # LF
276         0x0B            # VT
277         0x0C            # FF
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)                                                \
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] ) )
293
294 /*** GENERATED CODE ***/
295 #define is_VERTWS_safe(s,e,is_utf8)                                         \
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 )
316
317 /*** GENERATED CODE ***/
318 #define is_VERTWS_utf8(s)                                                   \
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 )
325
326 /*** GENERATED CODE ***/
327 #define is_VERTWS_utf8_safe(s,e)                                            \
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 )
343
344 /*** GENERATED CODE ***/
345 #define is_VERTWS_latin1(s)                                                 \
346 ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )
347
348 /*** GENERATED CODE ***/
349 #define is_VERTWS_latin1_safe(s,e)                                          \
350 ( ((e)-(s) > 0) ?                                                           \
351     ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\
352 : 0 )
353
354 /*** GENERATED CODE ***/
355 #define is_VERTWS_cp(cp)                                                    \
356 ( ( 0x0A <= cp && cp <= 0x0D ) || ( 0x0D < cp &&                            \
357 ( 0x85 == cp || ( 0x85 < cp &&                                              \
358 ( 0x2028 == cp || ( 0x2028 < cp &&                                          \
359 0x2029 == cp ) ) ) ) ) )
360
361 /*
362         TRICKYFOLD: Problematic fold case letters.  When adding to this list, also should add them to regcomp.c and fold_grind.t
363
364         0x00DF  # LATIN SMALL LETTER SHARP S
365         0x0390  # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
366         0x03B0  # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
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
370 */
371 /*** GENERATED CODE ***/
372 #define is_TRICKYFOLD(s,is_utf8)                                            \
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 )          \
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 )                                                               \
384     : 0 )                                                                   \
385 : ( 0xDF == ((U8*)s)[0] ) )
386
387 /*** GENERATED CODE ***/
388 #define is_TRICKYFOLD_safe(s,e,is_utf8)                                     \
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) ?                                                           \
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 )
416
417 /*** GENERATED CODE ***/
418 #define is_TRICKYFOLD_cp(cp)                                                \
419 ( 0xDF == cp || ( 0xDF < cp &&                                              \
420 ( 0x390 == cp || ( 0x390 < cp &&                                            \
421 ( 0x3B0 == cp || ( 0x3B0 < cp &&                                            \
422 ( 0x1E9E == cp || ( 0x1E9E < cp &&                                          \
423 ( 0x1FD3 == cp || ( 0x1FD3 < cp &&                                          \
424 0x1FE3 == cp ) ) ) ) ) ) ) ) ) )
425
426 /*** GENERATED CODE ***/
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 )                             \
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 )                                                               \
441     : 0 )                                                                   \
442 : ( 0xDF == ((U8*)s)[0] ) ? 0xDF : 0 )
443
444 /*** GENERATED CODE ***/
445 #define what_TRICKYFOLD_safe(s,e,is_utf8)                                   \
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) ?                                                           \
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 )
474
475 /*** GENERATED CODE ***/
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 )                      \
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 )                                                               \
490     : 0 )                                                                   \
491 : ( 0xDF == ((U8*)s)[0] ) ? len=1, 0xDF : 0 )
492
493 /*** GENERATED CODE ***/
494 #define what_len_TRICKYFOLD_safe(s,e,is_utf8,len)                           \
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) ?                                                           \
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 )
523
524
525 /* ex: set ro: */