LLVM 24.0.0git
UnicodeCaseFold.cpp
Go to the documentation of this file.
1//===---------- Support/UnicodeCaseFold.cpp -------------------------------===//
2//
3// This file was generated by utils/unicode-case-fold.py from the Unicode
4// case folding database at
5// https://www.unicode.org/Public/18.0.0/ucd/CaseFolding.txt
6//
7// To regenerate this file, run:
8// utils/unicode-case-fold.py \
9// "https://www.unicode.org/Public/18.0.0/ucd/CaseFolding.txt" \
10// > lib/Support/UnicodeCaseFold.cpp
11//
12//===----------------------------------------------------------------------===//
13
15
17 if (C < 0x0041)
18 return C;
19 // 26 characters
20 if (C <= 0x005a)
21 return C + 32;
22 // MICRO SIGN
23 if (C == 0x00b5)
24 return 0x03bc;
25 if (C < 0x00c0)
26 return C;
27 // 23 characters
28 if (C <= 0x00d6)
29 return C + 32;
30 if (C < 0x00d8)
31 return C;
32 // 7 characters
33 if (C <= 0x00de)
34 return C + 32;
35 if (C < 0x0100)
36 return C;
37 // 24 characters
38 if (C <= 0x012e)
39 return C | 1;
40 if (C < 0x0132)
41 return C;
42 // 3 characters
43 if (C <= 0x0136)
44 return C | 1;
45 if (C < 0x0139)
46 return C;
47 // 8 characters
48 if (C <= 0x0147 && C % 2 == 1)
49 return C + 1;
50 if (C < 0x014a)
51 return C;
52 // 23 characters
53 if (C <= 0x0176)
54 return C | 1;
55 // LATIN CAPITAL LETTER Y WITH DIAERESIS
56 if (C == 0x0178)
57 return 0x00ff;
58 if (C < 0x0179)
59 return C;
60 // 3 characters
61 if (C <= 0x017d && C % 2 == 1)
62 return C + 1;
63 // LATIN SMALL LETTER LONG S
64 if (C == 0x017f)
65 return 0x0073;
66 // LATIN CAPITAL LETTER B WITH HOOK
67 if (C == 0x0181)
68 return 0x0253;
69 if (C < 0x0182)
70 return C;
71 // 2 characters
72 if (C <= 0x0184)
73 return C | 1;
74 // LATIN CAPITAL LETTER OPEN O
75 if (C == 0x0186)
76 return 0x0254;
77 // LATIN CAPITAL LETTER C WITH HOOK
78 if (C == 0x0187)
79 return 0x0188;
80 if (C < 0x0189)
81 return C;
82 // 2 characters
83 if (C <= 0x018a)
84 return C + 205;
85 // LATIN CAPITAL LETTER D WITH TOPBAR
86 if (C == 0x018b)
87 return 0x018c;
88 // LATIN CAPITAL LETTER REVERSED E
89 if (C == 0x018e)
90 return 0x01dd;
91 // LATIN CAPITAL LETTER SCHWA
92 if (C == 0x018f)
93 return 0x0259;
94 // LATIN CAPITAL LETTER OPEN E
95 if (C == 0x0190)
96 return 0x025b;
97 // LATIN CAPITAL LETTER F WITH HOOK
98 if (C == 0x0191)
99 return 0x0192;
100 // LATIN CAPITAL LETTER G WITH HOOK
101 if (C == 0x0193)
102 return 0x0260;
103 // LATIN CAPITAL LETTER GAMMA
104 if (C == 0x0194)
105 return 0x0263;
106 // LATIN CAPITAL LETTER IOTA
107 if (C == 0x0196)
108 return 0x0269;
109 // LATIN CAPITAL LETTER I WITH STROKE
110 if (C == 0x0197)
111 return 0x0268;
112 // LATIN CAPITAL LETTER K WITH HOOK
113 if (C == 0x0198)
114 return 0x0199;
115 // LATIN CAPITAL LETTER TURNED M
116 if (C == 0x019c)
117 return 0x026f;
118 // LATIN CAPITAL LETTER N WITH LEFT HOOK
119 if (C == 0x019d)
120 return 0x0272;
121 // LATIN CAPITAL LETTER O WITH MIDDLE TILDE
122 if (C == 0x019f)
123 return 0x0275;
124 if (C < 0x01a0)
125 return C;
126 // 3 characters
127 if (C <= 0x01a4)
128 return C | 1;
129 // LATIN LETTER YR
130 if (C == 0x01a6)
131 return 0x0280;
132 // LATIN CAPITAL LETTER TONE TWO
133 if (C == 0x01a7)
134 return 0x01a8;
135 // LATIN CAPITAL LETTER ESH
136 if (C == 0x01a9)
137 return 0x0283;
138 // LATIN CAPITAL LETTER T WITH HOOK
139 if (C == 0x01ac)
140 return 0x01ad;
141 // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
142 if (C == 0x01ae)
143 return 0x0288;
144 // LATIN CAPITAL LETTER U WITH HORN
145 if (C == 0x01af)
146 return 0x01b0;
147 if (C < 0x01b1)
148 return C;
149 // 2 characters
150 if (C <= 0x01b2)
151 return C + 217;
152 if (C < 0x01b3)
153 return C;
154 // 2 characters
155 if (C <= 0x01b5 && C % 2 == 1)
156 return C + 1;
157 // LATIN CAPITAL LETTER EZH
158 if (C == 0x01b7)
159 return 0x0292;
160 if (C < 0x01b8)
161 return C;
162 // 2 characters
163 if (C <= 0x01bc && C % 4 == 0)
164 return C + 1;
165 // LATIN CAPITAL LETTER DZ WITH CARON
166 if (C == 0x01c4)
167 return 0x01c6;
168 // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
169 if (C == 0x01c5)
170 return 0x01c6;
171 // LATIN CAPITAL LETTER LJ
172 if (C == 0x01c7)
173 return 0x01c9;
174 // LATIN CAPITAL LETTER L WITH SMALL LETTER J
175 if (C == 0x01c8)
176 return 0x01c9;
177 // LATIN CAPITAL LETTER NJ
178 if (C == 0x01ca)
179 return 0x01cc;
180 if (C < 0x01cb)
181 return C;
182 // 9 characters
183 if (C <= 0x01db && C % 2 == 1)
184 return C + 1;
185 if (C < 0x01de)
186 return C;
187 // 9 characters
188 if (C <= 0x01ee)
189 return C | 1;
190 // LATIN CAPITAL LETTER DZ
191 if (C == 0x01f1)
192 return 0x01f3;
193 if (C < 0x01f2)
194 return C;
195 // 2 characters
196 if (C <= 0x01f4)
197 return C | 1;
198 // LATIN CAPITAL LETTER HWAIR
199 if (C == 0x01f6)
200 return 0x0195;
201 // LATIN CAPITAL LETTER WYNN
202 if (C == 0x01f7)
203 return 0x01bf;
204 if (C < 0x01f8)
205 return C;
206 // 20 characters
207 if (C <= 0x021e)
208 return C | 1;
209 // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
210 if (C == 0x0220)
211 return 0x019e;
212 if (C < 0x0222)
213 return C;
214 // 9 characters
215 if (C <= 0x0232)
216 return C | 1;
217 // LATIN CAPITAL LETTER A WITH STROKE
218 if (C == 0x023a)
219 return 0x2c65;
220 // LATIN CAPITAL LETTER C WITH STROKE
221 if (C == 0x023b)
222 return 0x023c;
223 // LATIN CAPITAL LETTER L WITH BAR
224 if (C == 0x023d)
225 return 0x019a;
226 // LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
227 if (C == 0x023e)
228 return 0x2c66;
229 // LATIN CAPITAL LETTER GLOTTAL STOP
230 if (C == 0x0241)
231 return 0x0242;
232 // LATIN CAPITAL LETTER B WITH STROKE
233 if (C == 0x0243)
234 return 0x0180;
235 // LATIN CAPITAL LETTER U BAR
236 if (C == 0x0244)
237 return 0x0289;
238 // LATIN CAPITAL LETTER TURNED V
239 if (C == 0x0245)
240 return 0x028c;
241 if (C < 0x0246)
242 return C;
243 // 5 characters
244 if (C <= 0x024e)
245 return C | 1;
246 // COMBINING GREEK YPOGEGRAMMENI
247 if (C == 0x0345)
248 return 0x03b9;
249 if (C < 0x0370)
250 return C;
251 // 2 characters
252 if (C <= 0x0372)
253 return C | 1;
254 // GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
255 if (C == 0x0376)
256 return 0x0377;
257 // GREEK CAPITAL LETTER YOT
258 if (C == 0x037f)
259 return 0x03f3;
260 // GREEK CAPITAL LETTER ALPHA WITH TONOS
261 if (C == 0x0386)
262 return 0x03ac;
263 if (C < 0x0388)
264 return C;
265 // 3 characters
266 if (C <= 0x038a)
267 return C + 37;
268 // GREEK CAPITAL LETTER OMICRON WITH TONOS
269 if (C == 0x038c)
270 return 0x03cc;
271 if (C < 0x038e)
272 return C;
273 // 2 characters
274 if (C <= 0x038f)
275 return C + 63;
276 if (C < 0x0391)
277 return C;
278 // 17 characters
279 if (C <= 0x03a1)
280 return C + 32;
281 if (C < 0x03a3)
282 return C;
283 // 9 characters
284 if (C <= 0x03ab)
285 return C + 32;
286 // GREEK SMALL LETTER FINAL SIGMA
287 if (C == 0x03c2)
288 return 0x03c3;
289 // GREEK CAPITAL KAI SYMBOL
290 if (C == 0x03cf)
291 return 0x03d7;
292 // GREEK BETA SYMBOL
293 if (C == 0x03d0)
294 return 0x03b2;
295 // GREEK THETA SYMBOL
296 if (C == 0x03d1)
297 return 0x03b8;
298 // GREEK PHI SYMBOL
299 if (C == 0x03d5)
300 return 0x03c6;
301 // GREEK PI SYMBOL
302 if (C == 0x03d6)
303 return 0x03c0;
304 if (C < 0x03d8)
305 return C;
306 // 12 characters
307 if (C <= 0x03ee)
308 return C | 1;
309 // GREEK KAPPA SYMBOL
310 if (C == 0x03f0)
311 return 0x03ba;
312 // GREEK RHO SYMBOL
313 if (C == 0x03f1)
314 return 0x03c1;
315 // GREEK CAPITAL THETA SYMBOL
316 if (C == 0x03f4)
317 return 0x03b8;
318 // GREEK LUNATE EPSILON SYMBOL
319 if (C == 0x03f5)
320 return 0x03b5;
321 // GREEK CAPITAL LETTER SHO
322 if (C == 0x03f7)
323 return 0x03f8;
324 // GREEK CAPITAL LUNATE SIGMA SYMBOL
325 if (C == 0x03f9)
326 return 0x03f2;
327 // GREEK CAPITAL LETTER SAN
328 if (C == 0x03fa)
329 return 0x03fb;
330 if (C < 0x03fd)
331 return C;
332 // 3 characters
333 if (C <= 0x03ff)
334 return C + -130;
335 if (C < 0x0400)
336 return C;
337 // 16 characters
338 if (C <= 0x040f)
339 return C + 80;
340 if (C < 0x0410)
341 return C;
342 // 32 characters
343 if (C <= 0x042f)
344 return C + 32;
345 if (C < 0x0460)
346 return C;
347 // 17 characters
348 if (C <= 0x0480)
349 return C | 1;
350 if (C < 0x048a)
351 return C;
352 // 27 characters
353 if (C <= 0x04be)
354 return C | 1;
355 // CYRILLIC LETTER PALOCHKA
356 if (C == 0x04c0)
357 return 0x04cf;
358 if (C < 0x04c1)
359 return C;
360 // 7 characters
361 if (C <= 0x04cd && C % 2 == 1)
362 return C + 1;
363 if (C < 0x04d0)
364 return C;
365 // 48 characters
366 if (C <= 0x052e)
367 return C | 1;
368 if (C < 0x0531)
369 return C;
370 // 38 characters
371 if (C <= 0x0556)
372 return C + 48;
373 if (C < 0x10a0)
374 return C;
375 // 38 characters
376 if (C <= 0x10c5)
377 return C + 7264;
378 if (C < 0x10c7)
379 return C;
380 // 2 characters
381 if (C <= 0x10cd && C % 6 == 5)
382 return C + 7264;
383 if (C < 0x13f8)
384 return C;
385 // 6 characters
386 if (C <= 0x13fd)
387 return C + -8;
388 // CYRILLIC SMALL LETTER ROUNDED VE
389 if (C == 0x1c80)
390 return 0x0432;
391 // CYRILLIC SMALL LETTER LONG-LEGGED DE
392 if (C == 0x1c81)
393 return 0x0434;
394 // CYRILLIC SMALL LETTER NARROW O
395 if (C == 0x1c82)
396 return 0x043e;
397 if (C < 0x1c83)
398 return C;
399 // 2 characters
400 if (C <= 0x1c84)
401 return C + -6210;
402 // CYRILLIC SMALL LETTER THREE-LEGGED TE
403 if (C == 0x1c85)
404 return 0x0442;
405 // CYRILLIC SMALL LETTER TALL HARD SIGN
406 if (C == 0x1c86)
407 return 0x044a;
408 // CYRILLIC SMALL LETTER TALL YAT
409 if (C == 0x1c87)
410 return 0x0463;
411 // CYRILLIC SMALL LETTER UNBLENDED UK
412 if (C == 0x1c88)
413 return 0xa64b;
414 // CYRILLIC CAPITAL LETTER TJE
415 if (C == 0x1c89)
416 return 0x1c8a;
417 if (C < 0x1c90)
418 return C;
419 // 43 characters
420 if (C <= 0x1cba)
421 return C + -3008;
422 if (C < 0x1cbd)
423 return C;
424 // 3 characters
425 if (C <= 0x1cbf)
426 return C + -3008;
427 if (C < 0x1e00)
428 return C;
429 // 75 characters
430 if (C <= 0x1e94)
431 return C | 1;
432 // LATIN SMALL LETTER LONG S WITH DOT ABOVE
433 if (C == 0x1e9b)
434 return 0x1e61;
435 // LATIN CAPITAL LETTER SHARP S
436 if (C == 0x1e9e)
437 return 0x00df;
438 if (C < 0x1ea0)
439 return C;
440 // 48 characters
441 if (C <= 0x1efe)
442 return C | 1;
443 if (C < 0x1f08)
444 return C;
445 // 8 characters
446 if (C <= 0x1f0f)
447 return C + -8;
448 if (C < 0x1f18)
449 return C;
450 // 6 characters
451 if (C <= 0x1f1d)
452 return C + -8;
453 if (C < 0x1f28)
454 return C;
455 // 8 characters
456 if (C <= 0x1f2f)
457 return C + -8;
458 if (C < 0x1f38)
459 return C;
460 // 8 characters
461 if (C <= 0x1f3f)
462 return C + -8;
463 if (C < 0x1f48)
464 return C;
465 // 6 characters
466 if (C <= 0x1f4d)
467 return C + -8;
468 if (C < 0x1f59)
469 return C;
470 // 4 characters
471 if (C <= 0x1f5f && C % 2 == 1)
472 return C + -8;
473 if (C < 0x1f68)
474 return C;
475 // 8 characters
476 if (C <= 0x1f6f)
477 return C + -8;
478 if (C < 0x1f88)
479 return C;
480 // 8 characters
481 if (C <= 0x1f8f)
482 return C + -8;
483 if (C < 0x1f98)
484 return C;
485 // 8 characters
486 if (C <= 0x1f9f)
487 return C + -8;
488 if (C < 0x1fa8)
489 return C;
490 // 8 characters
491 if (C <= 0x1faf)
492 return C + -8;
493 if (C < 0x1fb8)
494 return C;
495 // 2 characters
496 if (C <= 0x1fb9)
497 return C + -8;
498 if (C < 0x1fba)
499 return C;
500 // 2 characters
501 if (C <= 0x1fbb)
502 return C + -74;
503 // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
504 if (C == 0x1fbc)
505 return 0x1fb3;
506 // GREEK PROSGEGRAMMENI
507 if (C == 0x1fbe)
508 return 0x03b9;
509 if (C < 0x1fc8)
510 return C;
511 // 4 characters
512 if (C <= 0x1fcb)
513 return C + -86;
514 // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
515 if (C == 0x1fcc)
516 return 0x1fc3;
517 // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
518 if (C == 0x1fd3)
519 return 0x0390;
520 if (C < 0x1fd8)
521 return C;
522 // 2 characters
523 if (C <= 0x1fd9)
524 return C + -8;
525 if (C < 0x1fda)
526 return C;
527 // 2 characters
528 if (C <= 0x1fdb)
529 return C + -100;
530 // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
531 if (C == 0x1fe3)
532 return 0x03b0;
533 if (C < 0x1fe8)
534 return C;
535 // 2 characters
536 if (C <= 0x1fe9)
537 return C + -8;
538 if (C < 0x1fea)
539 return C;
540 // 2 characters
541 if (C <= 0x1feb)
542 return C + -112;
543 // GREEK CAPITAL LETTER RHO WITH DASIA
544 if (C == 0x1fec)
545 return 0x1fe5;
546 if (C < 0x1ff8)
547 return C;
548 // 2 characters
549 if (C <= 0x1ff9)
550 return C + -128;
551 if (C < 0x1ffa)
552 return C;
553 // 2 characters
554 if (C <= 0x1ffb)
555 return C + -126;
556 // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
557 if (C == 0x1ffc)
558 return 0x1ff3;
559 // OHM SIGN
560 if (C == 0x2126)
561 return 0x03c9;
562 // KELVIN SIGN
563 if (C == 0x212a)
564 return 0x006b;
565 // ANGSTROM SIGN
566 if (C == 0x212b)
567 return 0x00e5;
568 // TURNED CAPITAL F
569 if (C == 0x2132)
570 return 0x214e;
571 if (C < 0x2160)
572 return C;
573 // 16 characters
574 if (C <= 0x216f)
575 return C + 16;
576 // ROMAN NUMERAL REVERSED ONE HUNDRED
577 if (C == 0x2183)
578 return 0x2184;
579 if (C < 0x24b6)
580 return C;
581 // 26 characters
582 if (C <= 0x24cf)
583 return C + 26;
584 if (C < 0x2c00)
585 return C;
586 // 48 characters
587 if (C <= 0x2c2f)
588 return C + 48;
589 // LATIN CAPITAL LETTER L WITH DOUBLE BAR
590 if (C == 0x2c60)
591 return 0x2c61;
592 // LATIN CAPITAL LETTER L WITH MIDDLE TILDE
593 if (C == 0x2c62)
594 return 0x026b;
595 // LATIN CAPITAL LETTER P WITH STROKE
596 if (C == 0x2c63)
597 return 0x1d7d;
598 // LATIN CAPITAL LETTER R WITH TAIL
599 if (C == 0x2c64)
600 return 0x027d;
601 if (C < 0x2c67)
602 return C;
603 // 3 characters
604 if (C <= 0x2c6b && C % 2 == 1)
605 return C + 1;
606 // LATIN CAPITAL LETTER ALPHA
607 if (C == 0x2c6d)
608 return 0x0251;
609 // LATIN CAPITAL LETTER M WITH HOOK
610 if (C == 0x2c6e)
611 return 0x0271;
612 // LATIN CAPITAL LETTER TURNED A
613 if (C == 0x2c6f)
614 return 0x0250;
615 // LATIN CAPITAL LETTER TURNED ALPHA
616 if (C == 0x2c70)
617 return 0x0252;
618 if (C < 0x2c72)
619 return C;
620 // 2 characters
621 if (C <= 0x2c75 && C % 3 == 2)
622 return C + 1;
623 if (C < 0x2c7e)
624 return C;
625 // 2 characters
626 if (C <= 0x2c7f)
627 return C + -10815;
628 if (C < 0x2c80)
629 return C;
630 // 50 characters
631 if (C <= 0x2ce2)
632 return C | 1;
633 if (C < 0x2ceb)
634 return C;
635 // 2 characters
636 if (C <= 0x2ced && C % 2 == 1)
637 return C + 1;
638 if (C < 0x2cf2)
639 return C;
640 // 2 characters
641 if (C <= 0xa640 && C % 31054 == 11506)
642 return C + 1;
643 if (C < 0xa642)
644 return C;
645 // 22 characters
646 if (C <= 0xa66c)
647 return C | 1;
648 if (C < 0xa680)
649 return C;
650 // 14 characters
651 if (C <= 0xa69a)
652 return C | 1;
653 if (C < 0xa722)
654 return C;
655 // 7 characters
656 if (C <= 0xa72e)
657 return C | 1;
658 if (C < 0xa732)
659 return C;
660 // 31 characters
661 if (C <= 0xa76e)
662 return C | 1;
663 if (C < 0xa779)
664 return C;
665 // 2 characters
666 if (C <= 0xa77b && C % 2 == 1)
667 return C + 1;
668 // LATIN CAPITAL LETTER INSULAR G
669 if (C == 0xa77d)
670 return 0x1d79;
671 if (C < 0xa77e)
672 return C;
673 // 5 characters
674 if (C <= 0xa786)
675 return C | 1;
676 // LATIN CAPITAL LETTER SALTILLO
677 if (C == 0xa78b)
678 return 0xa78c;
679 // LATIN CAPITAL LETTER TURNED H
680 if (C == 0xa78d)
681 return 0x0265;
682 if (C < 0xa790)
683 return C;
684 // 2 characters
685 if (C <= 0xa792)
686 return C | 1;
687 if (C < 0xa796)
688 return C;
689 // 10 characters
690 if (C <= 0xa7a8)
691 return C | 1;
692 // LATIN CAPITAL LETTER H WITH HOOK
693 if (C == 0xa7aa)
694 return 0x0266;
695 // LATIN CAPITAL LETTER REVERSED OPEN E
696 if (C == 0xa7ab)
697 return 0x025c;
698 // LATIN CAPITAL LETTER SCRIPT G
699 if (C == 0xa7ac)
700 return 0x0261;
701 // LATIN CAPITAL LETTER L WITH BELT
702 if (C == 0xa7ad)
703 return 0x026c;
704 // LATIN CAPITAL LETTER SMALL CAPITAL I
705 if (C == 0xa7ae)
706 return 0x026a;
707 // LATIN CAPITAL LETTER TURNED K
708 if (C == 0xa7b0)
709 return 0x029e;
710 // LATIN CAPITAL LETTER TURNED T
711 if (C == 0xa7b1)
712 return 0x0287;
713 // LATIN CAPITAL LETTER J WITH CROSSED-TAIL
714 if (C == 0xa7b2)
715 return 0x029d;
716 // LATIN CAPITAL LETTER CHI
717 if (C == 0xa7b3)
718 return 0xab53;
719 if (C < 0xa7b4)
720 return C;
721 // 8 characters
722 if (C <= 0xa7c2)
723 return C | 1;
724 // LATIN CAPITAL LETTER C WITH PALATAL HOOK
725 if (C == 0xa7c4)
726 return 0xa794;
727 // LATIN CAPITAL LETTER S WITH HOOK
728 if (C == 0xa7c5)
729 return 0x0282;
730 // LATIN CAPITAL LETTER Z WITH PALATAL HOOK
731 if (C == 0xa7c6)
732 return 0x1d8e;
733 if (C < 0xa7c7)
734 return C;
735 // 2 characters
736 if (C <= 0xa7c9 && C % 2 == 1)
737 return C + 1;
738 // LATIN CAPITAL LETTER RAMS HORN
739 if (C == 0xa7cb)
740 return 0x0264;
741 if (C < 0xa7cc)
742 return C;
743 // 8 characters
744 if (C <= 0xa7da)
745 return C | 1;
746 // LATIN CAPITAL LETTER LAMBDA WITH STROKE
747 if (C == 0xa7dc)
748 return 0x019b;
749 if (C < 0xa7dd)
750 return C;
751 // 2 characters
752 if (C <= 0xa7e2 && C % 5 == 3)
753 return C + -42342;
754 // LATIN CAPITAL LETTER REVERSED HALF H
755 if (C == 0xa7f5)
756 return 0xa7f6;
757 if (C < 0xab6c)
758 return C;
759 // 2 characters
760 if (C <= 0xab6d)
761 return C + -33;
762 if (C < 0xab70)
763 return C;
764 // 80 characters
765 if (C <= 0xabbf)
766 return C + -38864;
767 // LATIN SMALL LIGATURE LONG S T
768 if (C == 0xfb05)
769 return 0xfb06;
770 if (C < 0xff21)
771 return C;
772 // 26 characters
773 if (C <= 0xff3a)
774 return C + 32;
775 if (C < 0x10400)
776 return C;
777 // 40 characters
778 if (C <= 0x10427)
779 return C + 40;
780 if (C < 0x104b0)
781 return C;
782 // 36 characters
783 if (C <= 0x104d3)
784 return C + 40;
785 if (C < 0x10570)
786 return C;
787 // 11 characters
788 if (C <= 0x1057a)
789 return C + 39;
790 if (C < 0x1057c)
791 return C;
792 // 15 characters
793 if (C <= 0x1058a)
794 return C + 39;
795 if (C < 0x1058c)
796 return C;
797 // 7 characters
798 if (C <= 0x10592)
799 return C + 39;
800 if (C < 0x10594)
801 return C;
802 // 2 characters
803 if (C <= 0x10595)
804 return C + 39;
805 if (C < 0x10c80)
806 return C;
807 // 51 characters
808 if (C <= 0x10cb2)
809 return C + 64;
810 if (C < 0x10d50)
811 return C;
812 // 22 characters
813 if (C <= 0x10d65)
814 return C + 32;
815 if (C < 0x118a0)
816 return C;
817 // 32 characters
818 if (C <= 0x118bf)
819 return C + 32;
820 if (C < 0x16e40)
821 return C;
822 // 32 characters
823 if (C <= 0x16e5f)
824 return C + 32;
825 if (C < 0x16ea0)
826 return C;
827 // 25 characters
828 if (C <= 0x16eb8)
829 return C + 27;
830 if (C < 0x1df40)
831 return C;
832 // 2 characters
833 if (C <= 0x1df48 && C % 8 == 0)
834 return C + 1;
835 if (C < 0x1df4a)
836 return C;
837 // 2 characters
838 if (C <= 0x1df4d && C % 3 == 1)
839 return C + 1;
840 if (C < 0x1df51)
841 return C;
842 // 2 characters
843 if (C <= 0x1df68 && C % 23 == 0)
844 return C + 1;
845 if (C < 0x1df6a)
846 return C;
847 // 3 characters
848 if (C <= 0x1df6e)
849 return C | 1;
850 if (C < 0x1df72)
851 return C;
852 // 7 characters
853 if (C <= 0x1df7e)
854 return C | 1;
855 // LATIN SMALL LIGATURE LONG S WITH DESCENDER S
856 if (C == 0x1df95)
857 return 0x00df;
858 if (C < 0x1e900)
859 return C;
860 // 34 characters
861 if (C <= 0x1e921)
862 return C + 34;
863
864 return C;
865}
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
LLVM_ABI int foldCharSimple(int C)
Fold input unicode character according the Simple unicode case folding rules.