| //===---------- Support/UnicodeCaseFold.cpp -------------------------------===// |
| // |
| // This file was generated by utils/unicode-case-fold.py from the Unicode |
| // case folding database at |
| // http://www.unicode.org/Public/9.0.0/ucd/CaseFolding.txt |
| // |
| // To regenerate this file, run: |
| // utils/unicode-case-fold.py \ |
| // "http://www.unicode.org/Public/9.0.0/ucd/CaseFolding.txt" \ |
| // > lib/Support/UnicodeCaseFold.cpp |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "llvm/Support/Unicode.h" |
| |
| int llvm::sys::unicode::foldCharSimple(int C) { |
| if (C < 0x0041) |
| return C; |
| // 26 characters |
| if (C <= 0x005a) |
| return C + 32; |
| // MICRO SIGN |
| if (C == 0x00b5) |
| return 0x03bc; |
| if (C < 0x00c0) |
| return C; |
| // 23 characters |
| if (C <= 0x00d6) |
| return C + 32; |
| if (C < 0x00d8) |
| return C; |
| // 7 characters |
| if (C <= 0x00de) |
| return C + 32; |
| if (C < 0x0100) |
| return C; |
| // 24 characters |
| if (C <= 0x012e) |
| return C | 1; |
| if (C < 0x0132) |
| return C; |
| // 3 characters |
| if (C <= 0x0136) |
| return C | 1; |
| if (C < 0x0139) |
| return C; |
| // 8 characters |
| if (C <= 0x0147 && C % 2 == 1) |
| return C + 1; |
| if (C < 0x014a) |
| return C; |
| // 23 characters |
| if (C <= 0x0176) |
| return C | 1; |
| // LATIN CAPITAL LETTER Y WITH DIAERESIS |
| if (C == 0x0178) |
| return 0x00ff; |
| if (C < 0x0179) |
| return C; |
| // 3 characters |
| if (C <= 0x017d && C % 2 == 1) |
| return C + 1; |
| // LATIN SMALL LETTER LONG S |
| if (C == 0x017f) |
| return 0x0073; |
| // LATIN CAPITAL LETTER B WITH HOOK |
| if (C == 0x0181) |
| return 0x0253; |
| if (C < 0x0182) |
| return C; |
| // 2 characters |
| if (C <= 0x0184) |
| return C | 1; |
| // LATIN CAPITAL LETTER OPEN O |
| if (C == 0x0186) |
| return 0x0254; |
| // LATIN CAPITAL LETTER C WITH HOOK |
| if (C == 0x0187) |
| return 0x0188; |
| if (C < 0x0189) |
| return C; |
| // 2 characters |
| if (C <= 0x018a) |
| return C + 205; |
| // LATIN CAPITAL LETTER D WITH TOPBAR |
| if (C == 0x018b) |
| return 0x018c; |
| // LATIN CAPITAL LETTER REVERSED E |
| if (C == 0x018e) |
| return 0x01dd; |
| // LATIN CAPITAL LETTER SCHWA |
| if (C == 0x018f) |
| return 0x0259; |
| // LATIN CAPITAL LETTER OPEN E |
| if (C == 0x0190) |
| return 0x025b; |
| // LATIN CAPITAL LETTER F WITH HOOK |
| if (C == 0x0191) |
| return 0x0192; |
| // LATIN CAPITAL LETTER G WITH HOOK |
| if (C == 0x0193) |
| return 0x0260; |
| // LATIN CAPITAL LETTER GAMMA |
| if (C == 0x0194) |
| return 0x0263; |
| // LATIN CAPITAL LETTER IOTA |
| if (C == 0x0196) |
| return 0x0269; |
| // LATIN CAPITAL LETTER I WITH STROKE |
| if (C == 0x0197) |
| return 0x0268; |
| // LATIN CAPITAL LETTER K WITH HOOK |
| if (C == 0x0198) |
| return 0x0199; |
| // LATIN CAPITAL LETTER TURNED M |
| if (C == 0x019c) |
| return 0x026f; |
| // LATIN CAPITAL LETTER N WITH LEFT HOOK |
| if (C == 0x019d) |
| return 0x0272; |
| // LATIN CAPITAL LETTER O WITH MIDDLE TILDE |
| if (C == 0x019f) |
| return 0x0275; |
| if (C < 0x01a0) |
| return C; |
| // 3 characters |
| if (C <= 0x01a4) |
| return C | 1; |
| // LATIN LETTER YR |
| if (C == 0x01a6) |
| return 0x0280; |
| // LATIN CAPITAL LETTER TONE TWO |
| if (C == 0x01a7) |
| return 0x01a8; |
| // LATIN CAPITAL LETTER ESH |
| if (C == 0x01a9) |
| return 0x0283; |
| // LATIN CAPITAL LETTER T WITH HOOK |
| if (C == 0x01ac) |
| return 0x01ad; |
| // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK |
| if (C == 0x01ae) |
| return 0x0288; |
| // LATIN CAPITAL LETTER U WITH HORN |
| if (C == 0x01af) |
| return 0x01b0; |
| if (C < 0x01b1) |
| return C; |
| // 2 characters |
| if (C <= 0x01b2) |
| return C + 217; |
| if (C < 0x01b3) |
| return C; |
| // 2 characters |
| if (C <= 0x01b5 && C % 2 == 1) |
| return C + 1; |
| // LATIN CAPITAL LETTER EZH |
| if (C == 0x01b7) |
| return 0x0292; |
| if (C < 0x01b8) |
| return C; |
| // 2 characters |
| if (C <= 0x01bc && C % 4 == 0) |
| return C + 1; |
| // LATIN CAPITAL LETTER DZ WITH CARON |
| if (C == 0x01c4) |
| return 0x01c6; |
| // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON |
| if (C == 0x01c5) |
| return 0x01c6; |
| // LATIN CAPITAL LETTER LJ |
| if (C == 0x01c7) |
| return 0x01c9; |
| // LATIN CAPITAL LETTER L WITH SMALL LETTER J |
| if (C == 0x01c8) |
| return 0x01c9; |
| // LATIN CAPITAL LETTER NJ |
| if (C == 0x01ca) |
| return 0x01cc; |
| if (C < 0x01cb) |
| return C; |
| // 9 characters |
| if (C <= 0x01db && C % 2 == 1) |
| return C + 1; |
| if (C < 0x01de) |
| return C; |
| // 9 characters |
| if (C <= 0x01ee) |
| return C | 1; |
| // LATIN CAPITAL LETTER DZ |
| if (C == 0x01f1) |
| return 0x01f3; |
| if (C < 0x01f2) |
| return C; |
| // 2 characters |
| if (C <= 0x01f4) |
| return C | 1; |
| // LATIN CAPITAL LETTER HWAIR |
| if (C == 0x01f6) |
| return 0x0195; |
| // LATIN CAPITAL LETTER WYNN |
| if (C == 0x01f7) |
| return 0x01bf; |
| if (C < 0x01f8) |
| return C; |
| // 20 characters |
| if (C <= 0x021e) |
| return C | 1; |
| // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG |
| if (C == 0x0220) |
| return 0x019e; |
| if (C < 0x0222) |
| return C; |
| // 9 characters |
| if (C <= 0x0232) |
| return C | 1; |
| // LATIN CAPITAL LETTER A WITH STROKE |
| if (C == 0x023a) |
| return 0x2c65; |
| // LATIN CAPITAL LETTER C WITH STROKE |
| if (C == 0x023b) |
| return 0x023c; |
| // LATIN CAPITAL LETTER L WITH BAR |
| if (C == 0x023d) |
| return 0x019a; |
| // LATIN CAPITAL LETTER T WITH DIAGONAL STROKE |
| if (C == 0x023e) |
| return 0x2c66; |
| // LATIN CAPITAL LETTER GLOTTAL STOP |
| if (C == 0x0241) |
| return 0x0242; |
| // LATIN CAPITAL LETTER B WITH STROKE |
| if (C == 0x0243) |
| return 0x0180; |
| // LATIN CAPITAL LETTER U BAR |
| if (C == 0x0244) |
| return 0x0289; |
| // LATIN CAPITAL LETTER TURNED V |
| if (C == 0x0245) |
| return 0x028c; |
| if (C < 0x0246) |
| return C; |
| // 5 characters |
| if (C <= 0x024e) |
| return C | 1; |
| // COMBINING GREEK YPOGEGRAMMENI |
| if (C == 0x0345) |
| return 0x03b9; |
| if (C < 0x0370) |
| return C; |
| // 2 characters |
| if (C <= 0x0372) |
| return C | 1; |
| // GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA |
| if (C == 0x0376) |
| return 0x0377; |
| // GREEK CAPITAL LETTER YOT |
| if (C == 0x037f) |
| return 0x03f3; |
| // GREEK CAPITAL LETTER ALPHA WITH TONOS |
| if (C == 0x0386) |
| return 0x03ac; |
| if (C < 0x0388) |
| return C; |
| // 3 characters |
| if (C <= 0x038a) |
| return C + 37; |
| // GREEK CAPITAL LETTER OMICRON WITH TONOS |
| if (C == 0x038c) |
| return 0x03cc; |
| if (C < 0x038e) |
| return C; |
| // 2 characters |
| if (C <= 0x038f) |
| return C + 63; |
| if (C < 0x0391) |
| return C; |
| // 17 characters |
| if (C <= 0x03a1) |
| return C + 32; |
| if (C < 0x03a3) |
| return C; |
| // 9 characters |
| if (C <= 0x03ab) |
| return C + 32; |
| // GREEK SMALL LETTER FINAL SIGMA |
| if (C == 0x03c2) |
| return 0x03c3; |
| // GREEK CAPITAL KAI SYMBOL |
| if (C == 0x03cf) |
| return 0x03d7; |
| // GREEK BETA SYMBOL |
| if (C == 0x03d0) |
| return 0x03b2; |
| // GREEK THETA SYMBOL |
| if (C == 0x03d1) |
| return 0x03b8; |
| // GREEK PHI SYMBOL |
| if (C == 0x03d5) |
| return 0x03c6; |
| // GREEK PI SYMBOL |
| if (C == 0x03d6) |
| return 0x03c0; |
| if (C < 0x03d8) |
| return C; |
| // 12 characters |
| if (C <= 0x03ee) |
| return C | 1; |
| // GREEK KAPPA SYMBOL |
| if (C == 0x03f0) |
| return 0x03ba; |
| // GREEK RHO SYMBOL |
| if (C == 0x03f1) |
| return 0x03c1; |
| // GREEK CAPITAL THETA SYMBOL |
| if (C == 0x03f4) |
| return 0x03b8; |
| // GREEK LUNATE EPSILON SYMBOL |
| if (C == 0x03f5) |
| return 0x03b5; |
| // GREEK CAPITAL LETTER SHO |
| if (C == 0x03f7) |
| return 0x03f8; |
| // GREEK CAPITAL LUNATE SIGMA SYMBOL |
| if (C == 0x03f9) |
| return 0x03f2; |
| // GREEK CAPITAL LETTER SAN |
| if (C == 0x03fa) |
| return 0x03fb; |
| if (C < 0x03fd) |
| return C; |
| // 3 characters |
| if (C <= 0x03ff) |
| return C + -130; |
| if (C < 0x0400) |
| return C; |
| // 16 characters |
| if (C <= 0x040f) |
| return C + 80; |
| if (C < 0x0410) |
| return C; |
| // 32 characters |
| if (C <= 0x042f) |
| return C + 32; |
| if (C < 0x0460) |
| return C; |
| // 17 characters |
| if (C <= 0x0480) |
| return C | 1; |
| if (C < 0x048a) |
| return C; |
| // 27 characters |
| if (C <= 0x04be) |
| return C | 1; |
| // CYRILLIC LETTER PALOCHKA |
| if (C == 0x04c0) |
| return 0x04cf; |
| if (C < 0x04c1) |
| return C; |
| // 7 characters |
| if (C <= 0x04cd && C % 2 == 1) |
| return C + 1; |
| if (C < 0x04d0) |
| return C; |
| // 48 characters |
| if (C <= 0x052e) |
| return C | 1; |
| if (C < 0x0531) |
| return C; |
| // 38 characters |
| if (C <= 0x0556) |
| return C + 48; |
| if (C < 0x10a0) |
| return C; |
| // 38 characters |
| if (C <= 0x10c5) |
| return C + 7264; |
| if (C < 0x10c7) |
| return C; |
| // 2 characters |
| if (C <= 0x10cd && C % 6 == 5) |
| return C + 7264; |
| if (C < 0x13f8) |
| return C; |
| // 6 characters |
| if (C <= 0x13fd) |
| return C + -8; |
| // CYRILLIC SMALL LETTER ROUNDED VE |
| if (C == 0x1c80) |
| return 0x0432; |
| // CYRILLIC SMALL LETTER LONG-LEGGED DE |
| if (C == 0x1c81) |
| return 0x0434; |
| // CYRILLIC SMALL LETTER NARROW O |
| if (C == 0x1c82) |
| return 0x043e; |
| if (C < 0x1c83) |
| return C; |
| // 2 characters |
| if (C <= 0x1c84) |
| return C + -6210; |
| // CYRILLIC SMALL LETTER THREE-LEGGED TE |
| if (C == 0x1c85) |
| return 0x0442; |
| // CYRILLIC SMALL LETTER TALL HARD SIGN |
| if (C == 0x1c86) |
| return 0x044a; |
| // CYRILLIC SMALL LETTER TALL YAT |
| if (C == 0x1c87) |
| return 0x0463; |
| // CYRILLIC SMALL LETTER UNBLENDED UK |
| if (C == 0x1c88) |
| return 0xa64b; |
| if (C < 0x1e00) |
| return C; |
| // 75 characters |
| if (C <= 0x1e94) |
| return C | 1; |
| // LATIN SMALL LETTER LONG S WITH DOT ABOVE |
| if (C == 0x1e9b) |
| return 0x1e61; |
| // LATIN CAPITAL LETTER SHARP S |
| if (C == 0x1e9e) |
| return 0x00df; |
| if (C < 0x1ea0) |
| return C; |
| // 48 characters |
| if (C <= 0x1efe) |
| return C | 1; |
| if (C < 0x1f08) |
| return C; |
| // 8 characters |
| if (C <= 0x1f0f) |
| return C + -8; |
| if (C < 0x1f18) |
| return C; |
| // 6 characters |
| if (C <= 0x1f1d) |
| return C + -8; |
| if (C < 0x1f28) |
| return C; |
| // 8 characters |
| if (C <= 0x1f2f) |
| return C + -8; |
| if (C < 0x1f38) |
| return C; |
| // 8 characters |
| if (C <= 0x1f3f) |
| return C + -8; |
| if (C < 0x1f48) |
| return C; |
| // 6 characters |
| if (C <= 0x1f4d) |
| return C + -8; |
| if (C < 0x1f59) |
| return C; |
| // 4 characters |
| if (C <= 0x1f5f && C % 2 == 1) |
| return C + -8; |
| if (C < 0x1f68) |
| return C; |
| // 8 characters |
| if (C <= 0x1f6f) |
| return C + -8; |
| if (C < 0x1f88) |
| return C; |
| // 8 characters |
| if (C <= 0x1f8f) |
| return C + -8; |
| if (C < 0x1f98) |
| return C; |
| // 8 characters |
| if (C <= 0x1f9f) |
| return C + -8; |
| if (C < 0x1fa8) |
| return C; |
| // 8 characters |
| if (C <= 0x1faf) |
| return C + -8; |
| if (C < 0x1fb8) |
| return C; |
| // 2 characters |
| if (C <= 0x1fb9) |
| return C + -8; |
| if (C < 0x1fba) |
| return C; |
| // 2 characters |
| if (C <= 0x1fbb) |
| return C + -74; |
| // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI |
| if (C == 0x1fbc) |
| return 0x1fb3; |
| // GREEK PROSGEGRAMMENI |
| if (C == 0x1fbe) |
| return 0x03b9; |
| if (C < 0x1fc8) |
| return C; |
| // 4 characters |
| if (C <= 0x1fcb) |
| return C + -86; |
| // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI |
| if (C == 0x1fcc) |
| return 0x1fc3; |
| if (C < 0x1fd8) |
| return C; |
| // 2 characters |
| if (C <= 0x1fd9) |
| return C + -8; |
| if (C < 0x1fda) |
| return C; |
| // 2 characters |
| if (C <= 0x1fdb) |
| return C + -100; |
| if (C < 0x1fe8) |
| return C; |
| // 2 characters |
| if (C <= 0x1fe9) |
| return C + -8; |
| if (C < 0x1fea) |
| return C; |
| // 2 characters |
| if (C <= 0x1feb) |
| return C + -112; |
| // GREEK CAPITAL LETTER RHO WITH DASIA |
| if (C == 0x1fec) |
| return 0x1fe5; |
| if (C < 0x1ff8) |
| return C; |
| // 2 characters |
| if (C <= 0x1ff9) |
| return C + -128; |
| if (C < 0x1ffa) |
| return C; |
| // 2 characters |
| if (C <= 0x1ffb) |
| return C + -126; |
| // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI |
| if (C == 0x1ffc) |
| return 0x1ff3; |
| // OHM SIGN |
| if (C == 0x2126) |
| return 0x03c9; |
| // KELVIN SIGN |
| if (C == 0x212a) |
| return 0x006b; |
| // ANGSTROM SIGN |
| if (C == 0x212b) |
| return 0x00e5; |
| // TURNED CAPITAL F |
| if (C == 0x2132) |
| return 0x214e; |
| if (C < 0x2160) |
| return C; |
| // 16 characters |
| if (C <= 0x216f) |
| return C + 16; |
| // ROMAN NUMERAL REVERSED ONE HUNDRED |
| if (C == 0x2183) |
| return 0x2184; |
| if (C < 0x24b6) |
| return C; |
| // 26 characters |
| if (C <= 0x24cf) |
| return C + 26; |
| if (C < 0x2c00) |
| return C; |
| // 47 characters |
| if (C <= 0x2c2e) |
| return C + 48; |
| // LATIN CAPITAL LETTER L WITH DOUBLE BAR |
| if (C == 0x2c60) |
| return 0x2c61; |
| // LATIN CAPITAL LETTER L WITH MIDDLE TILDE |
| if (C == 0x2c62) |
| return 0x026b; |
| // LATIN CAPITAL LETTER P WITH STROKE |
| if (C == 0x2c63) |
| return 0x1d7d; |
| // LATIN CAPITAL LETTER R WITH TAIL |
| if (C == 0x2c64) |
| return 0x027d; |
| if (C < 0x2c67) |
| return C; |
| // 3 characters |
| if (C <= 0x2c6b && C % 2 == 1) |
| return C + 1; |
| // LATIN CAPITAL LETTER ALPHA |
| if (C == 0x2c6d) |
| return 0x0251; |
| // LATIN CAPITAL LETTER M WITH HOOK |
| if (C == 0x2c6e) |
| return 0x0271; |
| // LATIN CAPITAL LETTER TURNED A |
| if (C == 0x2c6f) |
| return 0x0250; |
| // LATIN CAPITAL LETTER TURNED ALPHA |
| if (C == 0x2c70) |
| return 0x0252; |
| if (C < 0x2c72) |
| return C; |
| // 2 characters |
| if (C <= 0x2c75 && C % 3 == 2) |
| return C + 1; |
| if (C < 0x2c7e) |
| return C; |
| // 2 characters |
| if (C <= 0x2c7f) |
| return C + -10815; |
| if (C < 0x2c80) |
| return C; |
| // 50 characters |
| if (C <= 0x2ce2) |
| return C | 1; |
| if (C < 0x2ceb) |
| return C; |
| // 2 characters |
| if (C <= 0x2ced && C % 2 == 1) |
| return C + 1; |
| if (C < 0x2cf2) |
| return C; |
| // 2 characters |
| if (C <= 0xa640 && C % 31054 == 11506) |
| return C + 1; |
| if (C < 0xa642) |
| return C; |
| // 22 characters |
| if (C <= 0xa66c) |
| return C | 1; |
| if (C < 0xa680) |
| return C; |
| // 14 characters |
| if (C <= 0xa69a) |
| return C | 1; |
| if (C < 0xa722) |
| return C; |
| // 7 characters |
| if (C <= 0xa72e) |
| return C | 1; |
| if (C < 0xa732) |
| return C; |
| // 31 characters |
| if (C <= 0xa76e) |
| return C | 1; |
| if (C < 0xa779) |
| return C; |
| // 2 characters |
| if (C <= 0xa77b && C % 2 == 1) |
| return C + 1; |
| // LATIN CAPITAL LETTER INSULAR G |
| if (C == 0xa77d) |
| return 0x1d79; |
| if (C < 0xa77e) |
| return C; |
| // 5 characters |
| if (C <= 0xa786) |
| return C | 1; |
| // LATIN CAPITAL LETTER SALTILLO |
| if (C == 0xa78b) |
| return 0xa78c; |
| // LATIN CAPITAL LETTER TURNED H |
| if (C == 0xa78d) |
| return 0x0265; |
| if (C < 0xa790) |
| return C; |
| // 2 characters |
| if (C <= 0xa792) |
| return C | 1; |
| if (C < 0xa796) |
| return C; |
| // 10 characters |
| if (C <= 0xa7a8) |
| return C | 1; |
| // LATIN CAPITAL LETTER H WITH HOOK |
| if (C == 0xa7aa) |
| return 0x0266; |
| // LATIN CAPITAL LETTER REVERSED OPEN E |
| if (C == 0xa7ab) |
| return 0x025c; |
| // LATIN CAPITAL LETTER SCRIPT G |
| if (C == 0xa7ac) |
| return 0x0261; |
| // LATIN CAPITAL LETTER L WITH BELT |
| if (C == 0xa7ad) |
| return 0x026c; |
| // LATIN CAPITAL LETTER SMALL CAPITAL I |
| if (C == 0xa7ae) |
| return 0x026a; |
| // LATIN CAPITAL LETTER TURNED K |
| if (C == 0xa7b0) |
| return 0x029e; |
| // LATIN CAPITAL LETTER TURNED T |
| if (C == 0xa7b1) |
| return 0x0287; |
| // LATIN CAPITAL LETTER J WITH CROSSED-TAIL |
| if (C == 0xa7b2) |
| return 0x029d; |
| // LATIN CAPITAL LETTER CHI |
| if (C == 0xa7b3) |
| return 0xab53; |
| if (C < 0xa7b4) |
| return C; |
| // 2 characters |
| if (C <= 0xa7b6) |
| return C | 1; |
| if (C < 0xab70) |
| return C; |
| // 80 characters |
| if (C <= 0xabbf) |
| return C + -38864; |
| if (C < 0xff21) |
| return C; |
| // 26 characters |
| if (C <= 0xff3a) |
| return C + 32; |
| if (C < 0x10400) |
| return C; |
| // 40 characters |
| if (C <= 0x10427) |
| return C + 40; |
| if (C < 0x104b0) |
| return C; |
| // 36 characters |
| if (C <= 0x104d3) |
| return C + 40; |
| if (C < 0x10c80) |
| return C; |
| // 51 characters |
| if (C <= 0x10cb2) |
| return C + 64; |
| if (C < 0x118a0) |
| return C; |
| // 32 characters |
| if (C <= 0x118bf) |
| return C + 32; |
| if (C < 0x1e900) |
| return C; |
| // 34 characters |
| if (C <= 0x1e921) |
| return C + 34; |
| |
| return C; |
| } |