From: Kevin Day Date: Fri, 29 May 2026 00:45:58 +0000 (-0500) Subject: Update: To Unicode 16. X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=ec3890e458438da20929dd747e9b0df105b6da74;p=fll Update: To Unicode 16. This gets the code base up to date with **Unicode 16**. I intend to follow this up with additional changes to update to **Unicode 17**. I discovered that I accidentally had the unit tests disabled for the **Unicode** is_* functions. Re-enable the tests and get things working. Also add a "is_control_picture" unit tests. I added additional logic that prints out useful information for when many of the **Unicode** related unit tests fail. I intend to slowly add more such logic to all of me units tests over time. I discovered that the combining characters might have marks in them that do not belong as punctuation. I will have to follow this up with a bug fix to address all of these cases. This will take some time. I did not correct the unit tests within this commit to avoid doing a lot of that work right now. I believe I also need to add is_mark functions to properly handle this and test for this. This is will be a new feature to fix a bug. I should also back port these changes to the 0.6.x series. I also made some structural changes by adding some more if conditionals in situations where it seemed like there were too many checks in a given block set. --- diff --git a/level_0/f_utf/c/private-utf_alphabetic.c b/level_0/f_utf/c/private-utf_alphabetic.c index 35cf5bdfe..1aa479351 100644 --- a/level_0/f_utf/c/private-utf_alphabetic.c +++ b/level_0/f_utf/c/private-utf_alphabetic.c @@ -36,9 +36,7 @@ extern "C" { return F_false; } - if (private_f_utf_character_is_control_picture(sequence)) { - return F_false; - } + // Skipping control pictures check because they are already represented in the is symbols check. if (private_f_utf_character_is_combining(sequence)) { return F_false; @@ -96,9 +94,7 @@ extern "C" { return F_false; } - if (private_f_utf_character_is_control_picture(sequence)) { - return F_false; - } + // Skipping control pictures check because they are already represented in the is symbols check. if (private_f_utf_character_is_whitespace(sequence, F_true)) { return F_false; @@ -152,9 +148,7 @@ extern "C" { return F_false; } - if (private_f_utf_character_is_control_picture(sequence)) { - return F_false; - } + // Skipping control pictures check because they are already represented in the is symbols check. if (private_f_utf_character_is_whitespace(sequence, F_true)) { return F_false; diff --git a/level_0/f_utf/c/private-utf_combining.c b/level_0/f_utf/c/private-utf_combining.c index d91904189..0679e5b6b 100644 --- a/level_0/f_utf/c/private-utf_combining.c +++ b/level_0/f_utf/c/private-utf_combining.c @@ -11,32 +11,34 @@ extern "C" { if (macro_f_utf_char_t_width_is(sequence) == 2) { - // Diacritical Marks: U+0300 to U+036F. - if (sequence >= 0xcc800000 && sequence <= 0xcdaf0000) { - return F_true; - } + if (macro_f_utf_char_t_to_char_1(sequence) >= 0xcc && macro_f_utf_char_t_to_char_1(sequence) <= 0xd8) { - // Cyrillic: U+0483 to U+0489. - if (sequence >= 0xd2830000 && sequence <= 0xd2890000) { - return F_true; - } + // Diacritical Marks: U+0300 to U+036F. + if (sequence >= 0xcc800000 && sequence <= 0xcdaf0000) { + return F_true; + } - // Hebrew: U+0591 to U+05BD. - if (sequence >= 0xd6910000 && sequence <= 0xd6bd0000) { - return F_true; - } + // Cyrillic: U+0483 to U+0489. + if (sequence >= 0xd2830000 && sequence <= 0xd2890000) { + return F_true; + } - // Hebrew: U+05C1 to U+05C7. - if (sequence >= 0xd7810000 && sequence <= 0xd7870000) { - return F_true; - } + // Hebrew: U+0591 to U+05BD. + if (sequence >= 0xd6910000 && sequence <= 0xd6bd0000) { + return F_true; + } - // Arabic: U+0610 to U+061A. - if (sequence >= 0xd8900000 && sequence <= 0xd89a0000) { - return F_true; - } + // Hebrew: U+05C1 to U+05C7. + if (sequence >= 0xd7810000 && sequence <= 0xd7870000) { + return F_true; + } - if (macro_f_utf_char_t_to_char_1(sequence) == 0xd9) { + // Arabic: U+0610 to U+061A. + if (sequence >= 0xd8900000 && sequence <= 0xd89a0000) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xd9) { // Arabic: U+064B to U+065F. if (sequence >= 0xd98b0000 && sequence <= 0xd99f0000) { @@ -116,1108 +118,1369 @@ extern "C" { if (macro_f_utf_char_t_to_char_1(sequence) == 0xe0) { - // Samaritan: U+0816 to U+0819. - if (sequence >= 0xe0a09600 && sequence <= 0xe0a09900) { - return F_true; - } + if (macro_f_utf_char_t_to_char_2(sequence) == 0xa0) { - // Samaritan: U+081B to U+0823. - if (sequence >= 0xe0a09b00 && sequence <= 0xe0a0a300) { - return F_true; - } + // Samaritan: U+0816 to U+0819. + if (sequence >= 0xe0a09600 && sequence <= 0xe0a09900) { + return F_true; + } - // Samaritan: U+0825 to U+0827. - if (sequence >= 0xe0a0a500 && sequence <= 0xe0a0a700) { - return F_true; - } + // Samaritan: U+081B to U+0823. + if (sequence >= 0xe0a09b00 && sequence <= 0xe0a0a300) { + return F_true; + } - // Samaritan: U+0829. - if (sequence == 0xe0a0a900) { - return F_true; - } + // Samaritan: U+0825 to U+0827. + if (sequence >= 0xe0a0a500 && sequence <= 0xe0a0a700) { + return F_true; + } - // Samaritan: U+082A to U+082D. - if (sequence >= 0xe0a0aa00 && sequence <= 0xe0a0ad00) { - return F_true; - } + // Samaritan: U+0829. + if (sequence == 0xe0a0a900) { + return F_true; + } - // Mandaic: U+0859 to U+085B. - if (sequence >= 0xe0a19900 && sequence <= 0xe0a19b00) { - return F_true; - } + // Samaritan: U+082A to U+082D. + if (sequence >= 0xe0a0aa00 && sequence <= 0xe0a0ad00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa1) { - // Arabic Extended-B: U+0898 to U+089F. - if (sequence >= 0xe0a29800 && sequence <= 0xe0a29f00) { - return F_true; + // Mandaic: U+0859 to U+085B. + if (sequence >= 0xe0a19900 && sequence <= 0xe0a19b00) { + return F_true; + } } - - // Arabic Extended-A: U+08CA to U+08FF. - if (sequence >= 0xe0a38a00 && sequence <= 0xe0a3bf00) { - return F_true; + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa2) { + + // Arabic Extended-B: U+0897 to U+089F. + if (sequence >= 0xe0a29700 && sequence <= 0xe0a29f00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa3) { + + // Arabic Extended-A: U+08CA to U+08FF. + if (sequence >= 0xe0a38a00 && sequence <= 0xe0a3bf00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa4) { - // Devanagari: U+0900 to U+0903. - if (sequence >= 0xe0a48000 && sequence <= 0xe0a48300) { - return F_true; + // Devanagari: U+0900 to U+0903. + if (sequence >= 0xe0a48000 && sequence <= 0xe0a48300) { + return F_true; + } + + // Devanagari: U+093A to U+093C. + if (sequence >= 0xe0a4ba00 && sequence <= 0xe0a4bc00) { + return F_true; + } + + // Devanagari: U+093E to U+093F. + if (sequence >= 0xe0a4be00 && sequence <= 0xe0a4bf00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa5) { + + // Devanagari: U+0940 to U+094F. + if (sequence >= 0xe0a58000 && sequence <= 0xe0a58f00) { + return F_true; + } + + // Devanagari: U+0951 to U+0957. + if (sequence >= 0xe0a59100 && sequence <= 0xe0a59700) { + return F_true; + } + + // Devanagari: U+0962 to U+0963. + if (sequence >= 0xe0a5a200 && sequence <= 0xe0a5a300) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa6) { + + // Bengali: U+0981 to U+0983. + if (sequence >= 0xe0a68100 && sequence <= 0xe0a68300) { + return F_true; + } + + // Bengali: U+09BC. + if (sequence == 0xe0a6bc00) { + return F_true; + } + + // Bengali: U+09BE to U+09BF. + if (sequence >= 0xe0a6be00 && sequence <= 0xe0a6bf00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa7) { + + // Bengali: U+09C0 to U+09C4. + if (sequence >= 0xe0a78000 && sequence <= 0xe0a78400) { + return F_true; + } + + // Bengali: U+09C7, U+09C8. + if (sequence == 0xe0a78700 || sequence == 0xe0a78800) { + return F_true; + } + + // Bengali: U+09CB to U+09CD. + if (sequence >= 0xe0a78b00 && sequence <= 0xe0a78d00) { + return F_true; + } + + // Bengali: U+09E2, U+09E3, U+09FE. + if (sequence == 0xe0a7a200 || sequence == 0xe0a7a300 || sequence == 0xe0a7be00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa8) { + + // Gurmukhi: U+0A01 to U+0A03. + if (sequence >= 0xe0a88100 && sequence <= 0xe0a88300) { + return F_true; + } + + // Gurmukhi: U+0A3C. + if (sequence == 0xe0a8bc00) { + return F_true; + } + + // Gurmukhi: U+0A3E to U+0A3F. + if (sequence >= 0xe0a8be00 && sequence <= 0xe0a8bf00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa9) { + + // Gurmukhi: U+0A40 to U+0A42. + if (sequence >= 0xe0a98000 && sequence <= 0xe0a98200) { + return F_true; + } + + // Gurmukhi: U+0A47 to U+0A48. + if (sequence >= 0xe0a98700 && sequence <= 0xe0a98800) { + return F_true; + } + + // Gurmukhi: U+0A4B to U+0A4D. + if (sequence >= 0xe0a98b00 && sequence <= 0xe0a98d00) { + return F_true; + } + + // Gurmukhi: U+0A51. + if (sequence == 0xe0a99100) { + return F_true; + } + + // Gurmukhi: U+0A70, U+0A71, U+0A75. + if (sequence == 0xe0a9b000 || sequence == 0xe0a9b100 || sequence == 0xe0a9b500) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaa) { + + // Gujarati: U+0A81 to U+0A82. + if (sequence >= 0xe0aa8100 && sequence <= 0xe0aa8200) { + return F_true; + } + + // Gujarati: U+0ABC. + if (sequence == 0xe0aabc00) { + return F_true; + } + + // Gujarati: U+0ABE to U+0ABF. + if (sequence >= 0xe0aabe00 && sequence <= 0xe0aabf00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xab) { + + // Gujarati: U+0AC0 to U+0AC5. + if (sequence >= 0xe0ab8000 && sequence <= 0xe0ab8500) { + return F_true; + } + + // Gujarati: U+0AC7 to U+0AC9. + if (sequence >= 0xe0ab8700 && sequence <= 0xe0ab8900) { + return F_true; + } + + // Gujarati: U+0ACB to U+0ACD. + if (sequence >= 0xe0ab8b00 && sequence <= 0xe0ab8d00) { + return F_true; + } + + // Gujarati: U+0AE2 to U+0AE3. + if (sequence >= 0xe0aba200 && sequence <= 0xe0aba300) { + return F_true; + } + + // Gujarati: U+0AFA to U+0AFF. + if (sequence >= 0xe0abba00 && sequence <= 0xe0abbf00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xac) { + + // Oriya: U+0B01, U+0B3C, U+0B3F. + if (sequence == 0xe0ac8100 || sequence == 0xe0acbc00 || sequence == 0xe0acbf00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xad) { + + // Oriya: U+0B41 to U+0B44. + if (sequence >= 0xe0ad8100 && sequence <= 0xe0ad8400) { + return F_true; + } + + // Oriya: U+0B4D, U+0B56, U+0B62, U+0B63. + if (sequence == 0xe0ad8d00 || sequence == 0xe0ad9600 || sequence == 0xe0ada200 || sequence == 0xe0ada300) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xae) { + // There are none here. + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaf) { + + // Tamil: U+0BC0, U+0BCD. + if (sequence == 0xe0af8000 || sequence == 0xe0af8d00) { + return F_true; + } } - - // Devanagari: U+093A to U+093C. - if (sequence >= 0xe0a4ba00 && sequence <= 0xe0a4bc00) { - return F_true; + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb0) { + + // Telugu: U+0C00. + if (sequence == 0xe0b08000) { + return F_true; + } + + // Telugu: U+0C3E to U+0C3F. + if (sequence >= 0xe0b0be00 && sequence <= 0xe0b0bf00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb1) { + + // Telugu: U+0C40. + if (sequence == 0xe0b18000) { + return F_true; + } - // Devanagari: U+093E to U+094F. - if (sequence >= 0xe0a4be00 && sequence <= 0xe0a58f00) { - return F_true; - } + // Telugu: U+0C46 to U+0C48. + if (sequence >= 0xe0b18600 && sequence <= 0xe0b18800) { + return F_true; + } - // Devanagari: U+0951 to U+0957. - if (sequence >= 0xe0a59100 && sequence <= 0xe0a59700) { - return F_true; - } + // Telugu: U+0C4A to U+0C4D. + if (sequence >= 0xe0b18a00 && sequence <= 0xe0b18d00) { + return F_true; + } - // Devanagari: U+0962 to U+0963. - if (sequence >= 0xe0a5a200 && sequence <= 0xe0a5a300) { - return F_true; + // Telugu: U+0C55, U+0C56, U+0C62, U+0C63. + if (sequence == 0xe0b19500 || sequence == 0xe0b19600 || sequence == 0xe0b1a200 || sequence == 0xe0b1a300) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb2) { - // Bengali: U+0981 to U+0983. - if (sequence >= 0xe0a68100 && sequence <= 0xe0a68300) { - return F_true; - } + // Kannada: U+0C81. + if (sequence == 0xe0b28100) { + return F_true; + } - // Bengali: U+09BC. - if (sequence == 0xe0a6bc00) { - return F_true; + // Kannada: U+0CBC to U+0CBF. + if (sequence >= 0xe0b2bc00 && sequence <= 0xe0b2bf00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb3) { - // Bengali: U+09BE to U+09C4. - if (sequence >= 0xe0a6be00 && sequence <= 0xe0a78400) { - return F_true; - } + // Kannada: U+0CC0 to U+0CCD. + if (sequence >= 0xe0b38000 && sequence <= 0xe0b38d00) { + return F_true; + } - // Bengali: U+09C7, U+09C8. - if (sequence == 0xe0a78700 || sequence == 0xe0a78800) { - return F_true; + // Kannada: U+0CE2, U+0CE3, U+0CF3. + if (sequence == 0xe0b3a200 || sequence == 0xe0b3a300 || sequence == 0xe0b3b300) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb4) { - // Bengali: U+09CB to U+09CD. - if (sequence >= 0xe0a78b00 && sequence <= 0xe0a78d00) { - return F_true; + // Malayalam: U+0D01. + if (sequence == 0xe0b48100) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb5) { - // Bengali: U+09E2, U+09E3, U+09FE. - if (sequence == 0xe0a7a200 || sequence == 0xe0a7a300 || sequence == 0xe0a7be00) { - return F_true; - } + // Malayalam: U+0D41 to U+0D44. + if (sequence >= 0xe0b58100 && sequence <= 0xe0b58400) { + return F_true; + } - // Gurmukhi: U+0A01 to U+0A03. - if (sequence >= 0xe0a88100 && sequence <= 0xe0a88300) { - return F_true; + // Malayalam: U+0D4D, U+0D62, U+0D63. + if (sequence == 0xe0b58d00 || sequence == 0xe0b5a200 || sequence == 0xe0b5a300) { + return F_true; + } } - - // Gurmukhi: U+0A3C. - if (sequence == 0xe0a8bc00) { - return F_true; + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb6) { + // There are none here. } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb7) { - // Gurmukhi: U+0A3E to U+0A42. - if (sequence >= 0xe0a8be00 && sequence <= 0xe0a98200) { - return F_true; - } + // Sinhala: U+0DCA. + if (sequence == 0xe0b78a00) { + return F_true; + } - // Gurmukhi: U+0A47 to U+0A48. - if (sequence >= 0xe0a98700 && sequence <= 0xe0a98800) { - return F_true; - } + // Sinhala: U+0DD2 to U+0DD4. + if (sequence >= 0xe0b79200 && sequence <= 0xe0b79400) { + return F_true; + } - // Gurmukhi: U+0A4B to U+0A4D. - if (sequence >= 0xe0a98b00 && sequence <= 0xe0a98d00) { - return F_true; + // Sinhala: U+0DD6. + if (sequence == 0xe0b79600) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb8) { - // Gurmukhi: U+0A51. - if (sequence == 0xe0a99100) { - return F_true; - } + // Thai: U+0E31. + if (sequence == 0xe0b8b100) { + return F_true; + } - // Gurmukhi: U+0A70, U+0A71, U+0A75. - if (sequence == 0xe0a9b000 || sequence == 0xe0a9b100 || sequence == 0xe0a9b500) { - return F_true; + // Thai: U+0E34 to U+0E3A. + if (sequence >= 0xe0b8b400 && sequence <= 0xe0b8ba00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb9) { - // Gujarati: U+0A81 to U+0A82. - if (sequence >= 0xe0aa8100 && sequence <= 0xe0aa8200) { - return F_true; + // Thai: U+0E47 to U+0E4E. + if (sequence >= 0xe0b98700 && sequence <= 0xe0b98e00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xba) { - // Gujarati: U+0ABC. - if (sequence == 0xe0aabc00) { - return F_true; - } + // Lao: U+0EB1. + if (sequence == 0xe0bab100) { + return F_true; + } - // Gujarati: U+0ABE to U+0AC5. - if (sequence >= 0xe0aabe00 && sequence <= 0xe0ab8500) { - return F_true; - } + // Lao: U+0EB4 to U+0EB9. + if (sequence >= 0xe0bab400 && sequence <= 0xe0bab900) { + return F_true; + } - // Gujarati: U+0AC7 to U+0AC9. - if (sequence >= 0xe0ab8700 && sequence <= 0xe0ab8900) { - return F_true; + // Lao: U+0EBB, U+0EBC. + if (sequence == 0xe0babb00 || sequence == 0xe0babc00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbb) { - // Gujarati: U+0ACB to U+0ACD. - if (sequence >= 0xe0ab8b00 && sequence <= 0xe0ab8d00) { - return F_true; + // Lao: U+0ECE. + if (sequence == 0xe0bb8e00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbc) { - // Gujarati: U+0AE2 to U+0AE3. - if (sequence >= 0xe0aba200 && sequence <= 0xe0aba300) { - return F_true; - } + // Tibetan: U+0F18 to U+0F19. + if (sequence >= 0xe0bc9800 && sequence <= 0xe0bc9900) { + return F_true; + } - // Gujarati: U+0AFA to U+0AFF. - if (sequence >= 0xe0abba00 && sequence <= 0xe0abbf00) { - return F_true; + // Tibetan: U+0F35, U+0F37, U+0F39. + if (sequence == 0xe0bcb500 || sequence == 0xe0bcb700 || sequence == 0xe0bcb900) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbd) { - // Oriya: U+0B01, U+0B3C, U+0B3F. - if (sequence == 0xe0ac8100 || sequence == 0xe0acbc00 || sequence == 0xe0acbf00) { - return F_true; + // Tibetan: U+0F71 to U+0F7E. + if (sequence >= 0xe0bdb100 && sequence <= 0xe0bdbe00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbe) { - // Oriya: U+0B41 to U+0B44. - if (sequence >= 0xe0ad8100 && sequence <= 0xe0ad8400) { - return F_true; - } + // Tibetan: U+0F80 to U+0F84. + if (sequence >= 0xe0be8000 && sequence <= 0xe0be8400) { + return F_true; + } - // Oriya: U+0B4D, U+0B56, U+0B62, U+0B63. - if (sequence == 0xe0ad8d00 || sequence == 0xe0ad9600 || sequence == 0xe0ada200 || sequence == 0xe0ada300) { - return F_true; - } + // Tibetan: U+0F86 to U+0F87. + if (sequence >= 0xe0be8600 && sequence <= 0xe0be8700) { + return F_true; + } - // Tamil: U+0BC0, U+0BCD. - if (sequence == 0xe0af8000 || sequence == 0xe0af8d00) { - return F_true; - } + // Tibetan: U+0F8D to U+0F97. + if (sequence >= 0xe0be8d00 && sequence <= 0xe0be9700) { + return F_true; + } - // Telugu: U+0C00. - if (sequence == 0xe0b08000) { - return F_true; + // Tibetan: U+0F99 to U+0FBC. + if (sequence >= 0xe0be9900 && sequence <= 0xe0bebc00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xbf) { - // Telugu: U+0C3E to U+0C40. - if (sequence >= 0xe0b0be00 && sequence <= 0xe0b18000) { - return F_true; + // Tibetan: U+0FC6. + if (sequence == 0xe0bf8600) { + return F_true; + } } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe1) { - // Telugu: U+0C46 to U+0C48. - if (sequence >= 0xe0b18600 && sequence <= 0xe0b18800) { - return F_true; + if (macro_f_utf_char_t_to_char_2(sequence) == 0x80) { + // Myanmar: U+102D to U+1030. + if (sequence >= 0xe180ad00 && sequence <= 0xe180b000) { + return F_true; + } + + // Myanmar: U+1039 to U+103A. + if (sequence >= 0xe180b900 && sequence <= 0xe180ba00) { + return F_true; + } + + // Myanmar: U+103D to U+103E. + if (sequence >= 0xe180bd00 && sequence <= 0xe180be00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x81) { - // Telugu: U+0C4A to U+0C4D. - if (sequence >= 0xe0b18a00 && sequence <= 0xe0b18d00) { - return F_true; + // Myanmar: U+1058 to U+1059. + if (sequence >= 0xe1819800 && sequence <= 0xe1819900) { + return F_true; + } + + // Myanmar: U+105E to U+1060. + if (sequence >= 0xe1819e00 && sequence <= 0xe181a000) { + return F_true; + } + + // Myanmar: U+1071 to U+1074. + if (sequence >= 0xe181b100 && sequence <= 0xe181b400) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x82) { - // Telugu: U+0C55, U+0C56, U+0C62, U+0C63. - if (sequence == 0xe0b19500 || sequence == 0xe0b19600 || sequence == 0xe0b1a200 || sequence == 0xe0b1a300) { - return F_true; + // Myanmar: U+1082, U+1085, U+1086, U+108D. + if (sequence == 0xe1828200 || sequence == 0xe1828500 || sequence == 0xe1828600 || sequence == 0xe1828d00) { + return F_true; + } + + // Myanmar: U+109D. + if (sequence == 0xe1829d00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) < 0x8d) { + // There are none here. + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x8d) { - // Kannada: U+0C81. - if (sequence == 0xe0b28100) { - return F_true; + // Ethiopic: U+135D to U+135F. + if (sequence >= 0xe18d9d00 && sequence <= 0xe18d9f00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) < 0x9c) { + // There are none here. } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9c) { - // Kannada: U+0CBC to U+0CCD. - if (sequence >= 0xe0b2bc00 && sequence <= 0xe0b38d00) { - return F_true; + // Tagalog: U+1712 to U+1714. + if (sequence >= 0xe19c9200 && sequence <= 0xe19c9400) { + return F_true; + } + + // Hanunoo: U+1732 to U+1734. + if (sequence >= 0xe19cb200 && sequence <= 0xe19cb400) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) { - // Kannada: U+0CE2, U+0CE3, U+0CF3. - if (sequence == 0xe0b3a200 || sequence == 0xe0b3a300 || sequence == 0xe0b3b300) { - return F_true; + // Buhid: U+1752 to U+1753. + if (sequence >= 0xe19d9200 && sequence <= 0xe19d9300) { + return F_true; + } + + // Tagbanwa: U+1772 to U+1773. + if (sequence >= 0xe19db200 && sequence <= 0xe19db300) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9e) { - // Malayalam: U+0D01. - if (sequence == 0xe0b48100) { - return F_true; + // Khmer: U+17B4 to U+17B5. + if (sequence >= 0xe19eb400 && sequence <= 0xe19eb500) { + return F_true; + } + + // Khmer: U+17B7 to U+17BD. + if (sequence >= 0xe19eb700 && sequence <= 0xe19ebd00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9f) { - // Malayalam: U+0D41 to U+0D44. - if (sequence >= 0xe0b58100 && sequence <= 0xe0b58400) { - return F_true; + // Khmer: U+17C6, U+17C9. + if (sequence == 0xe19f8600 || sequence == 0xe19f8900) { + return F_true; + } + + // Khmer: U+17CA to U+17D3. + if (sequence >= 0xe19f8a00 && sequence <= 0xe19f9300) { + return F_true; + } + + // Khmer: U+17DD. + if (sequence == 0xe19f9d00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa0) { - // Malayalam: U+0D4D, U+0D62, U+0D63. - if (sequence == 0xe0b58d00 || sequence == 0xe0b5a200 || sequence == 0xe0b5a300) { - return F_true; + // Mongolian: U+180B to U+180D. + if (sequence >= 0xe1a08b00 && sequence <= 0xe1a08d00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa1) { + // There are none here. } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa2) { - // Sinhala: U+0DCA. - if (sequence == 0xe0b78a00) { - return F_true; + // Mongolian: U+18A9. + if (sequence == 0xe1a2a900) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa3) { + // There are none here. + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa4) { - // Sinhala: U+0DD2 to U+0DD4. - if (sequence >= 0xe0b79200 && sequence <= 0xe0b79400) { - return F_true; + // Mongolian: U+1920 to U+1922. + if (sequence >= 0xe1a4a000 && sequence <= 0xe1a4a200) { + return F_true; + } + + // Limbu: U+1927, U+1928, U+1932. + if (sequence == 0xe1a4a700 || sequence == 0xe1a4a800 || sequence == 0xe1a4b200) { + return F_true; + } + + // Limbu: U+1939 to U+193B. + if (sequence >= 0xe1a4b900 && sequence <= 0xe1a4bb00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) < 0xa8) { + // There are none here. } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa8) { - // Sinhala: U+0DD6. - if (sequence == 0xe0b79600) { - return F_true; + // Buginese: U+1A17 to U+1A18. + if (sequence >= 0xe1a89700 && sequence <= 0xe1a89800) { + return F_true; + } + + // Buginese: U+1A1B. + if (sequence == 0xe1a89b00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa9) { - // Thai: U+0E31. - if (sequence == 0xe0b8b100) { - return F_true; + // Tai Tham: U+1A56. + if (sequence == 0xe1a99600) { + return F_true; + } + + // Tai Tham: U+1A58 to U+1A5E. + if (sequence >= 0xe1a99800 && sequence <= 0xe1a99e00) { + return F_true; + } + + // Tai Tham: U+1A60, U+1A62. + if (sequence == 0xe1a9a000 || sequence == 0xe1a9a200) { + return F_true; + } + + // Tai Tham: U+1A65 to U+1A6C. + if (sequence >= 0xe1a9a500 && sequence <= 0xe1a9ac00) { + return F_true; + } + + // Tai Tham: U+1A73 to U+1A7C. + if (sequence >= 0xe1a9b300 && sequence <= 0xe1a9bc00) { + return F_true; + } + + // Tai Tham: U+1A7F. + if (sequence == 0xe1a9bf00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaa) { + + // Diacritical Marks Extended: U+1AB0 to U+1ABF. + if (sequence >= 0xe1aab000 && sequence <= 0xe1aabf00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xab) { - // Thai: U+0E34 to U+0E3A. - if (sequence >= 0xe0b8b400 && sequence <= 0xe0b8ba00) { - return F_true; + // Diacritical Marks Extended: U+1AC0 to U+1ACE. + if (sequence >= 0xe1ab8000 && sequence <= 0xe1ab8e00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xac) { - // Thai: U+0E47 to U+0E4E. - if (sequence >= 0xe0b98700 && sequence <= 0xe0b98e00) { - return F_true; + // Balinese: U+1B00 to U+1B04. + if (sequence >= 0xe1ac8000 && sequence <= 0xe1ac8400) { + return F_true; + } + + // Balinese: U+1B34 to U+1B3F. + if (sequence >= 0xe1acb400 && sequence <= 0xe1acbf00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xad) { - // Lao: U+0EB1. - if (sequence == 0xe0bab100) { - return F_true; + // Balinese: U+1B40 to U+1B44. + if (sequence >= 0xe1ad8000 && sequence <= 0xe1ad8400) { + return F_true; + } + + // Balinese: U+1B6B to U+1B73. + if (sequence >= 0xe1adab00 && sequence <= 0xe1adb300) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xae) { + + // Sundanese: U+1B80 to U+1B81. + if (sequence >= 0xe1ae8000 && sequence <= 0xe1ae8100) { + return F_true; + } + + // Sundanese: U+1BA2 to U+1BA5. + if (sequence >= 0xe1aea200 && sequence <= 0xe1aea500) { + return F_true; + } - // Lao: U+0EB4 to U+0EB9. - if (sequence >= 0xe0bab400 && sequence <= 0xe0bab900) { - return F_true; + // Sundanese: U+1BA8 to U+1BA9. + if (sequence >= 0xe1aea800 && sequence <= 0xe1aea900) { + return F_true; + } + + // Sundanese: U+1BAB to U+1BAD. + if (sequence >= 0xe1aeab00 && sequence <= 0xe1aead00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaf) { + + // Batak: U+1BE6, U+1BE8, U+1BE9, U+1BED. + if (sequence == 0xe1afa600 || sequence == 0xe1afa800 || sequence == 0xe1afa900 || sequence == 0xe1afad00) { + return F_true; + } + + // Batak: U+1BEF, U+1BF0, U+1BF1. + if (sequence == 0xe1afaf00 || sequence == 0xe1afb000 || sequence == 0xe1afb100) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb0) { + + // Lepcha: U+1C2C to U+1C33. + if (sequence >= 0xe1b0ac00 && sequence <= 0xe1b0b300) { + return F_true; + } + + // Lepcha: U+1C36 to U+1C37. + if (sequence >= 0xe1b0b600 && sequence <= 0xe1b0b700) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) < 0xb3) { + // There are none here. } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb3) { - // Lao: U+0EBB, U+0EBC, U+0ECE. - if (sequence == 0xe0babb00 || sequence == 0xe0babc00 || sequence == 0xe0bb8e00) { - return F_true; + // Vedic Extensions: U+1CD0 to U+1CD2. + if (sequence >= 0xe1b39000 && sequence <= 0xe1b39200) { + return F_true; + } + + // Vedic Extensions: U+1CD4 to U+1CE8. + if (sequence >= 0xe1b39400 && sequence <= 0xe1b3a800) { + return F_true; + } + + // Vedic Extensions: U+1CED, U+1CF4, U+1CF8, U+1CF9. + if (sequence == 0xe1b3ad00 || sequence == 0xe1b3b400 || sequence == 0xe1b3b800 || sequence == 0xe1b3b900) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb7) { - // Tibetan: U+0F18 to U+0F19. - if (sequence >= 0xe0bc9800 && sequence <= 0xe0bc9900) { - return F_true; + // Diacritical Marks Supplement: U+1DC0 to U+1DFF. + if (sequence >= 0xe1b78000 && sequence <= 0xe1b7bf00) { + return F_true; + } + + // Diacritical Marks Supplement: U+1DFB to U+1DFF. + if (sequence >= 0xe1b7bb00 && sequence <= 0xe1b7bf00) { + return F_true; + } } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe2) { - // Tibetan: U+0F35, U+0F37, U+0F39. - if (sequence == 0xe0bcb500 || sequence == 0xe0bcb700 || sequence == 0xe0bcb900) { + // Diacritical Marks For Symbols: U+20D0 to U+20F0. + if (sequence >= 0xe2839000 && sequence <= 0xe283b000) { return F_true; } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe3) { - // Tibetan: U+0F71 to U+0F7E. - if (sequence >= 0xe0bdb100 && sequence <= 0xe0bdbe00) { + // CJK Symbols and Punctuation: U+302A to U+302D. + if (sequence >= 0xe380aa00 && sequence <= 0xe380ad00) { return F_true; } - // Tibetan: U+0F80 to U+0F84. - if (sequence >= 0xe0be8000 && sequence <= 0xe0be8400) { + // Hiragana: U+3099, U+309A. + if (sequence == 0xe3829900 || sequence == 0xe3829a00) { return F_true; } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xea) { - // Tibetan: U+0F86 to U+0F87. - if (sequence >= 0xe0be8600 && sequence <= 0xe0be8700) { - return F_true; + if (macro_f_utf_char_t_to_char_2(sequence) == 0x99) { + // Cyrillic Extended-B: U+3099. + if (sequence == 0xea99af00) { + return F_true; + } + + // Cyrillic Extended-B: U+A66F to U+A672. + if (sequence >= 0xea99af00 && sequence <= 0xea99b200) { + return F_true; + } + + // Cyrillic Extended-B: U+A674 to U+A67F. + if (sequence >= 0xea99b400 && sequence <= 0xea99bf00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9a) { - // Tibetan: U+0F8D to U+0F97. - if (sequence >= 0xe0be8d00 && sequence <= 0xe0be9700) { - return F_true; + // Cyrillic Extended-B: U+A680 to U+A69F. + if (sequence >= 0xea9a8000 && sequence <= 0xea9a9f00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9b) { - // Tibetan: U+0F99 to U+0FBC. - if (sequence >= 0xe0be9900 && sequence <= 0xe0bebc00) { - return F_true; + // Bamum: U+A6F0 to U+A6F1. + if (sequence >= 0xea9bb000 && sequence <= 0xea9bb100) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) < 0xa0) { + // There are none here. } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa0) { - // Tibetan: U+0FC6. - if (sequence == 0xe0bf8600) { - return F_true; + // Syloti Nagri: U+A802, U+A806, U+A80B, U+A825. + if (sequence == 0xeaa08200 || sequence == 0xeaa08600 || sequence == 0xeaa08b00 || sequence == 0xeaa0a500) { + return F_true; + } + + // Syloti Nagri: U+A826. + if (sequence == 0xeaa0a600) { + return F_true; + } } - } - else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe1) { + else if (macro_f_utf_char_t_to_char_2(sequence) < 0xa3) { + //There are none here. + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa3) { - // Myanmar: U+102D to U+1030. - if (sequence >= 0xe180ad00 && sequence <= 0xe180b000) { - return F_true; + // Saurashtra: U+A8C4, U+A8C5. + if (sequence == 0xeaa38400 || sequence == 0xeaa38500) { + return F_true; + } + + // Devanagari Extended: U+A8E0 to U+A8F1. + if (sequence >= 0xeaa3a000 && sequence <= 0xeaa3b100) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa4) { - // Myanmar: U+1039 to U+103A. - if (sequence >= 0xe180b900 && sequence <= 0xe180ba00) { - return F_true; + // Kayah Li: U+A926 to U+A92D. + if (sequence >= 0xeaa4a600 && sequence <= 0xeaa4ad00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa5) { - // Myanmar: U+103D to U+103E. - if (sequence >= 0xe180bd00 && sequence <= 0xe180be00) { - return F_true; + // Rejang: U+A947 to U+A951. + if (sequence >= 0xeaa58700 && sequence <= 0xeaa59100) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa6) { - // Myanmar: U+1058 to U+1059. - if (sequence >= 0xe1819800 && sequence <= 0xe1819900) { - return F_true; + // Javanese: U+A980 to U+A982. + if (sequence >= 0xeaa68000 && sequence <= 0xeaa68200) { + return F_true; + } + + // Javanese: U+A9B3. + if (sequence == 0xeaa6b300) { + return F_true; + } + + // Javanese: U+A9B6 to U+A9B9. + if (sequence >= 0xeaa6b600 && sequence <= 0xeaa6b900) { + return F_true; + } + + // Javanese: U+A9BC. + if (sequence == 0xeaa6bc00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa7) { - // Myanmar: U+105E to U+1060. - if (sequence >= 0xe1819e00 && sequence <= 0xe181a000) { - return F_true; + // Myanmar Extended-B: U+A9E5. + if (sequence == 0xeaa7a500) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa8) { - // Myanmar: U+1071 to U+1074. - if (sequence >= 0xe181b100 && sequence <= 0xe181b400) { - return F_true; + // Cham: U+AA29 to U+AA2E. + if (sequence >= 0xeaa8a900 && sequence <= 0xeaa8ae00) { + return F_true; + } + + // Cham: U+AA31 to U+AA32. + if (sequence >= 0xeaa8b100 && sequence <= 0xeaa8b200) { + return F_true; + } + + // Cham: U+AA35 to U+AA36. + if (sequence >= 0xeaa8b500 && sequence <= 0xeaa8b600) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xa9) { - // Myanmar: U+1082, U+1085, U+1086, U+108D. - if (sequence == 0xe1828200 || sequence == 0xe1828500 || sequence == 0xe1828600 || sequence == 0xe1828d00) { - return F_true; + // Cham: U+AA43, U+AA4C. + if (sequence == 0xeaa98300 || sequence == 0xeaa98c00) { + return F_true; + } + + // Tai Viet: U+AA7C. + if (sequence == 0xeaa9bc00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaa) { - // Myanmar: U+109D. - if (sequence == 0xe1829d00) { - return F_true; + // Tai Viet: U+AAB0. + if (sequence == 0xeaaab000) { + return F_true; + } + + // Tai Viet: U+AAB2 to U+AAB4. + if (sequence >= 0xeaaab200 && sequence <= 0xeaaab400) { + return F_true; + } + + // Tai Viet: U+AAB7 to U+AAB8. + if (sequence >= 0xeaaab700 && sequence <= 0xeaaab800) { + return F_true; + } + + // Tai Viet: U+AABE to U+AABF. + if (sequence >= 0xeaaabe00 && sequence <= 0xeaaabf00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xab) { - // Ethiopic: U+135D to U+135F. - if (sequence >= 0xe18d9d00 && sequence <= 0xe18d9f00) { - return F_true; + // Tai Viet: U+AAC1. + if (sequence == 0xeaab8100) { + return F_true; + } + + // Meetei Mayek Extensions: U+AAEC, U+AAED, U+AAF6. + if (sequence == 0xeaabac00 || sequence == 0xeaabad00 || sequence == 0xeaabb600) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xaf) { - // Tagalog: U+1712 to U+1714. - if (sequence >= 0xe19c9200 && sequence <= 0xe19c9400) { - return F_true; + // Meetei Mayek: U+ABE5, U+ABE8, U+ABED. + if (sequence == 0xeaafa500 || sequence == 0xeaafa800 || sequence == 0xeaafad00) { + return F_true; + } } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xef) { - // Hanunoo: U+1732 to U+1734. - if (sequence >= 0xe19cb200 && sequence <= 0xe19cb400) { - return F_true; + if (macro_f_utf_char_t_to_char_2(sequence) == 0xac) { + + // Alphabetic Presentation Forms: U+FB1E. + if (sequence == 0xefac9e00) { + return F_true; + } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0xb8) { - // Buhid: U+1752 to U+1753. - if (sequence >= 0xe19d9200 && sequence <= 0xe19d9300) { - return F_true; + // Variation Selectors: U+FE00 to U+FE0F. + if (sequence >= 0xefb88000 && sequence <= 0xefb88f00) { + return F_true; + } + + // Variation Selectors: U+FE20 to U+FE0F. + if (sequence >= 0xefb88000 && sequence <= 0xefb88f00) { + return F_true; + } + + // Combining Half Marks: U+FE20 to U+FE2F. + if (sequence >= 0xefb8a000 && sequence <= 0xefb8af00) { + return F_true; + } } + } - // Tagbanwa: U+1772 to U+1773. - if (sequence >= 0xe19db200 && sequence <= 0xe19db300) { + return F_false; + } + + if (macro_f_utf_char_t_to_char_1(sequence) == 0xf0) { + + if (macro_f_utf_char_t_to_char_2(sequence) == 0x90) { + + // Phaistos Disc: U+101FD. + if (sequence == 0xf09087bd) { return F_true; } - // Khmer: U+17B4 to U+17B5. - if (sequence >= 0xe19eb400 && sequence <= 0xe19eb500) { + // Coptic Epact Numbers: U+102E0. + if (sequence == 0xf0908ba0) { return F_true; } - // Khmer: U+17B7 to U+17BD. - if (sequence >= 0xe19eb700 && sequence <= 0xe19ebd00) { + // Old Permic: U+10376 to U+1037A. + if (sequence >= 0xf0908db6 && sequence <= 0xf0908dba) { return F_true; } - // Khmer: U+17C6, U+17C9. - if (sequence == 0xe19f8600 || sequence == 0xe19f8900) { + // Kharoshthi: U+10A01 to U+10A03. + if (sequence >= 0xf090a881 && sequence <= 0xf090a883) { return F_true; } - // Khmer: U+17CA to U+17D3. - if (sequence >= 0xe19f8a00 && sequence <= 0xe19f9300) { + // Kharoshthi: U+10A01, U+10A03, U+10A05, U+10A06. + if (sequence == 0xf090a881 || sequence == 0xf090a883 || sequence == 0xf090a885 || sequence == 0xf090a886) { return F_true; } - // Khmer: U+17DD. - if (sequence == 0xe19f9d00) { + // Kharoshthi: U+10A0C to U+10A0F. + if (sequence >= 0xf090a88c && sequence <= 0xf090a88f) { return F_true; } - // Mongolian: U+180B to U+180D. - if (sequence >= 0xe1a08b00 && sequence <= 0xe1a08d00) { + // Kharoshthi: U+10A38 to U+10A3A. + if (sequence >= 0xf090a8b8 && sequence <= 0xf090a8ba) { return F_true; } - // Mongolian: U+18A9. - if (sequence == 0xe1a2a900) { + // Kharoshthi: U+10A3F. + if (sequence == 0xf090a8bf) { return F_true; } - // Mongolian: U+1920 to U+1922. - if (sequence >= 0xe1a4a000 && sequence <= 0xe1a4a200) { + // Manichaean: U+10AE5, U+10AE6. + if (sequence == 0xf090aba5 || sequence == 0xf090aba6) { return F_true; } - // Limbu: U+1927, U+1928, U+1932. - if (sequence == 0xe1a4a700 || sequence == 0xe1a4a800 || sequence == 0xe1a4b200) { + // Hanifi Rohingya: U+10D24 to U+10D27. + if (sequence >= 0xf090b4a3 && sequence <= 0xf090b4a7) { return F_true; } - // Limbu: U+1939 to U+193B. - if (sequence >= 0xe1a4b900 && sequence <= 0xe1a4bb00) { + // Garay: U+10D69 to U+10D6A. + if (sequence >= 0xf090b5a9 && sequence <= 0xf090b5aa) { return F_true; } - // Buginese: U+1A17 to U+1A18. - if (sequence >= 0xe1a89700 && sequence <= 0xe1a89800) { + // Yezidi: U+10EAB to U+10EAD. + if (sequence >= 0xf090baab && sequence <= 0xf090baad) { return F_true; } - // Buginese: U+1A1B. - if (sequence == 0xe1a89b00) { + // Arabic Extended-C: U+10EFC to U+10EFF. + if (sequence >= 0xf090bbbc && sequence <= 0xf090bbbf) { return F_true; } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x91) { - // Tai Tham: U+1A56. - if (sequence == 0xe1a99600) { + // Brahmi: U+11001. + if (sequence == 0xf0918081) { return F_true; } - // Tai Tham: U+1A58 to U+1A5E. - if (sequence >= 0xe1a99800 && sequence <= 0xe1a99e00) { + // Brahmi: U+11038 to U+11046. + if (sequence >= 0xf09180b8 && sequence <= 0xf0918186) { return F_true; } - // Tai Tham: U+1A60, U+1A62. - if (sequence == 0xe1a9a000 || sequence == 0xe1a9a200) { + // Brahmi .. Kaithi: U+1107F to U+11081. + if (sequence >= 0xf09181bf && sequence <= 0xf0918281) { return F_true; } - // Tai Tham: U+1A65 to U+1A6C. - if (sequence >= 0xe1a9a500 && sequence <= 0xe1a9ac00) { + // Kaithi: U+110B3 to U+110B6. + if (sequence >= 0xf09182b3 && sequence <= 0xf09182b6) { return F_true; } - // Tai Tham: U+1A73 to U+1A7C. - if (sequence >= 0xe1a9b300 && sequence <= 0xe1a9bc00) { + // Kaithi: U+110B9, U+110BA. + if (sequence == 0xf09182b9 || sequence == 0xf09182ba) { return F_true; } - // Tai Tham: U+1A7F. - if (sequence == 0xe1a9bf00) { + // Chakma: U+11100 to U+11102. + if (sequence >= 0xf0918480 && sequence <= 0xf0918482) { return F_true; } - // Diacritical Marks Extended: U+1AB0 to U+1ACE. - if (sequence >= 0xe1aab000 && sequence <= 0xe1ab8e00) { + // Chakma: U+11127 to U+1112B. + if (sequence >= 0xf09184a7 && sequence <= 0xf09184ab) { return F_true; } - // Balinese: U+1B00 to U+1B03. - if (sequence >= 0xe1ac8000 && sequence <= 0xe1ac8300) { + // Chakma: U+1112D to U+11134. + if (sequence >= 0xf09184ad && sequence <= 0xf09184b4) { return F_true; } - // Balinese: U+1B34. - if (sequence == 0xe1acb400) { + // Mahajani: U+11173. + if (sequence == 0xf09185b3) { return F_true; } - // Balinese: U+1B36 to U+1B3A. - if (sequence >= 0xe1acb600 && sequence <= 0xe1acba00) { + // Sharada: U+11180 to U+11181. + if (sequence >= 0xf0918680 && sequence <= 0xf0918681) { return F_true; } - // Balinese: U+1B3C, U+1B42. - if (sequence == 0xe1acbc00 || sequence == 0xe1ad8200) { + // Sharada: U+111B6 to U+111BE. + if (sequence >= 0xf09186b6 && sequence <= 0xf09186be) { return F_true; } - // Balinese: U+1B6B to U+1B73. - if (sequence >= 0xe1adab00 && sequence <= 0xe1adb300) { + // Sharada: U+111CA to U+111CC. + if (sequence >= 0xf091878a && sequence <= 0xf091878c) { return F_true; } - // Sundanese: U+1B80 to U+1B81. - if (sequence >= 0xe1ae8000 && sequence <= 0xe1ae8100) { + // Sharada: U+111CA to U+111CC. + if (sequence >= 0xf091878a && sequence <= 0xf091878c) { return F_true; } - // Sundanese: U+1BA2 to U+1BA5. - if (sequence >= 0xe1aea200 && sequence <= 0xe1aea500) { + // Khojki: U+1122F to U+11231. + if (sequence >= 0xf09188af && sequence <= 0xf09188b1) { return F_true; } - // Sundanese: U+1BA8 to U+1BA9. - if (sequence >= 0xe1aea800 && sequence <= 0xe1aea900) { + // Khojki: U+11234, U+11236, U+11237. + if (sequence == 0xf09188b4 || sequence == 0xf09188b6 || sequence == 0xf09188b7) { return F_true; } - // Sundanese: U+1BAB to U+1BAD. - if (sequence >= 0xe1aeab00 && sequence <= 0xe1aead00) { + // Khudawadi: U+112DF, U+112DF. + if (sequence == 0xf0918b9f || sequence == 0xf0918b9f) { return F_true; } - // Batak: U+1BE6, U+1BE8, U+1BE9, U+1BED. - if (sequence == 0xe1afa600 || sequence == 0xe1afa800 || sequence == 0xe1afa900 || sequence == 0xe1afad00) { + // Khojki: U+112E3 to U+112EA. + if (sequence >= 0xf0918ba3 && sequence <= 0xf0918baa) { return F_true; } - // Batak: U+1BEF, U+1BF0, U+1BF1. - if (sequence == 0xe1afaf00 || sequence == 0xe1afb000 || sequence == 0xe1afb100) { + // Grantha: U+11300, U+11301, U+1133C, U+11340. + if (sequence == 0xf0918c80 || sequence == 0xf0918c81 || sequence == 0xf0918cbc || sequence == 0xf0918d80) { return F_true; } - // Lepcha: U+1C2C to U+1C33. - if (sequence >= 0xe1b0ac00 && sequence <= 0xe1b0b300) { + // Grantha: U+11366 to U+1136C. + if (sequence >= 0xf0918da6 && sequence <= 0xf0918dac) { return F_true; } - // Lepcha: U+1C36 to U+1C37. - if (sequence >= 0xe1b0b600 && sequence <= 0xe1b0b700) { + // Grantha: U+11370 to U+11374. + if (sequence >= 0xf0918db0 && sequence <= 0xf0918db4) { return F_true; } - // Vedic Extensions: U+1CD2 to U+1CD4. - if (sequence >= 0xe1b39200 && sequence <= 0xe1b39400) { + // Tirhuta: U+114B3 to U+114B8. + if (sequence >= 0xf09192b3 && sequence <= 0xf09192b8) { return F_true; } - // Vedic Extensions: U+1CD0 to U+1CE0. - if (sequence >= 0xe1b39000 && sequence <= 0xe1b3a000) { + // Tirhuta: U+114BA, U+114BF, U+114C0, U+114C2. + if (sequence == 0xf09192ba || sequence == 0xf09192bf || sequence == 0xf0919380 || sequence == 0xf0919382) { return F_true; } - // Vedic Extensions: U+1CE2 to U+1CE8. - if (sequence >= 0xe1b3a200 && sequence <= 0xe1b3a800) { + // Tirhuta: U+114C3. + if (sequence == 0xf0919383) { return F_true; } - // Vedic Extensions: U+1CED, U+1CF4, U+1CF8, U+1CF9. - if (sequence == 0xe1b3ad00 || sequence == 0xe1b3b400 || sequence == 0xe1b3b800 || sequence == 0xe1b3b900) { + // Siddham: U+115B2 to U+115B5. + if (sequence >= 0xf09196b2 && sequence <= 0xf09196b5) { return F_true; } - // Vedic Extensions: U+1CE8 to U+1DC0. - if (sequence >= 0xe1b3a800 && sequence <= 0xe1b78000) { + // Siddham: U+115BC to U+115BD. + if (sequence >= 0xf09196bc && sequence <= 0xf09196bd) { return F_true; } - // Diacritical Marks Supplement: U+1DC0 to U+1DFF. - if (sequence >= 0xe1b78000 && sequence <= 0xe1b7bf00) { + // Siddham: U+115BF, U+115C0, U+115DC, U+115DD. + if (sequence == 0xf09196bf || sequence == 0xf0919780 || sequence == 0xf091979c || sequence == 0xf091979d) { return F_true; } - // Diacritical Marks Supplement: U+1DFB to U+1DFF. - if (sequence >= 0xe1b7bb00 && sequence <= 0xe1b7bf00) { + // Tulu-Tigalari: U+113B8 to U+113C0. + if (sequence >= 0xf0918eb8 && sequence <= 0xf0918f80) { return F_true; } - } - else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe2) { - // Diacritical Marks For Symbols: U+20D0 to U+20F0. - if (sequence >= 0xe2839000 && sequence <= 0xe283b000) { + // Tulu-Tigalari: U+113C2, U+113C5. + if (sequence == 0xf0918f82 || sequence == 0xf0918f85) { return F_true; } - } - else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe3) { - // CJK Symbols and Punctuation: U+302A to U+302D. - if (sequence >= 0xe380aa00 && sequence <= 0xe380ad00) { + // Tulu-Tigalari: U+113C7 to U+113CA. + if (sequence >= 0xf0918f87 && sequence <= 0xf0918f8a) { return F_true; } - // Hiragana: U+3099, U+309A. - if (sequence == 0xe3829900 || sequence == 0xe3829a00) { + // Tulu-Tigalari: U+113CC to U+113D2. + if (sequence >= 0xf0918f8C && sequence <= 0xf0918f92) { return F_true; } - } - else if (macro_f_utf_char_t_to_char_1(sequence) == 0xea) { - // Cyrillic Extended-B: U+3099. - if (sequence == 0xea99af00) { + // Tulu-Tigalari: U+113E1 to U+113E2. + if (sequence >= 0xf0918fa1 && sequence <= 0xf0918fa2) { return F_true; } - // Cyrillic Extended-B: U+A66F to U+A672. - if (sequence >= 0xea99af00 && sequence <= 0xea99b200) { + // Modi: U+11633 to U+1163A. + if (sequence >= 0xf09198b3 && sequence <= 0xf09198ba) { return F_true; } - // Cyrillic Extended-B: U+A674 to U+A69F. - if (sequence >= 0xea99b400 && sequence <= 0xea9a9f00) { + // Modi: U+1163D to U+11640. + if (sequence >= 0xf09198bd && sequence <= 0xf0919980) { return F_true; } - // Bamum: U+A6F0 to U+A6F1. - if (sequence >= 0xea9bb000 && sequence <= 0xea9bb100) { + // Takri: U+116AB, U+116AD. + if (sequence == 0xf0919aab || sequence == 0xf0919aad) { return F_true; } - // Syloti Nagri: U+A802, U+A806, U+A80B, U+A825. - if (sequence == 0xeaa08200 || sequence == 0xeaa08600 || sequence == 0xeaa08b00 || sequence == 0xeaa0a500) { + // Takri: U+116B0 to U+116B5. + if (sequence >= 0xf0919ab0 && sequence <= 0xf0919ab5) { return F_true; } - // Syloti Nagri: U+A826. - if (sequence == 0xeaa0a600) { + // Takri: U+116B7. + if (sequence == 0xf0919ab7) { return F_true; } - // Saurashtra: U+A8C4, U+A8C5. - if (sequence == 0xeaa38400 || sequence == 0xeaa38500) { + // Ahom: U+1171D to U+1171F. + if (sequence >= 0xf0919c9d && sequence <= 0xf0919c9f) { return F_true; } - // Devanagari Extended: U+A8E0 to U+A8F1. - if (sequence >= 0xeaa3a000 && sequence <= 0xeaa3b100) { + // Ahom: U+11722 to U+11725. + if (sequence >= 0xf0919ca2 && sequence <= 0xf0919ca5) { return F_true; } - // Kayah Li: U+A926 to U+A92D. - if (sequence >= 0xeaa4a600 && sequence <= 0xeaa4ad00) { + // Ahom: U+11727 to U+1172B. + if (sequence >= 0xf0919ca7 && sequence <= 0xf0919cab) { return F_true; } - // Rejang: U+A947 to U+A951. - if (sequence >= 0xeaa58700 && sequence <= 0xeaa59100) { + // Kawi: U+11F00 to U+11F03. + if (sequence >= 0xf091bc80 && sequence <= 0xf091bc83) { return F_true; } - // Javanese: U+A980 to U+A982. - if (sequence >= 0xeaa68000 && sequence <= 0xeaa68200) { + // Kawi: U+11F34 to U+11F3A. + if (sequence >= 0xf091bcb4 && sequence <= 0xf091bcba) { return F_true; } - // Javanese: U+A9B3. - if (sequence == 0xeaa6b300) { + // Kawi: U+11F3E to U+11F42. + if (sequence >= 0xf091bcbe && sequence <= 0xf091bd82) { return F_true; } - // Javanese: U+A9B6 to U+A9B9. - if (sequence >= 0xeaa6b600 && sequence <= 0xeaa6b900) { + // Kawi: U+11F5A. + if (sequence == 0xf091bd9a) { return F_true; } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) { - // Javanese: U+A9BC. - if (sequence == 0xeaa6bc00) { + // Gurung Khema: U+1611E to U+1612F. + if (sequence >= 0xf096849e && sequence <= 0xf09684af) { return F_true; } - // Myanmar Extended-B: U+A9E5. - if (sequence == 0xeaa7a500) { + // Bassa Vah: U+16AF0 to U+16AF4. + if (sequence >= 0xf096abb0 && sequence <= 0xf096abb4) { return F_true; } - // Cham: U+AA29 to U+AA2E. - if (sequence >= 0xeaa8a900 && sequence <= 0xeaa8ae00) { + // Pahawh Hmong: U+16B30 to U+16B36. + if (sequence >= 0xf096acb0 && sequence <= 0xf096acb6) { return F_true; } - // Cham: U+AA31 to U+AA32. - if (sequence >= 0xeaa8b100 && sequence <= 0xeaa8b200) { + // Miao: U+16F8F to U+16F92. + if (sequence >= 0xf096be8f && sequence <= 0xf096be92) { return F_true; } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9b) { - // Cham: U+AA35 to U+AA36. - if (sequence >= 0xeaa8b500 && sequence <= 0xeaa8b600) { + // Duployan: U+1BC9D to U+1BC9E. + if (sequence >= 0xf09bb29d && sequence <= 0xf09bb29e) { return F_true; } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) { - // Cham: U+AA43, U+AA4C. - if (sequence == 0xeaa98300 || sequence == 0xeaa98c00) { + // Musical Symbols: U+1D167 to U+1D169. + if (sequence >= 0xf09d85a7 && sequence <= 0xf09d85a9) { return F_true; } - // Tai Viet: U+AA7C. - if (sequence == 0xeaa9bc00) { + // Musical Symbols: U+1D17B to U+1D182. + if (sequence >= 0xf09d85bb && sequence <= 0xf09d8682) { return F_true; } - // Tai Viet: U+AAB0. - if (sequence == 0xeaaab000) { + // Musical Symbols: U+1D185 to U+1D18B. + if (sequence >= 0xf09d8685 && sequence <= 0xf09d868b) { return F_true; } - // Tai Viet: U+AAB2 to U+AAB4. - if (sequence >= 0xeaaab200 && sequence <= 0xeaaab400) { + // Musical Symbols: U+1D1AA to U+1D1AD. + if (sequence >= 0xf09d86aa && sequence <= 0xf09d86ad) { return F_true; } - // Tai Viet: U+AAB7 to U+AAB8. - if (sequence >= 0xeaaab700 && sequence <= 0xeaaab800) { + // Ancient Greek Musical Notation: U+1D242 to U+1D244. + if (sequence >= 0xf09d8982 && sequence <= 0xf09d8984) { return F_true; } - // Tai Viet: U+AABE to U+AABF. - if (sequence >= 0xeaaabe00 && sequence <= 0xeaaabf00) { + // Sutton SignWriting: U+1DA00 to U+1DA36. + if (sequence >= 0xf09da880 && sequence <= 0xf09da8b6) { return F_true; } - // Tai Viet: U+AAC1. - if (sequence == 0xeaab8100) { + // Sutton SignWriting: U+1DA3B to U+1DA6C. + if (sequence >= 0xf09da8bb && sequence <= 0xf09da9ac) { return F_true; } - // Meetei Mayek Extensions: U+AAEC, U+AAED, U+AAF6. - if (sequence == 0xeaabac00 || sequence == 0xeaabad00 || sequence == 0xeaabb600) { + // Sutton SignWriting: U+1DA75, U+1DA84. + if (sequence == 0xf09da9b5 || sequence == 0xf09daa84) { return F_true; } - // Meetei Mayek: U+ABE5, U+ABE8, U+ABED. - if (sequence == 0xeaafa500 || sequence == 0xeaafa800 || sequence == 0xeaafad00) { + // Sutton SignWriting: U+1DA9B to U+1DA9F. + if (sequence >= 0xf09daa9b && sequence <= 0xf09daa9f) { return F_true; } - } - else if (macro_f_utf_char_t_to_char_1(sequence) == 0xef) { - // Alphabetic Presentation Forms: U+FB1E. - if (sequence == 0xefac9e00) { + // Sutton SignWriting: U+1DAA1 to U+1DAAF. + if (sequence >= 0xf09daaa1 && sequence <= 0xf09daaaf) { return F_true; } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9e) { - // Variation Selectors: U+FE00 to U+FE0F. - if (sequence >= 0xefb88000 && sequence <= 0xefb88f00) { + // Cyrillic Extended-D: U+1E08F. + if (sequence == 0xf09e828f) { return F_true; } - // Variation Selectors: U+FE20 to U+FE0F. - if (sequence >= 0xefb88000 && sequence <= 0xefb88f00) { + // Nag Mundari: U+1E4EC to U+1E4EF. + if (sequence >= 0xf09e93ac && sequence <= 0xf09e93af) { return F_true; } - // Combining Half Marks: U+FE20 to U+FE2F. - if (sequence >= 0xefb8a000 && sequence <= 0xefb8af00) { + // Mende Kikakui: U+1E8D0 to U+1E8D6. + if (sequence >= 0xf09ea390 && sequence <= 0xf09ea396) { return F_true; } } - return F_false; + return false; } - // Phaistos Disc: U+101FD. - if (sequence == 0xf09087bd) { - return F_true; - } - - // Coptic Epact Numbers: U+102E0. - if (sequence == 0xf0908ba0) { - return F_true; - } + if (macro_f_utf_char_t_to_char_1(sequence) == 0xf3) { - // Old Permic: U+10376 to U+1037A. - if (sequence >= 0xf0908db6 && sequence <= 0xf0908dba) { - return F_true; - } - - // Kharoshthi: U+10A01 to U+10A03. - if (sequence >= 0xf090a881 && sequence <= 0xf090a883) { - return F_true; - } - - // Kharoshthi: U+10A01, U+10A03, U+10A05, U+10A06. - if (sequence == 0xf090a881 || sequence == 0xf090a883 || sequence == 0xf090a885 || sequence == 0xf090a886) { - return F_true; - } - - // Kharoshthi: U+10A0C to U+10A0F. - if (sequence >= 0xf090a88c && sequence <= 0xf090a88f) { - return F_true; - } - - // Kharoshthi: U+10A38 to U+10A3A. - if (sequence >= 0xf090a8b8 && sequence <= 0xf090a8ba) { - return F_true; - } - - // Kharoshthi: U+10A3F. - if (sequence == 0xf090a8bf) { - return F_true; - } - - // Manichaean: U+10AE5, U+10AE6. - if (sequence == 0xf090aba5 || sequence == 0xf090aba6) { - return F_true; - } - - // Hanifi Rohingya: U+10D24 to U+10D27. - if (sequence >= 0xf090b4a3 && sequence <= 0xf090b4a7) { - return F_true; - } - - // Yezidi: U+10EAB to U+10EAD. - if (sequence >= 0xf090baab && sequence <= 0xf090baad) { - return F_true; - } - - // Arabic Extended-C: U+10EFD to U+10EFF. - if (sequence >= 0xf090bbbd && sequence <= 0xf090bbbf) { - return F_true; - } - - // Brahmi: U+11001. - if (sequence == 0xf0918081) { - return F_true; - } - - // Brahmi: U+11038 to U+11046. - if (sequence >= 0xf09180b8 && sequence <= 0xf0918186) { - return F_true; - } - - // Brahmi .. Kaithi: U+1107F to U+11081. - if (sequence >= 0xf09181bf && sequence <= 0xf0918281) { - return F_true; - } - - // Kaithi: U+110B3 to U+110B6. - if (sequence >= 0xf09182b3 && sequence <= 0xf09182b6) { - return F_true; - } - - // Kaithi: U+110B9, U+110BA. - if (sequence == 0xf09182b9 || sequence == 0xf09182ba) { - return F_true; - } - - // Chakma: U+11100 to U+11102. - if (sequence >= 0xf0918480 && sequence <= 0xf0918482) { - return F_true; - } - - // Chakma: U+11127 to U+1112B. - if (sequence >= 0xf09184a7 && sequence <= 0xf09184ab) { - return F_true; - } - - // Chakma: U+1112D to U+11134. - if (sequence >= 0xf09184ad && sequence <= 0xf09184b4) { - return F_true; - } - - // Mahajani: U+11173. - if (sequence == 0xf09185b3) { - return F_true; - } - - // Sharada: U+11180 to U+11181. - if (sequence >= 0xf0918680 && sequence <= 0xf0918681) { - return F_true; - } - - // Sharada: U+111B6 to U+111BE. - if (sequence >= 0xf09186b6 && sequence <= 0xf09186be) { - return F_true; - } - - // Sharada: U+111CA to U+111CC. - if (sequence >= 0xf091878a && sequence <= 0xf091878c) { - return F_true; - } - - // Sharada: U+111CA to U+111CC. - if (sequence >= 0xf091878a && sequence <= 0xf091878c) { - return F_true; - } - - // Kawi: U+11F00 to U+11F03. - if (sequence >= 0xf091bc80 && sequence <= 0xf091bc83) { - return F_true; - } - - // Kawi: U+11F34 to U+11F3A. - if (sequence >= 0xf091bcb4 && sequence <= 0xf091bcba) { - return F_true; - } - - // Kawi: U+11F3E to U+11F42. - if (sequence >= 0xf091bcbe && sequence <= 0xf091bd82) { - return F_true; - } - - // Khojki: U+1122F to U+11231. - if (sequence >= 0xf09188af && sequence <= 0xf09188b1) { - return F_true; - } - - // Khojki: U+11234, U+11236, U+11237. - if (sequence == 0xf09188b4 || sequence == 0xf09188b6 || sequence == 0xf09188b7) { - return F_true; - } - - // Khudawadi: U+112DF, U+112DF. - if (sequence == 0xf0918b9f || sequence == 0xf0918b9f) { - return F_true; - } - - // Khojki: U+112E3 to U+112EA. - if (sequence >= 0xf0918ba3 && sequence <= 0xf0918baa) { - return F_true; - } - - // Grantha: U+11300, U+11301, U+1133C, U+11340. - if (sequence == 0xf0918c80 || sequence == 0xf0918c81 || sequence == 0xf0918cbc || sequence == 0xf0918d80) { - return F_true; - } - - // Grantha: U+11366 to U+1136C. - if (sequence >= 0xf0918da6 && sequence <= 0xf0918dac) { - return F_true; - } - - // Grantha: U+11370 to U+11374. - if (sequence >= 0xf0918db0 && sequence <= 0xf0918db4) { - return F_true; - } - - // Tirhuta: U+114B3 to U+114B8. - if (sequence >= 0xf09192b3 && sequence <= 0xf09192b8) { - return F_true; - } - - // Tirhuta: U+114BA, U+114BF, U+114C0, U+114C2. - if (sequence == 0xf09192ba || sequence == 0xf09192bf || sequence == 0xf0919380 || sequence == 0xf0919382) { - return F_true; - } - - // Tirhuta: U+114C3. - if (sequence == 0xf0919383) { - return F_true; - } - - // Siddham: U+115B2 to U+115B5. - if (sequence >= 0xf09196b2 && sequence <= 0xf09196b5) { - return F_true; - } - - // Siddham: U+115BC to U+115BD. - if (sequence >= 0xf09196bc && sequence <= 0xf09196bd) { - return F_true; - } - - // Siddham: U+115BF, U+115C0, U+115DC, U+115DD. - if (sequence == 0xf09196bf || sequence == 0xf0919780 || sequence == 0xf091979c || sequence == 0xf091979d) { - return F_true; - } - - // Modi: U+11633 to U+1163A. - if (sequence >= 0xf09198b3 && sequence <= 0xf09198ba) { - return F_true; - } - - // Modi: U+1163D to U+11640. - if (sequence >= 0xf09198bd && sequence <= 0xf0919980) { - return F_true; - } - - // Takri: U+116AB, U+116AD. - if (sequence == 0xf0919aab || sequence == 0xf0919aad) { - return F_true; - } - - // Takri: U+116B0 to U+116B5. - if (sequence >= 0xf0919ab0 && sequence <= 0xf0919ab5) { - return F_true; - } - - // Takri: U+116B7. - if (sequence == 0xf0919ab7) { - return F_true; - } - - // Ahom: U+1171D to U+1171F. - if (sequence >= 0xf0919c9d && sequence <= 0xf0919c9f) { - return F_true; - } - - // Ahom: U+11722 to U+11725. - if (sequence >= 0xf0919ca2 && sequence <= 0xf0919ca5) { - return F_true; - } - - // Ahom: U+11727 to U+1172B. - if (sequence >= 0xf0919ca7 && sequence <= 0xf0919cab) { - return F_true; - } - - // Bassa Vah: U+16AF0 to U+16AF4. - if (sequence >= 0xf096abb0 && sequence <= 0xf096abb4) { - return F_true; - } - - // Pahawh Hmong: U+16B30 to U+16B36. - if (sequence >= 0xf096acb0 && sequence <= 0xf096acb6) { - return F_true; - } - - // Miao: U+16F8F to U+16F92. - if (sequence >= 0xf096be8f && sequence <= 0xf096be92) { - return F_true; - } - - // Duployan: U+1BC9D to U+1BC9E. - if (sequence >= 0xf09bb29d && sequence <= 0xf09bb29e) { - return F_true; - } - - // Musical Symbols: U+1D167 to U+1D169. - if (sequence >= 0xf09d85a7 && sequence <= 0xf09d85a9) { - return F_true; - } - - // Musical Symbols: U+1D17B to U+1D182. - if (sequence >= 0xf09d85bb && sequence <= 0xf09d8682) { - return F_true; - } - - // Musical Symbols: U+1D185 to U+1D18B. - if (sequence >= 0xf09d8685 && sequence <= 0xf09d868b) { - return F_true; - } - - // Musical Symbols: U+1D1AA to U+1D1AD. - if (sequence >= 0xf09d86aa && sequence <= 0xf09d86ad) { - return F_true; - } - - // Ancient Greek Musical Notation: U+1D242 to U+1D244. - if (sequence >= 0xf09d8982 && sequence <= 0xf09d8984) { - return F_true; - } - - // Sutton SignWriting: U+1DA00 to U+1DA36. - if (sequence >= 0xf09da880 && sequence <= 0xf09da8b6) { - return F_true; - } - - // Sutton SignWriting: U+1DA3B to U+1DA6C. - if (sequence >= 0xf09da8bb && sequence <= 0xf09da9ac) { - return F_true; - } - - // Sutton SignWriting: U+1DA75, U+1DA84. - if (sequence == 0xf09da9b5 || sequence == 0xf09daa84) { - return F_true; - } - - // Sutton SignWriting: U+1DA9B to U+1DA9F. - if (sequence >= 0xf09daa9b && sequence <= 0xf09daa9f) { - return F_true; - } - - // Sutton SignWriting: U+1DAA1 to U+1DAAF. - if (sequence >= 0xf09daaa1 && sequence <= 0xf09daaaf) { - return F_true; - } - - // Cyrillic Extended-D: U+1E08F. - if (sequence == 0xf09e828f) { - return F_true; - } - - // Nag Mundari: U+1E4EC to U+1E4EF. - if (sequence >= 0xf09e93ac && sequence <= 0xf09e93af) { - return F_true; - } - - // Mende Kikakui: U+1E8D0 to U+1E8D6. - if (sequence >= 0xf09ea390 && sequence <= 0xf09ea396) { - return F_true; - } + // Variation Selectors Supplement: U+E0100 to U+E01EF. + if (sequence >= 0xf3a08480 && sequence <= 0xf3a087af) { + return F_true; + } - // Variation Selectors Supplement: U+E0100 to U+E01EF. - if (sequence >= 0xf3a08480 && sequence <= 0xf3a087af) { - return F_true; + return false; } return F_false; diff --git a/level_0/f_utf/c/private-utf_control.c b/level_0/f_utf/c/private-utf_control.c index d12cec645..f4f801f17 100644 --- a/level_0/f_utf/c/private-utf_control.c +++ b/level_0/f_utf/c/private-utf_control.c @@ -251,13 +251,13 @@ extern "C" { } #endif // !defined(_di_f_utf_character_is_control_format_) || !defined(_di_f_utf_is_control_format_) -#if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) +#if !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_is_control_picture_) f_status_t private_f_utf_character_is_control_picture(const f_utf_char_t sequence) { if (macro_f_utf_char_t_width_is(sequence) == 3) { - // Control Pictures: U+2400 to U+2426. - if (sequence >= 0xe2908000 && sequence <= 0xe290a600) { + // Control Pictures: U+2400 to U+2429. + if (sequence >= 0xe2908000 && sequence <= 0xe290a900) { return F_true; } @@ -269,7 +269,7 @@ extern "C" { return F_false; } -#endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) +#endif // !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_is_control_picture_) #ifdef __cplusplus } // extern "C" diff --git a/level_0/f_utf/c/private-utf_control.h b/level_0/f_utf/c/private-utf_control.h index 7fba9b64f..641644d45 100644 --- a/level_0/f_utf/c/private-utf_control.h +++ b/level_0/f_utf/c/private-utf_control.h @@ -108,22 +108,12 @@ extern "C" { * F_utf_fragment (with error bit) if character is a UTF-8 fragment. * F_utf_not (with error bit) if unicode is an invalid Unicode character. * - * @see f_utf_character_is_alphabetic_digit() - * @see f_utf_character_is_alphabetic_numeric() * @see f_utf_character_is_control_picture() - * @see f_utf_character_is_word() - * @see f_utf_character_is_word_dash() - * @see f_utf_character_is_word_dash_plus() - * @see f_utf_is_alphabetic_digit() - * @see f_utf_is_alphabetic_numeric() * @see f_utf_is_control_picture() - * @see f_utf_is_word() - * @see f_utf_is_word_dash() - * @see f_utf_is_word_dash_plus) */ -#if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) +#if !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_is_control_picture_) extern f_status_t private_f_utf_character_is_control_picture(const f_utf_char_t sequence) F_attribute_visibility_internal_d; -#endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) +#endif // !defined(_di_f_utf_character_is_control_picture_) || !defined(_di_f_utf_is_control_picture_) #ifdef __cplusplus } // extern "C" diff --git a/level_0/f_utf/c/private-utf_digit.c b/level_0/f_utf/c/private-utf_digit.c index b9d88753f..45936b0b9 100644 --- a/level_0/f_utf/c/private-utf_digit.c +++ b/level_0/f_utf/c/private-utf_digit.c @@ -3739,6 +3739,11 @@ extern "C" { return F_true; } + // Garay: U+10D40 to U+10D49. + if (sequence >= 0xf090b5a9 && sequence <= 0xf090b5aa) { + return private_inline_f_utf_character_handle_digit(sequence, 0xf090b5a9, value); + } + // Rumi Numeral Symbols: U+10E60 to U+10E7A. if (sequence >= 0xf090b9a0 && sequence <= 0xf090b9ba) { @@ -4146,6 +4151,20 @@ extern "C" { return private_inline_f_utf_character_handle_digit(sequence, 0xf0919b80, value); } + // Myanmar Extended-C: U+116D0 to U+116E3. + if (sequence >= 0xf0919b90 && sequence <= 0xf0919ba3) { + + // Myanmar Extended-C: U+116D0 to U+116D9. + if (sequence >= 0xf0919b90 && sequence <= 0xf0919b99) { + return private_inline_f_utf_character_handle_digit(sequence, 0xf0919b90, value); + } + + // Myanmar Extended-C: U+116DA to U+116E3. + if (sequence >= 0xf0919b9a && sequence <= 0xf0919ba3) { + return private_inline_f_utf_character_handle_digit(sequence, 0xf0919b9a, value); + } + } + // Ahom: U+11730 to U+11739. if (sequence >= 0xf0919cb0 && sequence <= 0xf0919cb9) { return private_inline_f_utf_character_handle_digit(sequence, 0xf0919cb0, value); @@ -4161,6 +4180,11 @@ extern "C" { return private_inline_f_utf_character_handle_digit(sequence, 0xf091a590, value); } + // Sunuwar: U+11BF0 to U+11BF9. + if (sequence >= 0xf091afb0 && sequence <= 0xf091afb9) { + return private_inline_f_utf_character_handle_digit(sequence, 0xf091afb0, value); + } + // Bhaiksuki: U+11C50 to U+11C59. if (sequence >= 0xf091b190 && sequence <= 0xf091b199) { return private_inline_f_utf_character_handle_digit(sequence, 0xf091b190, value); @@ -5087,8 +5111,16 @@ extern "C" { } } } + else if (macro_f_utf_char_t_to_char_2(sequence) < 0x96) { + // There are none here. + } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) { + // Gurung Khema: U+16130 to U+16139. + if (sequence >= 0xf09684b0 && sequence <= 0xf09684b9) { + return private_inline_f_utf_character_handle_digit(sequence, 0xf09684b0, value); + } + // Mro: U+16A60 to U+16A69. if (sequence >= 0xf096a9a0 && sequence <= 0xf096a9a9) { return private_inline_f_utf_character_handle_digit(sequence, 0xf096a9a0, value); @@ -5169,6 +5201,11 @@ extern "C" { return F_true; } + // Kirat Rai: U+16D70 to U+16D79. + if (sequence >= 0xf096b5b0 && sequence <= 0xf096b5b9) { + return private_inline_f_utf_character_handle_digit(sequence, 0xf096b5b0, value); + } + // Medefaidrin: U+16E80 to U+16E96. if (sequence >= 0xf096ba80 && sequence <= 0xf096ba96) { @@ -5186,6 +5223,13 @@ extern "C" { return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xf096ba94, value); } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9c) { + + // Symbols for Legacy Computing Supplement: U+1CCF0 to U+1CCF9. + if (sequence >= 0xf09cb3b0 && sequence <= 0xf09cb3b9) { + return private_inline_f_utf_character_handle_digit(sequence, 0xf09cb3b0, value); + } + } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) { // Kaktovik Numerals: U+1D2C0 to U+1D2D3. @@ -5395,6 +5439,11 @@ extern "C" { return private_inline_f_utf_character_handle_digit(sequence, 0xf09e93b0, value); } + // Ol Onal: U+1E5F1 to U+1E5FA. + if (sequence >= 0xf09e97b1 && sequence <= 0xf09e97ba) { + return private_inline_f_utf_character_handle_digit(sequence, 0xf09e97b1, value); + } + // Mende Kikakui: U+1E8C7 to U+1E8CF. if (sequence >= 0xf09ea387 && sequence <= 0xf09ea38f) { return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xf09ea387, value); @@ -6248,7 +6297,7 @@ extern "C" { return F_true; } - // Symbols for Legacy Computing (Segmented): U+1FBF0 to U+1FBF9. + // Symbols for Legacy Computing: U+1FBF0 to U+1FBF9. if (sequence >= 0xf09fafb0 && sequence <= 0xf09fafb9) { return private_inline_f_utf_character_handle_digit(sequence, 0xf09fafb0, value); } diff --git a/level_0/f_utf/c/private-utf_emoji.c b/level_0/f_utf/c/private-utf_emoji.c index 0f683bf99..9ffb28b3f 100644 --- a/level_0/f_utf/c/private-utf_emoji.c +++ b/level_0/f_utf/c/private-utf_emoji.c @@ -263,249 +263,246 @@ extern "C" { if (macro_f_utf_char_t_to_char_2(sequence) == 0x9f) { - // Mahjong Tiles: U+1F004. - if (sequence == 0xf09f8084) { - return F_true; - } - - // Playing Cards: U+1F0CF to U+1F171. - if (sequence >= 0xf09f8084 && sequence <= 0xf09f85b1) { - return F_true; - } - - // Enclosed Alphanumeric Supplement: U+1F17E, U+1F17F, U+1F18E. - if (sequence == 0xf09f85be || sequence == 0xf09f85bf || sequence == 0xf09f868e) { - return F_true; - } - - // Enclosed Alphanumeric Supplement: U+1F191 to U+1F19A. - if (sequence >= 0xf09f8691 && sequence <= 0xf09f869a) { - return F_true; - } - - // Enclosed Alphanumeric Supplement: U+1F1E6. - if (sequence == 0xf09f87a6) { - return F_true; - } - - // Enclosed Ideographic Supplement: U+1F201, U+1F202, U+1F21A, U+1F22F. - if (sequence == 0xf09f8881 || sequence == 0xf09f8882 || sequence == 0xf09f889a || sequence == 0xf09f88af) { - return F_true; - } - - // Enclosed Ideographic Supplement: U+1F232 to U+1F23A. - if (sequence >= 0xf09f88b2 && sequence <= 0xf09f88ba) { - return F_true; - } - - // Enclosed Ideographic Supplement: U+1F250, U+1F251. - if (sequence == 0xf09f8990 || sequence == 0xf09f8991) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F300 to U+1F321. - if (sequence >= 0xf09f8c80 && sequence <= 0xf09f8ca1) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F324 to U+1F393. - if (sequence >= 0xf09f8ca4 && sequence <= 0xf09f8e93) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F396, U+1F397. - if (sequence == 0xf09f8e96 || sequence == 0xf09f8e97) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F399 to U+1F39B. - if (sequence >= 0xf09f8e99 && sequence <= 0xf09f8e9b) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F39E to U+1F3F0. - if (sequence >= 0xf09f8e9e && sequence <= 0xf09f8fb0) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F3F3 to U+1F3F5. - if (sequence >= 0xf09f8fb3 && sequence <= 0xf09f8fb5) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F3F7 to U+1F4FD. - if (sequence >= 0xf09f8fb7 && sequence <= 0xf09f93bd) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F4FF to U+1F53D. - if (sequence >= 0xf09f93bf && sequence <= 0xf09f94bd) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F549 to U+1F54E. - if (sequence >= 0xf09f9589 && sequence <= 0xf09f958e) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F550 to U+1F567. - if (sequence >= 0xf09f9590 && sequence <= 0xf09f95a7) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F56F, U+1F570. - if (sequence == 0xf09f95af || sequence == 0xf09f95b0) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F573 to U+1F57A. - if (sequence >= 0xf09f95b3 && sequence <= 0xf09f95ba) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F587. - if (sequence == 0xf09f9687) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F58A to U+1F58D. - if (sequence >= 0xf09f968a && sequence <= 0xf09f968d) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F590, U+1F595, U+1F596, U+1F5A4. - if (sequence == 0xf09f9690 || sequence == 0xf09f9695 || sequence == 0xf09f9696 || sequence == 0xf09f96a4) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F5A5, U+1F5A8, U+1F5B1, U+1F5B2. - if (sequence == 0xf09f96a5 || sequence == 0xf09f96a8 || sequence == 0xf09f96b1 || sequence == 0xf09f96b2) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F5BC. - if (sequence == 0xf09f96bc) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F5C2 to U+1F5C4. - if (sequence >= 0xf09f9782 && sequence <= 0xf09f9784) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F5D1 to U+1F5D3. - if (sequence >= 0xf09f9791 && sequence <= 0xf09f9793) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F5DC to U+1F5DE. - if (sequence >= 0xf09f979c && sequence <= 0xf09f979e) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F5E1, U+1F5E3, U+1F5E8, U+1F5EF. - if (sequence == 0xf09f97a1 || sequence == 0xf09f97a3 || sequence == 0xf09f97a8 || sequence == 0xf09f97af) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F5F3. - if (sequence == 0xf09f97b3) { - return F_true; - } - - // Miscellaneous Symbols and Pictographs: U+1F5FA to U+1F6C5. - if (sequence >= 0xf09f97ba && sequence <= 0xf09f9b85) { - return F_true; - } - - // Transport and Map Symbols: U+1F6CB to U+1F6D2. - if (sequence >= 0xf09f9b8b && sequence <= 0xf09f9b92) { - return F_true; - } - - // Transport and Map Symbols: U+1F6D5 to U+1F6D7. - if (sequence >= 0xf09f9b95 && sequence <= 0xf09f9b97) { - return F_true; - } - - // Transport and Map Symbols: U+1F6DC to U+1F6DF. - if (sequence >= 0xf09f9b9c && sequence <= 0xf09f9b9f) { - return F_true; - } - - // Transport and Map Symbols: U+1F6E0 to U+1F6E5. - if (sequence >= 0xf09f9ba0 && sequence <= 0xf09f9ba5) { - return F_true; - } - - // Transport and Map Symbols: U+1F6E9, U+1F6EB, U+1F6EC, U+1F6F0. - if (sequence == 0xf09f9ba9 || sequence == 0xf09f9bab || sequence == 0xf09f9bac || sequence == 0xf09f9bb0) { - return F_true; - } - - // Transport and Map Symbols: U+1F6F3 to U+1F6FC. - if (sequence >= 0xf09f9bb3 && sequence <= 0xf09f9bbc) { - return F_true; - } - - // Geometric Shapes Extended: U+1F7E0 to U+1F7EB. - if (sequence >= 0xf09f9fa0 && sequence <= 0xf09f9fab) { - return F_true; - } - - // Geometric Shapes Extended: U+1F7F0. - if (sequence == 0xf09f9fb0) { - return F_true; - } - - // Supplemental Symbols and Pictographs: U+1F90C to U+1F93A. - if (sequence >= 0xf09fa48c && sequence <= 0xf09fa4ba) { - return F_true; - } - - // Supplemental Symbols and Pictographs: U+1F93C to U+1F945. - if (sequence >= 0xf09fa4bc && sequence <= 0xf09fa585) { - return F_true; - } - - // Supplemental Symbols and Pictographs to Symbols and Pictographs Extended-A: U+1F947 to U+U+1FA74. - if (sequence >= 0xf09fa587 && sequence <= 0xf09fa9b4) { - return F_true; - } - - // Symbols and Pictographs Extended-A: U+1FA70 to U+1FA7C. - if (sequence >= 0xf09fa9b0 && sequence <= 0xf09fa9bc) { - return F_true; - } - - // Symbols and Pictographs Extended-A: U+1FA80 to U+1FA88. - if (sequence >= 0xf09faa80 && sequence <= 0xf09faa88) { - return F_true; - } - - // Symbols and Pictographs Extended-A: U+1FA90 to U+1FABD. - if (sequence >= 0xf09faa90 && sequence <= 0xf09faabd) { - return F_true; - } - - // Symbols and Pictographs Extended-A: U+1FABF to U+1FAC5. - if (sequence >= 0xf09faabf && sequence <= 0xf09fab85) { - return F_true; - } - - // Symbols and Pictographs Extended-A: U+1FACE to U+1FADB. - if (sequence >= 0xf09fab8e && sequence <= 0xf09fab9b) { - return F_true; - } - - // Symbols and Pictographs Extended-A: U+1FAE0 to U+1FAE8. - if (sequence >= 0xf09faba0 && sequence <= 0xf09faba8) { - return F_true; - } - - // Symbols and Pictographs Extended-A: U+1FAF0 to U+1FAF8. - if (sequence >= 0xf09fabb0 && sequence <= 0xf09fabb8) { - return F_true; + if (macro_f_utf_char_t_to_char_3(sequence) <= 0x8f) { + + // Mahjong Tiles: U+1F004. + if (sequence == 0xf09f8084) { + return F_true; + } + + // Playing Cards: U+1F0CF to U+1F171. + if (sequence >= 0xf09f8084 && sequence <= 0xf09f85b1) { + return F_true; + } + + // Enclosed Alphanumeric Supplement: U+1F17E, U+1F17F, U+1F18E. + if (sequence == 0xf09f85be || sequence == 0xf09f85bf || sequence == 0xf09f868e) { + return F_true; + } + + // Enclosed Alphanumeric Supplement: U+1F191 to U+1F19A. + if (sequence >= 0xf09f8691 && sequence <= 0xf09f869a) { + return F_true; + } + + // Enclosed Alphanumeric Supplement: U+1F1E6. + if (sequence == 0xf09f87a6) { + return F_true; + } + + // Enclosed Ideographic Supplement: U+1F201, U+1F202, U+1F21A, U+1F22F. + if (sequence == 0xf09f8881 || sequence == 0xf09f8882 || sequence == 0xf09f889a || sequence == 0xf09f88af) { + return F_true; + } + + // Enclosed Ideographic Supplement: U+1F232 to U+1F23A. + if (sequence >= 0xf09f88b2 && sequence <= 0xf09f88ba) { + return F_true; + } + + // Enclosed Ideographic Supplement: U+1F250, U+1F251. + if (sequence == 0xf09f8990 || sequence == 0xf09f8991) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F300 to U+1F321. + if (sequence >= 0xf09f8c80 && sequence <= 0xf09f8ca1) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F324 to U+1F393. + if (sequence >= 0xf09f8ca4 && sequence <= 0xf09f8e93) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F396, U+1F397. + if (sequence == 0xf09f8e96 || sequence == 0xf09f8e97) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F399 to U+1F39B. + if (sequence >= 0xf09f8e99 && sequence <= 0xf09f8e9b) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F39E to U+1F3F0. + if (sequence >= 0xf09f8e9e && sequence <= 0xf09f8fb0) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F3F3 to U+1F3F5. + if (sequence >= 0xf09f8fb3 && sequence <= 0xf09f8fb5) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F3F7 to U+1F3FF. + if (sequence >= 0xf09f8fb7 && sequence <= 0xf09f8fbf) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_3(sequence) <= 0x9f) { + + // Miscellaneous Symbols and Pictographs: U+1F400 to U+1F4FD. + if (sequence >= 0xf09f9080 && sequence <= 0xf09f93bd) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F4FF to U+1F53D. + if (sequence >= 0xf09f93bf && sequence <= 0xf09f94bd) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F549 to U+1F54E. + if (sequence >= 0xf09f9589 && sequence <= 0xf09f958e) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F550 to U+1F567. + if (sequence >= 0xf09f9590 && sequence <= 0xf09f95a7) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F56F, U+1F570. + if (sequence == 0xf09f95af || sequence == 0xf09f95b0) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F573 to U+1F57A. + if (sequence >= 0xf09f95b3 && sequence <= 0xf09f95ba) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F587. + if (sequence == 0xf09f9687) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F58A to U+1F58D. + if (sequence >= 0xf09f968a && sequence <= 0xf09f968d) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F590, U+1F595, U+1F596, U+1F5A4. + if (sequence == 0xf09f9690 || sequence == 0xf09f9695 || sequence == 0xf09f9696 || sequence == 0xf09f96a4) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F5A5, U+1F5A8, U+1F5B1, U+1F5B2. + if (sequence == 0xf09f96a5 || sequence == 0xf09f96a8 || sequence == 0xf09f96b1 || sequence == 0xf09f96b2) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F5BC. + if (sequence == 0xf09f96bc) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F5C2 to U+1F5C4. + if (sequence >= 0xf09f9782 && sequence <= 0xf09f9784) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F5D1 to U+1F5D3. + if (sequence >= 0xf09f9791 && sequence <= 0xf09f9793) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F5DC to U+1F5DE. + if (sequence >= 0xf09f979c && sequence <= 0xf09f979e) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F5E1, U+1F5E3, U+1F5E8, U+1F5EF. + if (sequence == 0xf09f97a1 || sequence == 0xf09f97a3 || sequence == 0xf09f97a8 || sequence == 0xf09f97af) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F5F3. + if (sequence == 0xf09f97b3) { + return F_true; + } + + // Miscellaneous Symbols and Pictographs: U+1F5FA to U+1F6C5. + if (sequence >= 0xf09f97ba && sequence <= 0xf09f9b85) { + return F_true; + } + + // Transport and Map Symbols: U+1F6CB to U+1F6D2. + if (sequence >= 0xf09f9b8b && sequence <= 0xf09f9b92) { + return F_true; + } + + // Transport and Map Symbols: U+1F6D5 to U+1F6D7. + if (sequence >= 0xf09f9b95 && sequence <= 0xf09f9b97) { + return F_true; + } + + // Transport and Map Symbols: U+1F6DC to U+1F6DF. + if (sequence >= 0xf09f9b9c && sequence <= 0xf09f9b9f) { + return F_true; + } + + // Transport and Map Symbols: U+1F6E0 to U+1F6E5. + if (sequence >= 0xf09f9ba0 && sequence <= 0xf09f9ba5) { + return F_true; + } + + // Transport and Map Symbols: U+1F6E9, U+1F6EB, U+1F6EC, U+1F6F0. + if (sequence == 0xf09f9ba9 || sequence == 0xf09f9bab || sequence == 0xf09f9bac || sequence == 0xf09f9bb0) { + return F_true; + } + + // Transport and Map Symbols: U+1F6F3 to U+1F6FC. + if (sequence >= 0xf09f9bb3 && sequence <= 0xf09f9bbc) { + return F_true; + } + + // Geometric Shapes Extended: U+1F7E0 to U+1F7EB. + if (sequence >= 0xf09f9fa0 && sequence <= 0xf09f9fab) { + return F_true; + } + + // Geometric Shapes Extended: U+1F7F0. + if (sequence == 0xf09f9fb0) { + return F_true; + } + } + else { + + // Supplemental Symbols and Pictographs: U+1F90C to U+1F9FF. + if (sequence >= 0xf09fa48c && sequence <= 0xf09fa7bf) { + return F_true; + } + + // Symbols and Pictographs Extended-A: U+1FA70 to U+1FA7C. + if (sequence >= 0xf09fa9b0 && sequence <= 0xf09fa9bc) { + return F_true; + } + + // Symbols and Pictographs Extended-A: U+1FA80 to U+1FA89. + if (sequence >= 0xf09faa80 && sequence <= 0xf09faa89) { + return F_true; + } + + // Symbols and Pictographs Extended-A: U+1FA8F to U+1FAC6. + if (sequence >= 0xf09faa8f && sequence <= 0xf09fab86) { + return F_true; + } + + // Symbols and Pictographs Extended-A: U+1FACE to U+1FADC. + if (sequence >= 0xf09fab8e && sequence <= 0xf09fab9c) { + return F_true; + } + + // Symbols and Pictographs Extended-A: U+1FADF to U+1FAE9. + if (sequence >= 0xf09fab9f && sequence <= 0xf09faba9) { + return F_true; + } + + // Symbols and Pictographs Extended-A: U+1FAF0 to U+1FAF8. + if (sequence >= 0xf09fabb0 && sequence <= 0xf09fabb8) { + return F_true; + } } } } diff --git a/level_0/f_utf/c/private-utf_numeric.c b/level_0/f_utf/c/private-utf_numeric.c index 956fb6e06..d445c41ed 100644 --- a/level_0/f_utf/c/private-utf_numeric.c +++ b/level_0/f_utf/c/private-utf_numeric.c @@ -467,6 +467,11 @@ extern "C" { return F_true; } + // Garay: U+10D40 to U+10D49. + if (sequence >= 0xf090b580 && sequence <= 0xf090b589) { + return F_true; + } + // Rumi Numeral Symbols: U+10E60 to U+10E7E. if (sequence >= 0xf090b9a0 && sequence <= 0xf090b9be) { return F_true; @@ -539,6 +544,11 @@ extern "C" { return F_true; } + // Myanmar Extended-C: U+116D0 to U+116E3. + if (sequence >= 0xf0919b90 && sequence <= 0xf0919ba3) { + return F_true; + } + // Ahom: U+11730 to U+1173B. if (sequence >= 0xf0919cb0 && sequence <= 0xf0919cbb) { return F_true; @@ -554,6 +564,11 @@ extern "C" { return F_true; } + // Sunuwar: U+11BF0 to U+11BF9. + if (sequence >= 0xf091afb0 && sequence <= 0xf091afb9) { + return F_true; + } + // Bhaiksuki: U+11C50 to U+11C6C. if (sequence >= 0xf091b190 && sequence <= 0xf091b1ac) { return F_true; @@ -579,7 +594,7 @@ extern "C" { return F_true; } } - else if (macro_f_utf_char_t_to_char_2(sequence) == 0x92) { + else if (macro_f_utf_char_t_to_char_2(sequence) < 0x96) { // Cuneiform Numbers and Punctuation: U+12400 to U+1246E. if (sequence >= 0xf0929080 && sequence <= 0xf09291ae) { @@ -588,6 +603,11 @@ extern "C" { } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) { + // Gurung Khema: U+16130 to U+16139. + if (sequence >= 0xf09684b0 && sequence <= 0xf09684b9) { + return F_true; + } + // Mro: U+16A60 to U+16A69. if (sequence >= 0xf096a9a0 && sequence <= 0xf096a9a9) { return F_true; @@ -608,11 +628,23 @@ extern "C" { return F_true; } + // Kirat Rai: U+16D70 to U+16D79. + if (sequence >= 0xf096b5b0 && sequence <= 0xf096b5b9) { + return F_true; + } + // Medefaidrin: U+16E80 to U+16E96. if (sequence >= 0xf096ba80 && sequence <= 0xf096ba96) { return F_true; } } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9c) { + + // Symbols for Legacy Computing Supplement: U+1CCF0 to U+1CCF9. + if (sequence >= 0xf09cb3b0 && sequence <= 0xf09cb3b9) { + return F_true; + } + } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) { // Kaktovik Numerals: U+1D2C0 to U+1D2D3. @@ -672,6 +704,11 @@ extern "C" { return F_true; } + // Ol Onal: U+1E5F1 to U+1E5FA. + if (sequence >= 0xf09e97b1 && sequence <= 0xf09e97ba) { + return F_true; + } + // Mende Kikakui: U+1E8C7 to U+1E8CF. if (sequence >= 0xf09ea387 && sequence <= 0xf09ea38f) { return F_true; @@ -704,13 +741,13 @@ extern "C" { return F_true; } - // Symbols for Legacy Computing (Segmented): U+1FBF0 to U+1FBF9. + // Symbols for Legacy Computing: U+1FBF0 to U+1FBF9. if (sequence >= 0xf09fafb0 && sequence <= 0xf09fafb9) { return F_true; } } } - +// FIXME: all added digits probably need to appear in numeric as well. It seems like the is_digit function should be called and then this should check anything else. return F_false; } #endif // !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_alphabetic_numeric_) || !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_character_is_word_dash_) || !defined(_di_f_utf_character_is_word_dash_plus_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) diff --git a/level_0/f_utf/c/private-utf_phonetic.c b/level_0/f_utf/c/private-utf_phonetic.c index 457ca64af..2e7239f41 100644 --- a/level_0/f_utf/c/private-utf_phonetic.c +++ b/level_0/f_utf/c/private-utf_phonetic.c @@ -15,6 +15,11 @@ extern "C" { if (sequence >= 0xe1b48000 && sequence <= 0xe1b6bf00) { return F_true; } + + // Latin Extended-D: U+A78E. + if (sequence == 0xea9e8e00) { + return F_true; + } } return F_false; diff --git a/level_0/f_utf/c/private-utf_punctuation.c b/level_0/f_utf/c/private-utf_punctuation.c index 25a6f103f..b1e1a19f4 100644 --- a/level_0/f_utf/c/private-utf_punctuation.c +++ b/level_0/f_utf/c/private-utf_punctuation.c @@ -268,13 +268,18 @@ extern "C" { return F_true; } + // Balinese: U+1B4E to U+1B4F. + if (sequence >= 0xe1ad8e00 && sequence <= 0xe1ad8f00) { + return F_true; + } + // Balinese: U+1B5A to U+1B60. if (sequence >= 0xe1ad9a00 && sequence <= 0xe1ada000) { return F_true; } - // Balinese: U+1B7D to U+1B7E. - if (sequence == 0xe1adbd00 || sequence == 0xe1adbe00) { + // Balinese: U+1B7D to U+1B7F. + if (sequence >= 0xe1adbd00 && sequence <= 0xe1adbf00) { return F_true; } @@ -571,6 +576,7 @@ extern "C" { } if (macro_f_utf_char_t_to_char_1(sequence) == 0xf0) { + if (macro_f_utf_char_t_to_char_2(sequence) == 0x90) { // Aegean Numbers: U+10100 to U+10102. @@ -583,6 +589,11 @@ extern "C" { return F_true; } + // Todhri: U+105F4 to U+105FF. + if (sequence >= 0xf09097b4 && sequence <= 0xf09097bf) { + return F_true; + } + // Caucasian Albanian: U+1056F. if (sequence == 0xf09095af) { return F_true; @@ -633,6 +644,11 @@ extern "C" { return F_true; } + // Garay: U+10D6E to U+10D6F. + if (sequence >= 0xf090b5ae && sequence <= 0xf090b5af) { + return F_true; + } + // Yezidi: U+10EAD. if (sequence == 0xf090baad) { return F_true; @@ -695,6 +711,16 @@ extern "C" { return F_true; } + // Tulu-Tigalari: U+113D4 to U+113D5. + if (sequence >= 0xf0918f94 && sequence <= 0xf0918f95) { + return F_true; + } + + // Tulu-Tigalari: U+113D7 to U+113D8. + if (sequence >= 0xf0918f97 && sequence <= 0xf0918f98) { + return F_true; + } + // Newa: U+1144B to U+1144F. if (sequence >= 0xf091918b && sequence <= 0xf091918f) { return F_true; @@ -760,6 +786,11 @@ extern "C" { return F_true; } + // Sunuwar: U+11BE1. + if (sequence == 0xf091afa1) { + return F_true; + } + // Bhaiksuki: U+11C41 to U+11C45. if (sequence >= 0xf091b181 && sequence <= 0xf091b185) { return F_true; @@ -829,6 +860,11 @@ extern "C" { return F_true; } + // Kirat Rai: U+16D6E to U+16D6F. + if (sequence >= 0xf096b5ae && sequence <= 0xf096b5af) { + return F_true; + } + // Duployan: U+1BC9F. if (sequence == 0xf09bb29f) { return F_true; diff --git a/level_0/f_utf/c/private-utf_superscript.c b/level_0/f_utf/c/private-utf_superscript.c index 80aa684b0..5fb12193d 100644 --- a/level_0/f_utf/c/private-utf_superscript.c +++ b/level_0/f_utf/c/private-utf_superscript.c @@ -45,12 +45,12 @@ extern "C" { if (macro_f_utf_char_t_to_char_1(sequence) == 0xe1) { - // Georgian: U+10FC. - if (sequence == 0xe183bc00) { - return F_true; - } + if (macro_f_utf_char_t_to_char_2(sequence) <= 0xa0) { - if (macro_f_utf_char_t_to_char_2(sequence) >= 0x90 && macro_f_utf_char_t_to_char_2(sequence) <= 0x99) { + // Georgian: U+10FC. + if (sequence == 0xe183bc00) { + return F_true; + } // Unified Canadian Aboriginal Syllabics: U+141C to U+142A. if (sequence >= 0xe1909c00 && sequence <= 0xe190aa00) { diff --git a/level_0/f_utf/c/private-utf_symbol.c b/level_0/f_utf/c/private-utf_symbol.c index 7e43f6fd5..5ef647506 100644 --- a/level_0/f_utf/c/private-utf_symbol.c +++ b/level_0/f_utf/c/private-utf_symbol.c @@ -405,6 +405,11 @@ extern "C" { return F_true; } + // Control Pictures: U+2400 to U+2429. + if (sequence >= 0xe2908000 && sequence <= 0xe290a900) { + return F_true; + } + // Optical Character Recognition: U+2440 to U+244A. if (sequence >= 0xe2918000 && sequence <= 0xe2918a00) { return F_true; @@ -517,8 +522,13 @@ extern "C" { return F_true; } - // Kanbun to CJK Strokes: U+3196 to U+31E3. - if (sequence >= 0xe3869600 && sequence <= 0xe387a300) { + // Kanbun to CJK Strokes: U+3196 to U+31E5. + if (sequence >= 0xe3869600 && sequence <= 0xe387a500) { + return F_true; + } + + // CJK Strokes: U+31EF. + if (sequence == 0xe387ae00) { return F_true; } @@ -726,6 +736,16 @@ extern "C" { return F_true; } + // Garay: U+10D4A to U+10D4D. + if (sequence >= 0xf090b58a && sequence <= 0xf090b58f) { + return F_true; + } + + // Garay: U+10D8E to U+10D8F. + if (sequence >= 0xf090b68e && sequence <= 0xf090b68f) { + return F_true; + } + // Manichaean: U+10AC8. if (sequence == 0xf090ab88) { return F_true; @@ -733,6 +753,16 @@ extern "C" { } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x91) { + // Tulu-Tigalari: U+113B7 + if (sequence == 0xf0918eb7) { + return F_true; + } + + // Tulu-Tigalari: U+113D3 + if (sequence == 0xdf0918f93) { + return F_true; + } + // Ahom: U+1173F. if (sequence == 0xf0919cbf) { return F_true; @@ -758,6 +788,13 @@ extern "C" { return F_true; } } + else if (macro_f_utf_char_t_to_char_2(sequence) < 0x96) { + + // Egyptian Hieroglyphs Extended-A: U+13460 to U+143FA. + if (sequence >= 0xf09391a0 && sequence <= 0xf0948fba) { + return F_true; + } + } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) { // Pahawh Hmong: U+16B3C to U+16B3F. @@ -769,6 +806,23 @@ extern "C" { if (sequence == 0xf096ad85) { return F_true; } + + // Kirat Rai: U+16D40 to U+16D42. + if (sequence >= 0xf096b580 && sequence <= 0xf096b582) { + return F_true; + } + + // Kirat Rai: U+16D63 to U+16D6D. + if (sequence >= 0xf096b5a3 && sequence <= 0xf096b5ad) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) < 0x9b) { + + // Khitan Small Script: U+18CFF. + if (sequence == 0xf098b3bf) { + return F_true; + } } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9b) { @@ -779,6 +833,16 @@ extern "C" { } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9c) { + // Symbols for Legacy Computing Supplement: U+1CC00 to U+1CCD5. + if (sequence >= 0xf09cb080 && sequence <= 0xf09cb395) { + return F_true; + } + + // Symbols for Legacy Computing Supplement: U+1CD00 to U+1CEB3. + if (sequence >= 0xf09cb480 && sequence <= 0xf09cbab3) { + return F_true; + } + // Znamenny Musical Notation: U+1CF50 to U+1CFC3. if (sequence >= 0xf09cbd90 && sequence <= 0xf09cbf83) { return F_true; @@ -843,6 +907,11 @@ extern "C" { return F_true; } + // Ol Onal: U+1E5F0, U+1E5FF. + if (sequence == 0xf09e97b0 || sequence == 0xf09e97bf) { + return F_true; + } + // Indic Siyaq Numbers: U+1ECAC, U+ECB0. if (sequence == 0xf09eb2ac || sequence == 0xf09eb2b0) { return F_true; @@ -915,6 +984,11 @@ extern "C" { return F_true; } + // Supplemental Symbols and Pictographs: U+1F900 to U+1F9FF. + if (sequence >= 0xf09fa480 && sequence <= 0xf09fa7bf) { + return F_true; + } + // Miscellaneous Symbols and Pictographs: U+1F300 to U+1F6EC. if (sequence >= 0xf09f8c80 && sequence <= 0xf09f9bac) { return F_true; @@ -960,8 +1034,13 @@ extern "C" { return F_true; } - // Supplemental Arrows-C: U+1F850 to U+1F887. - if (sequence >= 0xf09fa190 && sequence <= 0xf09fa287) { + // Supplemental Arrows-C: U+1F850 to U+1F859. + if (sequence >= 0xf09fa190 && sequence <= 0xf09fa199) { + return F_true; + } + + // Supplemental Arrows-C: U+1F860 to U+1F887. + if (sequence >= 0xf09fa1a0 && sequence <= 0xf09fa287) { return F_true; } @@ -970,8 +1049,13 @@ extern "C" { return F_true; } - // Supplemental Arrows-C: U+1F8B0, U+1F8B1. - if (sequence == 0xf09fa2b0 || sequence == 0xf09fa2b1) { + // Supplemental Arrows-C: U+1F8B0 to U+1F8BB. + if (sequence >= 0xf09fa2b0 && sequence <= 0xf09fa2bb) { + return F_true; + } + + // Supplemental Arrows-C: U+1F8C0 to U+1F8C1. + if (sequence >= 0xf09fa380 && sequence <= 0xf09fa381) { return F_true; } @@ -1020,8 +1104,8 @@ extern "C" { return F_true; } - // Symbols for Legacy Computing: U+1FB00 to U+1FBCA. - if (sequence >= 0xf09fac80 && sequence <= 0xf09faf8a) { + // Symbols for Legacy Computing: U+1FB00 to U+1FBEF. + if (sequence >= 0xf09fac80 && sequence <= 0xf09fafaf) { return F_true; } } diff --git a/level_0/f_utf/c/private-utf_unassigned.c b/level_0/f_utf/c/private-utf_unassigned.c index 53843be97..bbb064e64 100644 --- a/level_0/f_utf/c/private-utf_unassigned.c +++ b/level_0/f_utf/c/private-utf_unassigned.c @@ -115,8 +115,8 @@ extern "C" { return F_true; } - // Arabic Extended B: U+0892 to U+0897. - if (sequence >= 0xe0a29200 && sequence <= 0xe0a29700) { + // Arabic Extended B: U+0892 to U+0896. + if (sequence >= 0xe0a29200 && sequence <= 0xe0a29600) { return F_true; } @@ -817,13 +817,8 @@ extern "C" { return F_true; } - // Balinese: U+1B4C to U+1B4F. - if (sequence >= 0xe1ad8c00 && sequence <= 0xe1ad8f00) { - return F_true; - } - - // Balinese: U+1B7D to U+1B7F. - if (sequence >= 0xe1adbd00 && sequence <= 0xe1adbf00) { + // Balinese: U+1B4D. + if (sequence == 0xe1ad8d00) { return F_true; } @@ -842,6 +837,11 @@ extern "C" { return F_true; } + // Cyrillic Extended-C: U+1C8B to U+1C8F. + if (sequence >= 0xe1b28b00 && sequence <= 0xe1b28f00) { + return F_true; + } + // Sundanese Supplement: U+1CC8 to U+1CCF. if (sequence >= 0xe1b38800 && sequence <= 0xe1b38f00) { return F_true; @@ -929,8 +929,8 @@ extern "C" { return F_true; } - // Control Pictures: U+2427 to U+243F. - if (sequence >= 0xe290a700 && sequence <= 0xe290bf00) { + // Control Pictures: U+242A to U+243F. + if (sequence >= 0xe290aa00 && sequence <= 0xe290bf00) { return F_true; } @@ -1066,8 +1066,8 @@ extern "C" { return F_true; } - // CJK Strokes: U+31E4 to U+31EF. - if (sequence >= 0xe387a400 && sequence <= 0xe387af00) { + // CJK Strokes: U+31E6 to U+31EE. + if (sequence >= 0xe387a600 && sequence <= 0xe387ae00) { return F_true; } @@ -1115,8 +1115,8 @@ extern "C" { return F_true; } - // Latin Extended-D: U+A7CB to U+A7CF. - if (sequence >= 0xea9f8b00 && sequence <= 0xea9f8f00) { + // Latin Extended-D: U+A7CE to U+A7CF. + if (sequence >= 0xea9f8e00 && sequence <= 0xea9f8f00) { return F_true; } @@ -1125,8 +1125,8 @@ extern "C" { return F_true; } - // Latin Extended-D: U+A7DA to U+A7F1. - if (sequence >= 0xea9f9a00 && sequence <= 0xea9fb100) { + // Latin Extended-D: U+A7DD to U+A7F1. + if (sequence >= 0xea9f9d00 && sequence <= 0xea9fb100) { return F_true; } @@ -1395,7 +1395,7 @@ extern "C" { else if (macro_f_utf_char_t_to_char_1(sequence) == 0xf0) { if (macro_f_utf_char_t_to_char_2(sequence) < 0x90) { - // Do nothing. + // There are none here. } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x90) { @@ -1664,8 +1664,23 @@ extern "C" { return F_true; } - // Arabic Extended-C: U+10EC0 to U+10EFC. - if (sequence >= 0xf090bb80 && sequence <= 0xf090bbbc) { + // Arabic Extended-C: U+10EC0 to U+10EC1. + if (sequence >= 0xf090bb80 && sequence <= 0xf090bb81) { + return F_true; + } + + // Arabic Extended-C: U+10EC5 to U+10EFB. + if (sequence >= 0xf090bb85 && sequence <= 0xf090bbbb) { + return F_true; + } + + // Garay: U+10D66 to U+10D68. + if (sequence >= 0xf090b5a6 && sequence <= 0xf090b5a8) { + return F_true; + } + + // Garay: U+10D86 to U+10D8d. + if (sequence >= 0xf090b686 && sequence <= 0xf090b68d) { return F_true; } } @@ -1701,6 +1716,11 @@ extern "C" { return F_true; } + // Sunuwar: U+11BC0 to U+11BFF. + if (sequence >= 0xf091af80 && sequence <= 0xf091afbf) { + return F_true; + } + // Kawi: U+11F11. if (sequence == 0xf091bc91) { return F_true; @@ -1711,8 +1731,8 @@ extern "C" { return F_true; } - // Kawi: U+11F5A to U+11F5F. - if (sequence >= 0xf091bd9a && sequence <= 0xf091bd9f) { + // Kawi: U+11F5B to U+11F5F. + if (sequence >= 0xf091bd9b && sequence <= 0xf091bd9f) { return F_true; } @@ -1841,6 +1861,31 @@ extern "C" { return F_true; } + // Tulu-Tigalari: U+1138A, U+1138C, U+1138D, U+1138F. + if (sequence == 0xf0918e8a || sequence == 0xf0918e8c || sequence == 0xf0918e8d || sequence == 0xf0918e8f) { + return F_true; + } + + // Tulu-Tigalari: U+113B6, U+113C1, U+113C3, U+113C4. + if (sequence == 0xf0918eb6 || sequence == 0xf0918f81 || sequence == 0xf0918f83 || sequence == 0xf0918f84) { + return F_true; + } + + // Tulu-Tigalari: U+113C6, U+113CB, U+113D6. + if (sequence == 0xf0918f86 || sequence == 0xf0918f8b || sequence == 0xf0918f96) { + return F_true; + } + + // Tulu-Tigalari: U+113D9 to U+113E1. + if (sequence >= 0xf0918f99 && sequence <= 0xf0918fa1) { + return F_true; + } + + // Tulu-Tigalari: U+113E3 to U+113FF. + if (sequence >= 0xf0918fa3 && sequence <= 0xf0918fbf) { + return F_true; + } + // Tirhuta: U+114C8 to U+114CF. if (sequence >= 0xf0919388 && sequence <= 0xf091938f) { return F_true; @@ -1881,6 +1926,11 @@ extern "C" { return F_true; } + // Myanmar Extended-C: U+116E4 to U+116FF. + if (sequence >= 0xf0919ba4 && sequence <= 0xf0919bbf) { + return F_true; + } + // Ahom: U+1171A to U+1171C. if (sequence >= 0xf0919c9a && sequence <= 0xf0919c9c) { return F_true; @@ -1901,7 +1951,7 @@ extern "C" { return F_true; } } - else if (macro_f_utf_char_t_to_char_2(sequence) == 0x91) { + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x92) { // Cuneiform: U+1239A to U+123FF. if (sequence >= 0xf0928e9a && sequence <= 0xf0928fbf) { @@ -1924,9 +1974,19 @@ extern "C" { if (sequence >= 0xf0939196 && sequence <= 0xf093919f) { return F_true; } + + // Ol Onal: U+1E5FB to U+1E5FE. + if (sequence >= 0xf09e97bb && sequence <= 0xf09e97be) { + return F_true; + } } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x94) { + // Egyptian Hieroglyphs Extended-A: U+143FB to U+143FF. + if (sequence >= 0xf0948fbb && sequence <= 0xf0948fbf) { + return F_true; + } + // Anatolian Hieroglyphs: U+14647 to U+1467F. if (sequence >= 0xf0949987 && sequence <= 0xf09499bf) { return F_true; @@ -1937,6 +1997,11 @@ extern "C" { } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) { + // Gurung Khema: U+1613A to U+1613A. + if (sequence >= 0xf09684ba && sequence <= 0xf09684bf) { + return F_true; + } + // Bamum Supplement: U+16A39 to U+16A3F. if (sequence >= 0xf096a8b9 && sequence <= 0xf096a8bf) { return F_true; @@ -1977,6 +2042,11 @@ extern "C" { return F_true; } + // Kirat Rai: U+16D7A to U+16D7F. + if (sequence >= 0xf096b5ba && sequence <= 0xf096b5bf) { + return F_true; + } + // Miao: U+16F45 to U+16F4F. if (sequence >= 0xf096bd85 && sequence <= 0xf096bd8f) { return F_true; @@ -1988,7 +2058,11 @@ extern "C" { } } else if (macro_f_utf_char_t_to_char_2(sequence) < 0x9b) { - // Do nothing. + + // Khitan Small Script: U+18CD6 to U+18CFE. + if (sequence >= 0xf098b396 && sequence <= 0xf098b3be) { + return F_true; + } } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9b) { @@ -2048,7 +2122,21 @@ extern "C" { } } else if (macro_f_utf_char_t_to_char_2(sequence) < 0x9d) { - // Do nothing. + + // Khitan Small Script: U+18CD6 to U+18CFE. + if (sequence >= 0xf098b396 && sequence <= 0xf098b3be) { + return F_true; + } + + // Symbols for Legacy Computing Supplement: U+1CEB4 to U+1CEBF. + if (sequence >= 0xf09cbab4 && sequence <= 0xf09cbabf) { + return F_true; + } + + // Symbols for Legacy Computing Supplement: U+1CCFA to U+1CCFF. + if (sequence >= 0xf09cb3ba && sequence <= 0xf09cb3bf) { + return F_true; + } } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) { @@ -2341,48 +2429,33 @@ extern "C" { return F_true; } - // Supplemental Arrows C: U+1F80C to U+1F80F. + // Supplemental Arrows-C: U+1F80C to U+1F80F. if (sequence >= 0xf09fa08c && sequence <= 0xf09fa08f) { return F_true; } - // Supplemental Arrows C: U+1F848 to U+1F84F. + // Supplemental Arrows-C: U+1F848 to U+1F84F. if (sequence >= 0xf09fa188 && sequence <= 0xf09fa18f) { return F_true; } - // Supplemental Arrows C: U+1F85A to U+1F85F. + // Supplemental Arrows-C: U+1F85A to U+1F85F. if (sequence >= 0xf09fa19a && sequence <= 0xf09fa19f) { return F_true; } - // Supplemental Arrows C: U+1F888 to U+1F88F. + // Supplemental Arrows-C: U+1F888 to U+1F88F. if (sequence >= 0xf09fa288 && sequence <= 0xf09fa28f) { return F_true; } - // Supplemental Arrows C: U+1F8AE to U+1F8FF. - if (sequence >= 0xf09fa2ae && sequence <= 0xf09fa3bf) { + // Supplemental Arrows-C: U+1F8AE to U+1F8AF. + if (sequence >= 0xf09fa2ae && sequence <= 0xf09fa2af) { return F_true; } - // Supplemental Symbols and Pictographs: U+1F900 to U+1F90F. - if (sequence >= 0xf09fa480 && sequence <= 0xf09fa48f) { - return F_true; - } - - // Supplemental Symbols and Pictographs: U+1F919 to U+1F97F. - if (sequence >= 0xf09fa499 && sequence <= 0xf09fa5bf) { - return F_true; - } - - // Supplemental Symbols and Pictographs: U+1F985 to U+1F9BF. - if (sequence >= 0xf09fa685 && sequence <= 0xf09fa6bf) { - return F_true; - } - - // Supplemental Symbols and Pictographs: U+1F9C1 to U+1F9FF. - if (sequence >= 0xf09fa781 && sequence <= 0xf09fa7bf) { + // Supplemental Arrows-C: U+1F8B2 to U+1F8FF. + if (sequence >= 0xf09fa2b2 && sequence <= 0xf09fa3bf) { return F_true; } @@ -2396,23 +2469,23 @@ extern "C" { return F_true; } - // Symbols and Pictographs Extended-A: U+1FABE. - if (sequence == 0xf09faabe) { + // Symbols and Pictographs Extended-A: U+1FA8A to U+1FA8E. + if (sequence >= 0xf09faa8a && sequence <= 0xf09faa8e) { return F_true; } - // Symbols and Pictographs Extended-A: U+1FAC6 to U+1FACD. - if (sequence >= 0xf09fab86 && sequence <= 0xf09fab8d) { + // Symbols and Pictographs Extended-A: U+1FAC7 to U+1FACD. + if (sequence >= 0xf09fab87 && sequence <= 0xf09fab8d) { return F_true; } - // Symbols and Pictographs Extended-A: U+1FADC to U+1FADF. - if (sequence >= 0xf09fab9c && sequence <= 0xf09fab9f) { + // Symbols and Pictographs Extended-A: U+1FADD to U+1FADE. + if (sequence >= 0xf09fab9d && sequence <= 0xf09fab9e) { return F_true; } - // Symbols and Pictographs Extended-A: U+1FAE9 to U+1FAEF. - if (sequence >= 0xf09faba9 && sequence <= 0xf09fabaf) { + // Symbols and Pictographs Extended-A: U+1FAEA to U+1FAEF. + if (sequence >= 0xf09fabaa && sequence <= 0xf09fabaf) { return F_true; } @@ -2421,13 +2494,18 @@ extern "C" { return F_true; } - // Not Assigned: U+1FB00 to U+1FFFF. - if (sequence >= 0xf09fac80 && sequence <= 0xf09fbfbf) { + // Symbols for Legacy Computing: U+1FBFA to U+1CEBF. + if (sequence >= 0xf09fafba && sequence <= 0xf09cbabf) { + return F_true; + } + + // Symbols for Legacy Computing and others not assigned: U+1FBFA to U+1FFFF. + if (sequence >= 0xf09fafba && sequence <= 0xf09fbfbf) { return F_true; } } else if (macro_f_utf_char_t_to_char_2(sequence) < 0xaa) { - // Do nothing. + // There are none here. } else if (macro_f_utf_char_t_to_char_2(sequence) < 0xb0) { diff --git a/level_0/f_utf/c/private-utf_valid.c b/level_0/f_utf/c/private-utf_valid.c index 950f0e6ff..466569fc6 100644 --- a/level_0/f_utf/c/private-utf_valid.c +++ b/level_0/f_utf/c/private-utf_valid.c @@ -48,6 +48,7 @@ extern "C" { // For first byte 0xe0, only second byte ranges 0xa0 to 0xbf are valid. if (macro_f_utf_char_t_to_char_1(sequence) == 0xe0) { + if (macro_f_utf_char_t_to_char_2(sequence) < 0xa0 || macro_f_utf_char_t_to_char_2(sequence) > 0xbf) { return F_false; } @@ -55,6 +56,7 @@ extern "C" { // For first byte 0xed, only second byte ranges 0x80 to 0x9f are valid. else if (macro_f_utf_char_t_to_char_1(sequence) == 0xed) { + if (macro_f_utf_char_t_to_char_2(sequence) < 0x80 || macro_f_utf_char_t_to_char_2(sequence) > 0x9f) { return F_false; } diff --git a/level_0/f_utf/c/utf/is_character.h b/level_0/f_utf/c/utf/is_character.h index c495eafa1..0cb54d566 100644 --- a/level_0/f_utf/c/utf/is_character.h +++ b/level_0/f_utf/c/utf/is_character.h @@ -433,6 +433,8 @@ extern "C" { /** * Check to see if the entire byte block of the character is an ASCII or UTF-8 symbol character. * + * This function considers a symbol character a non-alphabetic, non-digit, non-combining, non-whitespace character that is a graph character. + * * @param sequence * The byte sequence to validate as a character. * diff --git a/level_0/f_utf/data/build/settings-tests b/level_0/f_utf/data/build/settings-tests index 6626edf09..7dd7308d6 100644 --- a/level_0/f_utf/data/build/settings-tests +++ b/level_0/f_utf/data/build/settings-tests @@ -31,6 +31,7 @@ build_sources_program test-utf-character_is_alphabetic_digit.c test-utf-is_alpha build_sources_program test-utf-character_is_alphabetic_numeric.c test-utf-is_alphabetic_numeric.c build_sources_program test-utf-character_is_combining.c test-utf-is_combining.c build_sources_program test-utf-character_is_control.c test-utf-is_control.c +build_sources_program test-utf-character_is_control_picture.c test-utf-is_control_picture.c build_sources_program test-utf-character_is_digit.c test-utf-is_digit.c build_sources_program test-utf-character_is_emoji.c test-utf-is_emoji.c build_sources_program test-utf-character_is_numeric.c test-utf-is_numeric.c diff --git a/level_0/f_utf/data/documentation/man/man3/f_utf_character_is_symbol.3 b/level_0/f_utf/data/documentation/man/man3/f_utf_character_is_symbol.3 index 477469371..fb8ce7e8d 100644 --- a/level_0/f_utf/data/documentation/man/man3/f_utf_character_is_symbol.3 +++ b/level_0/f_utf/data/documentation/man/man3/f_utf_character_is_symbol.3 @@ -13,6 +13,9 @@ f_utf_character_is_symbol \- .PP Check to see if the entire byte block of the character is an ASCII or UTF-8 symbol character. .PP +.PP +This function considers a symbol character a non-alphabetic, non-digit, non-combining, non-whitespace character that is a graph character. +.PP F_utf_fragment (with error bit) if character is a UTF-8 fragment. F_utf_not (with error bit) if unicode is an invalid Unicode character. .SH PARAMETERS .TP diff --git a/level_0/f_utf/data/tests/bytesequences/combining-all.txt b/level_0/f_utf/data/tests/bytesequences/combining-all.txt index a8926d5a6..35d28d114 100644 --- a/level_0/f_utf/data/tests/bytesequences/combining-all.txt +++ b/level_0/f_utf/data/tests/bytesequences/combining-all.txt @@ -293,6 +293,7 @@ 14721433 14721434 14721435 +14721687 14721688 14721689 14721690 @@ -658,6 +659,9 @@ 4036012223 4036012965 4036012966 +4036015529 +4036015530 +4036017084 4036017085 4036017086 4036017087 @@ -717,27 +721,6 @@ 4036069258 4036069259 4036069260 -4036082816 -4036082817 -4036082818 -4036082819 -4036082868 -4036082869 -4036082870 -4036082871 -4036082872 -4036082873 -4036082874 -4036082878 -4036082879 -4036083072 -4036083073 -4036083074 -4036919951 -4036924332 -4036924333 -4036924334 -4036924335 4036069551 4036069552 4036069553 @@ -769,6 +752,30 @@ 4036070834 4036070835 4036070836 +4036071096 +4036071097 +4036071098 +4036071099 +4036071100 +4036071101 +4036071102 +4036071103 +4036071296 +4036071298 +4036071301 +4036071303 +4036071304 +4036071305 +4036071306 +4036071308 +4036071309 +4036071310 +4036071311 +4036071312 +4036071313 +4036071314 +4036071329 +4036071330 4036072115 4036072116 4036072117 @@ -823,9 +830,35 @@ 4036074665 4036074666 4036074667 +4036082816 +4036082817 +4036082818 +4036082819 +4036082868 +4036082869 +4036082870 +4036082871 +4036082872 +4036082873 +4036082874 +4036082878 +4036082879 +4036083072 +4036083073 +4036083074 +4036083098 14781853 14781854 14781855 +4036396190 +4036396191 +4036396192 +4036396202 +4036396203 +4036396204 +4036396205 +4036396206 +4036396207 4036406192 4036406193 4036406194 @@ -954,13 +987,19 @@ 14789761 14789762 14789763 +14789764 14789812 +14789813 14789814 14789815 14789816 14789817 14789818 +14789819 14789820 +14789821 +14789822 +14789823 14790018 14790059 14790060 @@ -1004,7 +1043,6 @@ 14791568 14791569 14791570 -14791571 14791572 14791573 14791574 @@ -1018,6 +1056,7 @@ 14791582 14791583 14791584 +14791585 14791586 14791587 14791588 @@ -1245,6 +1284,11 @@ 14792637 14792638 14792639 +4036919951 +4036924332 +4036924333 +4036924334 +4036924335 4036928400 4036928401 4036928402 @@ -1320,6 +1364,7 @@ 15374986 15374987 15374988 +15374988 15374989 15374990 15374991 diff --git a/level_0/f_utf/data/tests/bytesequences/control_picture-all.txt b/level_0/f_utf/data/tests/bytesequences/control_picture-all.txt new file mode 100644 index 000000000..b626794c9 --- /dev/null +++ b/level_0/f_utf/data/tests/bytesequences/control_picture-all.txt @@ -0,0 +1,42 @@ +14848128 +14848129 +14848130 +14848131 +14848132 +14848133 +14848134 +14848135 +14848136 +14848137 +14848138 +14848139 +14848140 +14848141 +14848142 +14848143 +14848144 +14848145 +14848146 +14848147 +14848148 +14848149 +14848150 +14848151 +14848152 +14848153 +14848154 +14848155 +14848156 +14848157 +14848158 +14848159 +14848160 +14848161 +14848162 +14848163 +14848164 +14848165 +14848166 +14848167 +14848168 +14848169 diff --git a/level_0/f_utf/data/tests/bytesequences/digit-all.txt b/level_0/f_utf/data/tests/bytesequences/digit-all.txt index 0d0aae185..55e4f92c6 100644 --- a/level_0/f_utf/data/tests/bytesequences/digit-all.txt +++ b/level_0/f_utf/data/tests/bytesequences/digit-all.txt @@ -1641,3 +1641,73 @@ 4036924343 4036924344 4036924345 +4036015488 +4036015489 +4036015490 +4036015491 +4036015492 +4036015493 +4036015494 +4036015495 +4036015496 +4036015497 +4036074384 +4036074385 +4036074386 +4036074387 +4036074388 +4036074389 +4036074390 +4036074391 +4036074392 +4036074393 +4036074394 +4036074395 +4036074396 +4036074397 +4036074398 +4036074399 +4036074400 +4036074401 +4036074402 +4036074403 +4036079536 +4036079537 +4036079538 +4036079539 +4036079540 +4036079541 +4036079542 +4036079543 +4036079544 +4036079545 +4036396208 +4036396209 +4036396210 +4036396211 +4036396212 +4036396213 +4036396214 +4036396215 +4036396216 +4036396217 +4036408752 +4036408753 +4036408754 +4036408755 +4036408756 +4036408757 +4036408758 +4036408759 +4036408760 +4036408761 +4036925361 +4036925362 +4036925363 +4036925364 +4036925365 +4036925366 +4036925367 +4036925368 +4036925369 +4036925370 diff --git a/level_0/f_utf/data/tests/bytesequences/emoji-all.txt b/level_0/f_utf/data/tests/bytesequences/emoji-all.txt index 09ad40e3d..7b8ca3d0c 100644 --- a/level_0/f_utf/data/tests/bytesequences/emoji-all.txt +++ b/level_0/f_utf/data/tests/bytesequences/emoji-all.txt @@ -1130,6 +1130,8 @@ 4036995718 4036995719 4036995720 +4036995721 +4036995727 4036995728 4036995729 4036995730 @@ -1176,6 +1178,7 @@ 4036995771 4036995772 4036995773 +4036995774 4036995775 4036995968 4036995969 @@ -1183,6 +1186,7 @@ 4036995971 4036995972 4036995973 +4036995974 4036995982 4036995983 4036995984 @@ -1195,8 +1199,6 @@ 4036995991 4036995992 4036995993 -4036995994 -4036995995 4036996000 4036996001 4036996002 diff --git a/level_0/f_utf/data/tests/bytesequences/numeric-all.txt b/level_0/f_utf/data/tests/bytesequences/numeric-all.txt index a4b419ae4..e89415dcd 100644 --- a/level_0/f_utf/data/tests/bytesequences/numeric-all.txt +++ b/level_0/f_utf/data/tests/bytesequences/numeric-all.txt @@ -8,6 +8,12 @@ 55 56 57 +49842 +49843 +49849 +49852 +49853 +49854 55712 55713 55714 @@ -58,6 +64,12 @@ 14722989 14722990 14722991 +14722996 +14722997 +14722998 +14722999 +14723000 +14723001 14723494 14723495 14723496 @@ -88,6 +100,12 @@ 14724525 14724526 14724527 +14724530 +14724531 +14724532 +14724533 +14724534 +14724535 14725030 14725031 14725032 @@ -98,6 +116,9 @@ 14725037 14725038 14725039 +14725040 +14725041 +14725042 14725542 14725543 14725544 @@ -108,6 +129,13 @@ 14725549 14725550 14725551 +14725560 +14725561 +14725562 +14725563 +14725564 +14725565 +14725566 14726054 14726055 14726056 @@ -118,6 +146,13 @@ 14726061 14726062 14726063 +14726552 +14726553 +14726554 +14726555 +14726556 +14726557 +14726558 14726566 14726567 14726568 @@ -128,6 +163,15 @@ 14726573 14726574 14726575 +14726576 +14726577 +14726578 +14726579 +14726580 +14726581 +14726582 +14726583 +14726584 14727078 14727079 14727080 @@ -168,6 +212,158 @@ 14728359 14728360 14728361 +14728362 +14728363 +14728364 +14728365 +14728366 +14728367 +14728368 +14728369 +14728370 +14728371 +4036002951 +4036002952 +4036002953 +4036002954 +4036002955 +4036002956 +4036002957 +4036002958 +4036002959 +4036002960 +4036002961 +4036002962 +4036002963 +4036002964 +4036002965 +4036002966 +4036002967 +4036002968 +4036002969 +4036002970 +4036002971 +4036002972 +4036002973 +4036002974 +4036002975 +4036002976 +4036002977 +4036002978 +4036002979 +4036002980 +4036002981 +4036002982 +4036002983 +4036002984 +4036002985 +4036002986 +4036002987 +4036002988 +4036002989 +4036002990 +4036002991 +4036002992 +4036002993 +4036002994 +4036002995 +4036003200 +4036003201 +4036003202 +4036003203 +4036003204 +4036003205 +4036003206 +4036003207 +4036003208 +4036003209 +4036003210 +4036003211 +4036003212 +4036003213 +4036003214 +4036003215 +4036003216 +4036003217 +4036003218 +4036003219 +4036003220 +4036003221 +4036003222 +4036003223 +4036003224 +4036003225 +4036003226 +4036003227 +4036003228 +4036003229 +4036003230 +4036003231 +4036003232 +4036003233 +4036003234 +4036003235 +4036003236 +4036003237 +4036003238 +4036003239 +4036003240 +4036003241 +4036003242 +4036003243 +4036003244 +4036003245 +4036003246 +4036003247 +4036003248 +4036003249 +4036003250 +4036003251 +4036003252 +4036003253 +4036003254 +4036003255 +4036003256 +4036003466 +4036003467 +4036004769 +4036004770 +4036004771 +4036004772 +4036004773 +4036004774 +4036004775 +4036004776 +4036004777 +4036004778 +4036004779 +4036004780 +4036004781 +4036004782 +4036004783 +4036004784 +4036004785 +4036004786 +4036004787 +4036004788 +4036004789 +4036004790 +4036004791 +4036004792 +4036004793 +4036004794 +4036004795 +4036005024 +4036005025 +4036005026 +4036005027 +4036005249 +4036005258 +4036005777 +4036005778 +4036005779 +4036005780 +4036005781 14778752 14778753 14778754 @@ -178,8 +374,53 @@ 14778759 14778760 14778761 +4036006560 +4036006561 +4036006562 +4036006563 +4036006564 +4036006565 +4036006566 +4036006567 +4036006568 +4036006569 +4036010392 +4036010393 +4036010394 +4036010395 +4036010396 +4036010397 +4036010398 +4036010399 +4036010425 +4036010426 +4036010427 +4036010428 +4036010429 +4036010430 +4036010431 +4036010663 +4036010664 +4036010665 +4036010666 +4036010667 +4036010668 +4036010669 +4036010670 +4036010671 +4036010939 +4036010940 +4036010941 +4036010942 +4036010943 14779024 14779025 +4036011158 +4036011159 +4036011160 +4036011161 +4036011162 +4036011163 14779026 14779027 14779028 @@ -188,1170 +429,6 @@ 14779031 14779032 14779033 -14786464 -14786465 -14786466 -14786467 -14786468 -14786469 -14786470 -14786471 -14786472 -14786473 -14786704 -14786705 -14786706 -14786707 -14786708 -14786709 -14786710 -14786711 -14786712 -14786713 -14787974 -14787975 -14787976 -14787977 -14787978 -14787979 -14787980 -14787981 -14787982 -14787983 -14788496 -14788497 -14788498 -14788499 -14788500 -14788501 -14788502 -14788503 -14788504 -14788505 -14789248 -14789249 -14789250 -14789251 -14789252 -14789253 -14789254 -14789255 -14789256 -14789257 -14789264 -14789265 -14789266 -14789267 -14789268 -14789269 -14789270 -14789271 -14789272 -14789273 -14790032 -14790033 -14790034 -14790035 -14790036 -14790037 -14790038 -14790039 -14790040 -14790041 -14790320 -14790321 -14790322 -14790323 -14790324 -14790325 -14790326 -14790327 -14790328 -14790329 -14791040 -14791041 -14791042 -14791043 -14791044 -14791045 -14791046 -14791047 -14791048 -14791049 -14791056 -14791057 -14791058 -14791059 -14791060 -14791061 -14791062 -14791063 -14791064 -14791065 -14845344 -14845345 -14845346 -14845347 -14845348 -14845349 -14845350 -14845351 -14845352 -14845353 -14845354 -14845355 -14845356 -14845357 -14845358 -14845359 -14845360 -14845361 -14845362 -14845363 -14845364 -14845365 -14845366 -14845367 -14845368 -14845369 -14845370 -14845371 -14845372 -14845373 -14845374 -14845375 -14845568 -14845569 -14845570 -14845571 -14845572 -14845573 -14845574 -14845575 -14845576 -15374496 -15374497 -15374498 -15374499 -15374500 -15374501 -15374502 -15374503 -15374504 -15374505 -15377296 -15377297 -15377298 -15377299 -15377300 -15377301 -15377302 -15377303 -15377304 -15377305 -15377536 -15377537 -15377538 -15377539 -15377540 -15377541 -15377542 -15377543 -15377544 -15377545 -15378320 -15378321 -15378322 -15378323 -15378324 -15378325 -15378326 -15378327 -15378328 -15378329 -15378352 -15378353 -15378354 -15378355 -15378356 -15378357 -15378358 -15378359 -15378360 -15378361 -15378832 -15378833 -15378834 -15378835 -15378836 -15378837 -15378838 -15378839 -15378840 -15378841 -15380400 -15380401 -15380402 -15380403 -15380404 -15380405 -15380406 -15380407 -15380408 -15380409 -15711376 -15711377 -15711378 -15711379 -15711380 -15711381 -15711382 -15711383 -15711384 -15711385 -4036006560 -4036006561 -4036006562 -4036006563 -4036006564 -4036006565 -4036006566 -4036006567 -4036006568 -4036006569 -4036015280 -4036015281 -4036015282 -4036015283 -4036015284 -4036015285 -4036015286 -4036015287 -4036015288 -4036015289 -4036067750 -4036067751 -4036067752 -4036067753 -4036067754 -4036067755 -4036067756 -4036067757 -4036067758 -4036067759 -4036068272 -4036068273 -4036068274 -4036068275 -4036068276 -4036068277 -4036068278 -4036068279 -4036068280 -4036068281 -4036068534 -4036068535 -4036068536 -4036068537 -4036068538 -4036068539 -4036068540 -4036068541 -4036068542 -4036068543 -4036069264 -4036069265 -4036069266 -4036069267 -4036069268 -4036069269 -4036069270 -4036069271 -4036069272 -4036069273 -4036070320 -4036070321 -4036070322 -4036070323 -4036070324 -4036070325 -4036070326 -4036070327 -4036070328 -4036070329 -4036071824 -4036071825 -4036071826 -4036071827 -4036071828 -4036071829 -4036071830 -4036071831 -4036071832 -4036071833 -4036072336 -4036072337 -4036072338 -4036072339 -4036072340 -4036072341 -4036072342 -4036072343 -4036072344 -4036072345 -4036073872 -4036073873 -4036073874 -4036073875 -4036073876 -4036073877 -4036073878 -4036073879 -4036073880 -4036073881 -4036074368 -4036074369 -4036074370 -4036074371 -4036074372 -4036074373 -4036074374 -4036074375 -4036074376 -4036074377 -4036074672 -4036074673 -4036074674 -4036074675 -4036074676 -4036074677 -4036074678 -4036074679 -4036074680 -4036074681 -4036076448 -4036076449 -4036076450 -4036076451 -4036076452 -4036076453 -4036076454 -4036076455 -4036076456 -4036076457 -4036076944 -4036076945 -4036076946 -4036076947 -4036076948 -4036076949 -4036076950 -4036076951 -4036076952 -4036076953 -4036080016 -4036080017 -4036080018 -4036080019 -4036080020 -4036080021 -4036080022 -4036080023 -4036080024 -4036080025 -4036081040 -4036081041 -4036081042 -4036081043 -4036081044 -4036081045 -4036081046 -4036081047 -4036081048 -4036081049 -4036081312 -4036081313 -4036081314 -4036081315 -4036081316 -4036081317 -4036081318 -4036081319 -4036081320 -4036081321 -4036405664 -4036405665 -4036405666 -4036405667 -4036405668 -4036405669 -4036405670 -4036405671 -4036405672 -4036405673 -4036406144 -4036406145 -4036406146 -4036406147 -4036406148 -4036406149 -4036406150 -4036406151 -4036406152 -4036406153 -4036406672 -4036406673 -4036406674 -4036406675 -4036406676 -4036406677 -4036406678 -4036406679 -4036406680 -4036406681 -4036861838 -4036861839 -4036861840 -4036861841 -4036861842 -4036861843 -4036861844 -4036861845 -4036861846 -4036861847 -4036861848 -4036861849 -4036861850 -4036861851 -4036861852 -4036861853 -4036861854 -4036861855 -4036861856 -4036861857 -4036861858 -4036861859 -4036861860 -4036861861 -4036861862 -4036861863 -4036861864 -4036861865 -4036861866 -4036861867 -4036861868 -4036861869 -4036861870 -4036861871 -4036861872 -4036861873 -4036861874 -4036861875 -4036861876 -4036861877 -4036861878 -4036861879 -4036861880 -4036861881 -4036861882 -4036861883 -4036861884 -4036861885 -4036861886 -4036861887 -4036920704 -4036920705 -4036920706 -4036920707 -4036920708 -4036920709 -4036920710 -4036920711 -4036920712 -4036920713 -4036922288 -4036922289 -4036922290 -4036922291 -4036922292 -4036922293 -4036922294 -4036922295 -4036922296 -4036922297 -4036928912 -4036928913 -4036928914 -4036928915 -4036928916 -4036928917 -4036928918 -4036928919 -4036928920 -4036928921 -4036997040 -4036997041 -4036997042 -4036997043 -4036997044 -4036997045 -4036997046 -4036997047 -4036997048 -4036997049 -14785454 -14785455 -14785456 -14845344 -14845345 -14845346 -14845347 -14845348 -14845349 -14845350 -14845351 -14845352 -14845353 -14845354 -14845355 -14845356 -14845357 -14845358 -14845359 -14845360 -14845361 -14845362 -14845363 -14845364 -14845365 -14845366 -14845367 -14845368 -14845369 -14845370 -14845371 -14845372 -14845373 -14845374 -14845375 -14845568 -14845569 -14845570 -14845573 -14845574 -14845575 -14845576 -14909575 -14909601 -14909602 -14909603 -14909604 -14909605 -14909606 -14909607 -14909608 -14909609 -14909624 -14909625 -14909626 -15375270 -15375271 -15375272 -15375273 -15375274 -15375275 -15375276 -15375277 -15375278 -15375279 -4036003200 -4036003201 -4036003202 -4036003203 -4036003204 -4036003205 -4036003206 -4036003207 -4036003208 -4036003209 -4036003210 -4036003211 -4036003212 -4036003213 -4036003214 -4036003215 -4036003216 -4036003217 -4036003218 -4036003219 -4036003220 -4036003221 -4036003222 -4036003223 -4036003224 -4036003225 -4036003226 -4036003227 -4036003228 -4036003229 -4036003230 -4036003231 -4036003232 -4036003233 -4036003234 -4036003235 -4036003236 -4036003237 -4036003238 -4036003239 -4036003240 -4036003241 -4036003242 -4036003243 -4036003244 -4036003245 -4036003246 -4036003247 -4036003248 -4036003249 -4036003250 -4036003251 -4036003252 -4036005249 -4036005258 -4036005777 -4036005778 -4036005779 -4036005780 -4036005781 -4036137088 -4036137089 -4036137090 -4036137091 -4036137092 -4036137093 -4036137094 -4036137095 -4036137096 -4036137097 -4036137098 -4036137099 -4036137100 -4036137101 -4036137102 -4036137103 -4036137104 -4036137105 -4036137106 -4036137107 -4036137108 -4036137109 -4036137110 -4036137111 -4036137112 -4036137113 -4036137114 -4036137115 -4036137116 -4036137117 -4036137118 -4036137119 -4036137120 -4036137121 -4036137122 -4036137123 -4036137124 -4036137125 -4036137126 -4036137127 -4036137128 -4036137129 -4036137130 -4036137131 -4036137132 -4036137133 -4036137134 -4036137135 -4036137136 -4036137137 -4036137138 -4036137139 -4036137140 -4036137141 -4036137142 -4036137143 -4036137144 -4036137145 -4036137146 -4036137147 -4036137148 -4036137149 -4036137150 -4036137151 -4036137344 -4036137345 -4036137346 -4036137347 -4036137348 -4036137349 -4036137350 -4036137351 -4036137352 -4036137353 -4036137354 -4036137355 -4036137356 -4036137357 -4036137358 -4036137359 -4036137360 -4036137361 -4036137362 -4036137363 -4036137364 -4036137365 -4036137366 -4036137367 -4036137368 -4036137369 -4036137370 -4036137371 -4036137372 -4036137373 -4036137374 -4036137375 -4036137376 -4036137377 -4036137378 -4036137379 -4036137380 -4036137381 -4036137382 -4036137383 -4036137384 -4036137385 -4036137386 -4036137387 -4036137388 -4036137389 -4036137390 -49842 -49843 -49849 -49852 -49853 -49854 -14722996 -14722997 -14722998 -14722999 -14723000 -14723001 -14724530 -14724531 -14724532 -14724533 -14724534 -14724535 -14725040 -14725041 -14725042 -14725560 -14725561 -14725562 -14725563 -14725564 -14725565 -14725566 -14726552 -14726553 -14726554 -14726555 -14726556 -14726557 -14726558 -14726576 -14726577 -14726578 -14726579 -14726580 -14726581 -14726582 -14726583 -14726584 -14728362 -14728363 -14728364 -14728365 -14728366 -14728367 -14728368 -14728369 -14728370 -14728371 -14781865 -14781866 -14781867 -14781868 -14781869 -14781870 -14781871 -14781872 -14781873 -14781874 -14781875 -14781876 -14781877 -14781878 -14781879 -14781880 -14781881 -14781882 -14781883 -14781884 -14786480 -14786481 -14786482 -14786483 -14786484 -14786485 -14786486 -14786487 -14786488 -14786489 -14788506 -14844336 -14844340 -14844341 -14844342 -14844343 -14844344 -14844345 -14844544 -14844545 -14844546 -14844547 -14844548 -14844549 -14844550 -14844551 -14844552 -14844553 -14845328 -14845329 -14845330 -14845331 -14845332 -14845333 -14845334 -14845335 -14845336 -14845337 -14845338 -14845339 -14845340 -14845341 -14845342 -14845343 -14845577 -14848416 -14848417 -14848418 -14848419 -14848420 -14848421 -14848422 -14848423 -14848424 -14848425 -14848426 -14848427 -14848428 -14848429 -14848430 -14848431 -14848432 -14848433 -14848434 -14848435 -14848436 -14848437 -14848438 -14848439 -14848440 -14848441 -14848442 -14848443 -14848444 -14848445 -14848446 -14848447 -14848640 -14848641 -14848642 -14848643 -14848644 -14848645 -14848646 -14848647 -14848648 -14848649 -14848650 -14848651 -14848652 -14848653 -14848654 -14848655 -14848656 -14848657 -14848658 -14848659 -14848660 -14848661 -14848662 -14848663 -14848664 -14848665 -14848666 -14848667 -14848938 -14848939 -14848940 -14848941 -14848942 -14848943 -14848944 -14848945 -14848946 -14848947 -14848948 -14848949 -14848950 -14848951 -14848952 -14848953 -14848954 -14848955 -14848956 -14848957 -14848958 -14848959 -14851510 -14851511 -14851512 -14851513 -14851514 -14851515 -14851516 -14851517 -14851518 -14851519 -14851712 -14851713 -14851714 -14851715 -14851716 -14851717 -14851718 -14851719 -14851720 -14851721 -14851722 -14851723 -14851724 -14851725 -14851726 -14851727 -14851728 -14851729 -14851730 -14851731 -14857149 -14911122 -14911123 -14911124 -14911125 -14911648 -14911649 -14911650 -14911651 -14911652 -14911653 -14911654 -14911655 -14911656 -14911657 -14911880 -14911881 -14911882 -14911883 -14911884 -14911885 -14911886 -14911887 -14911889 -14911890 -14911891 -14911892 -14911893 -14911894 -14911895 -14911896 -14911897 -14911898 -14911899 -14911900 -14911901 -14911902 -14911903 -14912128 -14912129 -14912130 -14912131 -14912132 -14912133 -14912134 -14912135 -14912136 -14912137 -14912177 -14912178 -14912179 -14912180 -14912181 -14912182 -14912183 -14912184 -14912185 -14912186 -14912187 -14912188 -14912189 -14912190 -14912191 -15376560 -15376561 -15376562 -15376563 -15376564 -15376565 -4036002951 -4036002952 -4036002953 -4036002954 -4036002955 -4036002956 -4036002957 -4036002958 -4036002959 -4036002960 -4036002961 -4036002962 -4036002963 -4036002964 -4036002965 -4036002966 -4036002967 -4036002968 -4036002969 -4036002970 -4036002971 -4036002972 -4036002973 -4036002974 -4036002975 -4036002976 -4036002977 -4036002978 -4036002979 -4036002980 -4036002981 -4036002982 -4036002983 -4036002984 -4036002985 -4036002986 -4036002987 -4036002988 -4036002989 -4036002990 -4036002991 -4036002992 -4036002993 -4036002994 -4036002995 -4036003253 -4036003254 -4036003255 -4036003256 -4036003466 -4036003467 -4036004769 -4036004770 -4036004771 -4036004772 -4036004773 -4036004774 -4036004775 -4036004776 -4036004777 -4036004778 -4036004779 -4036004780 -4036004781 -4036004782 -4036004783 -4036004784 -4036004785 -4036004786 -4036004787 -4036004788 -4036004789 -4036004790 -4036004791 -4036004792 -4036004793 -4036004794 -4036004795 -4036005024 -4036005025 -4036005026 -4036005027 -4036010392 -4036010393 -4036010394 -4036010395 -4036010396 -4036010397 -4036010398 -4036010399 -4036010425 -4036010426 -4036010427 -4036010428 -4036010429 -4036010430 -4036010431 -4036010663 -4036010664 -4036010665 -4036010666 -4036010667 -4036010668 -4036010669 -4036010670 -4036010671 -4036010939 -4036010940 -4036010941 -4036010942 -4036010943 -4036011158 -4036011159 -4036011160 -4036011161 -4036011162 -4036011163 4036011708 4036011709 4036011904 @@ -1464,6 +541,26 @@ 4036015037 4036015038 4036015039 +4036015280 +4036015281 +4036015282 +4036015283 +4036015284 +4036015285 +4036015286 +4036015287 +4036015288 +4036015289 +4036015488 +4036015489 +4036015490 +4036015491 +4036015492 +4036015493 +4036015494 +4036015495 +4036015496 +4036015497 4036016544 4036016545 4036016546 @@ -1536,6 +633,46 @@ 4036067747 4036067748 4036067749 +4036067750 +4036067751 +4036067752 +4036067753 +4036067754 +4036067755 +4036067756 +4036067757 +4036067758 +4036067759 +4036068272 +4036068273 +4036068274 +4036068275 +4036068276 +4036068277 +4036068278 +4036068279 +4036068280 +4036068281 +4036068534 +4036068535 +4036068536 +4036068537 +4036068538 +4036068539 +4036068540 +4036068541 +4036068542 +4036068543 +4036069264 +4036069265 +4036069266 +4036069267 +4036069268 +4036069269 +4036069270 +4036069271 +4036069272 +4036069273 4036069281 4036069282 4036069283 @@ -1556,8 +693,98 @@ 4036069298 4036069299 4036069300 +4036070320 +4036070321 +4036070322 +4036070323 +4036070324 +4036070325 +4036070326 +4036070327 +4036070328 +4036070329 +4036071824 +4036071825 +4036071826 +4036071827 +4036071828 +4036071829 +4036071830 +4036071831 +4036071832 +4036071833 +4036072336 +4036072337 +4036072338 +4036072339 +4036072340 +4036072341 +4036072342 +4036072343 +4036072344 +4036072345 +4036073872 +4036073873 +4036073874 +4036073875 +4036073876 +4036073877 +4036073878 +4036073879 +4036073880 +4036073881 +4036074368 +4036074369 +4036074370 +4036074371 +4036074372 +4036074373 +4036074374 +4036074375 +4036074376 +4036074377 +4036074384 +4036074385 +4036074386 +4036074387 +4036074388 +4036074389 +4036074390 +4036074391 +4036074392 +4036074393 +4036074394 +4036074395 +4036074396 +4036074397 +4036074398 +4036074399 +4036074400 +4036074401 +4036074402 +4036074403 +4036074672 +4036074673 +4036074674 +4036074675 +4036074676 +4036074677 +4036074678 +4036074679 +4036074680 +4036074681 4036074682 4036074683 +4036076448 +4036076449 +4036076450 +4036076451 +4036076452 +4036076453 +4036076454 +4036076455 +4036076456 +4036076457 4036076458 4036076459 4036076460 @@ -1567,6 +794,36 @@ 4036076464 4036076465 4036076466 +4036076944 +4036076945 +4036076946 +4036076947 +4036076948 +4036076949 +4036076950 +4036076951 +4036076952 +4036076953 +4036079536 +4036079537 +4036079538 +4036079539 +4036079540 +4036079541 +4036079542 +4036079543 +4036079544 +4036079545 +4036080016 +4036080017 +4036080018 +4036080019 +4036080020 +4036080021 +4036080022 +4036080023 +4036080024 +4036080025 4036080026 4036080027 4036080028 @@ -1586,6 +843,26 @@ 4036080042 4036080043 4036080044 +4036081040 +4036081041 +4036081042 +4036081043 +4036081044 +4036081045 +4036081046 +4036081047 +4036081048 +4036081049 +4036081312 +4036081313 +4036081314 +4036081315 +4036081316 +4036081317 +4036081318 +4036081319 +4036081320 +4036081321 4036083584 4036083585 4036083586 @@ -1607,6 +884,177 @@ 4036083602 4036083603 4036083604 +4036137088 +4036137089 +4036137090 +4036137091 +4036137092 +4036137093 +4036137094 +4036137095 +4036137096 +4036137097 +4036137098 +4036137099 +4036137100 +4036137101 +4036137102 +4036137103 +4036137104 +4036137105 +4036137106 +4036137107 +4036137108 +4036137109 +4036137110 +4036137111 +4036137112 +4036137113 +4036137114 +4036137115 +4036137116 +4036137117 +4036137118 +4036137119 +4036137120 +4036137121 +4036137122 +4036137123 +4036137124 +4036137125 +4036137126 +4036137127 +4036137128 +4036137129 +4036137130 +4036137131 +4036137132 +4036137133 +4036137134 +4036137135 +4036137136 +4036137137 +4036137138 +4036137139 +4036137140 +4036137141 +4036137142 +4036137143 +4036137144 +4036137145 +4036137146 +4036137147 +4036137148 +4036137149 +4036137150 +4036137151 +4036137344 +4036137345 +4036137346 +4036137347 +4036137348 +4036137349 +4036137350 +4036137351 +4036137352 +4036137353 +4036137354 +4036137355 +4036137356 +4036137357 +4036137358 +4036137359 +4036137360 +4036137361 +4036137362 +4036137363 +4036137364 +4036137365 +4036137366 +4036137367 +4036137368 +4036137369 +4036137370 +4036137371 +4036137372 +4036137373 +4036137374 +4036137375 +4036137376 +4036137377 +4036137378 +4036137379 +4036137380 +4036137381 +4036137382 +4036137383 +4036137384 +4036137385 +4036137386 +4036137387 +4036137388 +4036137389 +4036137390 +14781865 +14781866 +14781867 +14781868 +14781869 +14781870 +14781871 +14781872 +14781873 +14781874 +14781875 +14781876 +14781877 +14781878 +14781879 +14781880 +14781881 +14781882 +14781883 +14781884 +4036396208 +4036396209 +4036396210 +4036396211 +4036396212 +4036396213 +4036396214 +4036396215 +4036396216 +4036396217 +4036405664 +4036405665 +4036405666 +4036405667 +4036405668 +4036405669 +4036405670 +4036405671 +4036405672 +4036405673 +4036406144 +4036406145 +4036406146 +4036406147 +4036406148 +4036406149 +4036406150 +4036406151 +4036406152 +4036406153 +4036406672 +4036406673 +4036406674 +4036406675 +4036406676 +4036406677 +4036406678 +4036406679 +4036406680 +4036406681 4036406683 4036406684 4036406685 @@ -1614,6 +1062,16 @@ 4036406687 4036406688 4036406689 +4036408752 +4036408753 +4036408754 +4036408755 +4036408756 +4036408757 +4036408758 +4036408759 +4036408760 +4036408761 4036409984 4036409985 4036409986 @@ -1637,6 +1095,120 @@ 4036410004 4036410005 4036410006 +14785454 +14785455 +14785456 +14786464 +14786465 +14786466 +14786467 +14786468 +14786469 +14786470 +14786471 +14786472 +14786473 +14786480 +14786481 +14786482 +14786483 +14786484 +14786485 +14786486 +14786487 +14786488 +14786489 +14786704 +14786705 +14786706 +14786707 +14786708 +14786709 +14786710 +14786711 +14786712 +14786713 +14787974 +14787975 +14787976 +14787977 +14787978 +14787979 +14787980 +14787981 +14787982 +14787983 +14788496 +14788497 +14788498 +14788499 +14788500 +14788501 +14788502 +14788503 +14788504 +14788505 +14788506 +14789248 +14789249 +14789250 +14789251 +14789252 +14789253 +14789254 +14789255 +14789256 +14789257 +14789264 +14789265 +14789266 +14789267 +14789268 +14789269 +14789270 +14789271 +14789272 +14789273 +14790032 +14790033 +14790034 +14790035 +14790036 +14790037 +14790038 +14790039 +14790040 +14790041 +14790320 +14790321 +14790322 +14790323 +14790324 +14790325 +14790326 +14790327 +14790328 +14790329 +14791040 +14791041 +14791042 +14791043 +14791044 +14791045 +14791046 +14791047 +14791048 +14791049 +14791056 +14791057 +14791058 +14791059 +14791060 +14791061 +14791062 +14791063 +14791064 +14791065 4036856736 4036856737 4036856738 @@ -1682,6 +1254,85 @@ 4036857270 4036857271 4036857272 +4036861838 +4036861839 +4036861840 +4036861841 +4036861842 +4036861843 +4036861844 +4036861845 +4036861846 +4036861847 +4036861848 +4036861849 +4036861850 +4036861851 +4036861852 +4036861853 +4036861854 +4036861855 +4036861856 +4036861857 +4036861858 +4036861859 +4036861860 +4036861861 +4036861862 +4036861863 +4036861864 +4036861865 +4036861866 +4036861867 +4036861868 +4036861869 +4036861870 +4036861871 +4036861872 +4036861873 +4036861874 +4036861875 +4036861876 +4036861877 +4036861878 +4036861879 +4036861880 +4036861881 +4036861882 +4036861883 +4036861884 +4036861885 +4036861886 +4036861887 +4036920704 +4036920705 +4036920706 +4036920707 +4036920708 +4036920709 +4036920710 +4036920711 +4036920712 +4036920713 +4036922288 +4036922289 +4036922290 +4036922291 +4036922292 +4036922293 +4036922294 +4036922295 +4036922296 +4036922297 +4036925361 +4036925362 +4036925363 +4036925364 +4036925365 +4036925366 +4036925367 +4036925368 +4036925369 4036928391 4036928392 4036928393 @@ -1691,6 +1342,16 @@ 4036928397 4036928398 4036928399 +4036928912 +4036928913 +4036928914 +4036928915 +4036928916 +4036928917 +4036928918 +4036928919 +4036928920 +4036928921 4036932017 4036932018 4036932019 @@ -1830,3 +1491,372 @@ 4036985994 4036985995 4036985996 +4036997040 +4036997041 +4036997042 +4036997043 +4036997044 +4036997045 +4036997046 +4036997047 +4036997048 +4036997049 +14844336 +14844340 +14844341 +14844342 +14844343 +14844344 +14844345 +14844544 +14844545 +14844546 +14844547 +14844548 +14844549 +14844550 +14844551 +14844552 +14844553 +14845328 +14845329 +14845330 +14845331 +14845332 +14845333 +14845334 +14845335 +14845336 +14845337 +14845338 +14845339 +14845340 +14845341 +14845342 +14845343 +14845344 +14845345 +14845346 +14845347 +14845348 +14845349 +14845350 +14845351 +14845352 +14845353 +14845354 +14845355 +14845356 +14845357 +14845358 +14845359 +14845360 +14845361 +14845362 +14845363 +14845364 +14845365 +14845366 +14845367 +14845368 +14845369 +14845370 +14845371 +14845372 +14845373 +14845374 +14845375 +14845568 +14845569 +14845570 +14845571 +14845572 +14845573 +14845574 +14845575 +14845576 +14845577 +14848416 +14848417 +14848418 +14848419 +14848420 +14848421 +14848422 +14848423 +14848424 +14848425 +14848426 +14848427 +14848428 +14848429 +14848430 +14848431 +14848432 +14848433 +14848434 +14848435 +14848436 +14848437 +14848438 +14848439 +14848440 +14848441 +14848442 +14848443 +14848444 +14848445 +14848446 +14848447 +14848640 +14848641 +14848642 +14848643 +14848644 +14848645 +14848646 +14848647 +14848648 +14848649 +14848650 +14848651 +14848652 +14848653 +14848654 +14848655 +14848656 +14848657 +14848658 +14848659 +14848660 +14848661 +14848662 +14848663 +14848664 +14848665 +14848666 +14848667 +14848938 +14848939 +14848940 +14848941 +14848942 +14848943 +14848944 +14848945 +14848946 +14848947 +14848948 +14848949 +14848950 +14848951 +14848952 +14848953 +14848954 +14848955 +14848956 +14848957 +14848958 +14848959 +14851510 +14851511 +14851512 +14851513 +14851514 +14851515 +14851516 +14851517 +14851518 +14851519 +14851712 +14851713 +14851714 +14851715 +14851716 +14851717 +14851718 +14851719 +14851720 +14851721 +14851722 +14851723 +14851724 +14851725 +14851726 +14851727 +14851728 +14851729 +14851730 +14851731 +14857149 +14909575 +14909601 +14909602 +14909603 +14909604 +14909605 +14909606 +14909607 +14909608 +14909609 +14909624 +14909625 +14909626 +14911122 +14911123 +14911124 +14911125 +14911648 +14911649 +14911650 +14911651 +14911652 +14911653 +14911654 +14911655 +14911656 +14911657 +14911880 +14911881 +14911882 +14911883 +14911884 +14911885 +14911886 +14911887 +14911889 +14911890 +14911891 +14911892 +14911893 +14911894 +14911895 +14911896 +14911897 +14911898 +14911899 +14911900 +14911901 +14911902 +14911903 +14912128 +14912129 +14912130 +14912131 +14912132 +14912133 +14912134 +14912135 +14912136 +14912137 +14912177 +14912178 +14912179 +14912180 +14912181 +14912182 +14912183 +14912184 +14912185 +14912186 +14912187 +14912188 +14912189 +14912190 +14912191 +15374496 +15374497 +15374498 +15374499 +15374500 +15374501 +15374502 +15374503 +15374504 +15374505 +15375270 +15375271 +15375272 +15375273 +15375274 +15375275 +15375276 +15375277 +15375278 +15375279 +15376560 +15376561 +15376562 +15376563 +15376564 +15376565 +15377296 +15377297 +15377298 +15377299 +15377300 +15377301 +15377302 +15377303 +15377304 +15377305 +15377536 +15377537 +15377538 +15377539 +15377540 +15377541 +15377542 +15377543 +15377544 +15377545 +15378320 +15378321 +15378322 +15378323 +15378324 +15378325 +15378326 +15378327 +15378328 +15378329 +15378352 +15378353 +15378354 +15378355 +15378356 +15378357 +15378358 +15378359 +15378360 +15378361 +15378832 +15378833 +15378834 +15378835 +15378836 +15378837 +15378838 +15378839 +15378840 +15378841 +15380400 +15380401 +15380402 +15380403 +15380404 +15380405 +15380406 +15380407 +15380408 +15380409 +15711376 +15711377 +15711378 +15711379 +15711380 +15711381 +15711382 +15711383 +15711384 +15711385 diff --git a/level_0/f_utf/data/tests/bytesequences/phonetic-all.txt b/level_0/f_utf/data/tests/bytesequences/phonetic-all.txt index c51ad3e9d..32ae9280c 100644 --- a/level_0/f_utf/data/tests/bytesequences/phonetic-all.txt +++ b/level_0/f_utf/data/tests/bytesequences/phonetic-all.txt @@ -190,3 +190,4 @@ 14792381 14792382 14792383 +15376014 diff --git a/level_0/f_utf/data/tests/codepoints/combining-all.txt b/level_0/f_utf/data/tests/codepoints/combining-all.txt index a0632ede5..8378a1899 100644 --- a/level_0/f_utf/data/tests/codepoints/combining-all.txt +++ b/level_0/f_utf/data/tests/codepoints/combining-all.txt @@ -293,6 +293,8 @@ U+082D U+0859 U+085A U+085B +U+0896 +U+0897 U+0898 U+0899 U+089A @@ -658,6 +660,9 @@ U+10A3A U+10A3F U+10AE5 U+10AE6 +U+10D69 +U+10D6A +U+10EFC U+10EFD U+10EFE U+10EFF @@ -717,27 +722,6 @@ U+111BE U+111CA U+111CB U+111CC -U+11F00 -U+11F01 -U+11F02 -U+11F03 -U+11F34 -U+11F35 -U+11F36 -U+11F37 -U+11F38 -U+11F39 -U+11F3A -U+11F3E -U+11F3F -U+11F40 -U+11F41 -U+11F42 -U+1E08F -U+1E4EC -U+1E4ED -U+1E4EE -U+1E4EF U+1122F U+11230 U+11231 @@ -769,6 +753,30 @@ U+11371 U+11372 U+11373 U+11374 +U+113B8 +U+113B9 +U+113BA +U+113BB +U+113BC +U+113BD +U+113BE +U+113BF +U+113C0 +U+113C2 +U+113C5 +U+113C7 +U+113C8 +U+113C9 +U+113CA +U+113CC +U+113CD +U+113CE +U+113CF +U+113D0 +U+113D1 +U+113D2 +U+113E1 +U+113E2 U+114B3 U+114B4 U+114B5 @@ -823,9 +831,35 @@ U+11728 U+11729 U+1172A U+1172B +U+11F00 +U+11F01 +U+11F02 +U+11F03 +U+11F34 +U+11F35 +U+11F36 +U+11F37 +U+11F38 +U+11F39 +U+11F3A +U+11F3E +U+11F3F +U+11F40 +U+11F41 +U+11F42 +U+11F5A U+135D U+135E U+135F +U+1611E +U+1611F +U+16120 +U+1612A +U+1612B +U+1612C +U+1612D +U+1612E +U+1612F U+16AF0 U+16AF1 U+16AF2 @@ -954,13 +988,19 @@ U+1B00 U+1B01 U+1B02 U+1B03 +U+1B04 U+1B34 +U+1B35 U+1B36 U+1B37 U+1B38 U+1B39 U+1B3A +U+1B3B U+1B3C +U+1B3D +U+1B3E +U+1B3F U+1B42 U+1B6B U+1B6C @@ -1004,7 +1044,6 @@ U+1C37 U+1CD0 U+1CD1 U+1CD2 -U+1CD3 U+1CD4 U+1CD5 U+1CD6 @@ -1018,6 +1057,7 @@ U+1CDD U+1CDE U+1CDF U+1CE0 +U+1CE1 U+1CE2 U+1CE3 U+1CE4 @@ -1245,6 +1285,11 @@ U+1DFC U+1DFD U+1DFE U+1DFF +U+1E08F +U+1E4EC +U+1E4ED +U+1E4EE +U+1E4EF U+1E8D0 U+1E8D1 U+1E8D2 @@ -1320,6 +1365,7 @@ U+A689 U+A68A U+A68B U+A68C +U+A68C U+A68D U+A68E U+A68F diff --git a/level_0/f_utf/data/tests/codepoints/control_picture-all.txt b/level_0/f_utf/data/tests/codepoints/control_picture-all.txt new file mode 100644 index 000000000..ff3a12689 --- /dev/null +++ b/level_0/f_utf/data/tests/codepoints/control_picture-all.txt @@ -0,0 +1,43 @@ + +U+2400 +U+2401 +U+2402 +U+2403 +U+2404 +U+2405 +U+2406 +U+2407 +U+2408 +U+2409 +U+240A +U+240B +U+240C +U+240D +U+240E +U+240F +U+2410 +U+2411 +U+2412 +U+2413 +U+2414 +U+2415 +U+2416 +U+2417 +U+2418 +U+2419 +U+241A +U+241B +U+241C +U+241D +U+241E +U+241F +U+2420 +U+2421 +U+2422 +U+2423 +U+2424 +U+2425 +U+2426 +U+2427 +U+2428 +U+2429 diff --git a/level_0/f_utf/data/tests/codepoints/digit-all.txt b/level_0/f_utf/data/tests/codepoints/digit-all.txt index 7c17dbcc8..cd488f5da 100644 --- a/level_0/f_utf/data/tests/codepoints/digit-all.txt +++ b/level_0/f_utf/data/tests/codepoints/digit-all.txt @@ -1,293 +1,293 @@ -U+0030 -U+0031 -U+0032 -U+0033 -U+0034 -U+0035 -U+0036 -U+0037 -U+0038 -U+0039 -U+0660 -U+0661 -U+0662 -U+0663 -U+0664 -U+0665 -U+0666 -U+0667 -U+0668 -U+0669 -U+06F0 -U+06F1 -U+06F2 -U+06F3 -U+06F4 -U+06F5 -U+06F6 -U+06F7 -U+06F8 -U+06F9 -U+07C0 -U+07C1 -U+07C2 -U+07C3 -U+07C4 -U+07C5 -U+07C6 -U+07C7 -U+07C8 -U+07C9 -U+0966 -U+0967 -U+0968 -U+0969 -U+096A -U+096B -U+096C -U+096D -U+096E -U+096F -U+09E6 -U+09E7 -U+09E8 -U+09E9 -U+09EA -U+09EB -U+09EC -U+09ED -U+09EE -U+09EF -U+0A66 -U+0A67 -U+0A68 -U+0A69 -U+0A6A -U+0A6B -U+0A6C -U+0A6D -U+0A6E -U+0A6F -U+0AE6 -U+0AE7 -U+0AE8 -U+0AE9 -U+0AEA -U+0AEB -U+0AEC -U+0AED -U+0AEE -U+0AEF -U+0B66 -U+0B67 -U+0B68 -U+0B69 -U+0B6A -U+0B6B -U+0B6C -U+0B6D -U+0B6E -U+0B6F -U+0BE6 -U+0BE7 -U+0BE8 -U+0BE9 -U+0BEA -U+0BEB -U+0BEC -U+0BED -U+0BEE -U+0BEF -U+0C66 -U+0C67 -U+0C68 -U+0C69 -U+0C6A -U+0C6B -U+0C6C -U+0C6D -U+0C6E -U+0C6F -U+0CE6 -U+0CE7 -U+0CE8 -U+0CE9 -U+0CEA -U+0CEB -U+0CEC -U+0CED -U+0CEE -U+0CEF -U+0D66 -U+0D67 -U+0D68 -U+0D69 -U+0D6A -U+0D6B -U+0D6C -U+0D6D -U+0D6E -U+0D6F -U+0DE6 -U+0DE7 -U+0DE8 -U+0DE9 -U+0DEA -U+0DEB -U+0DEC -U+0DED -U+0DEE -U+0DEF -U+0E50 -U+0E51 -U+0E52 -U+0E53 -U+0E54 -U+0E55 -U+0E56 -U+0E57 -U+0E58 -U+0E59 -U+0ED0 -U+0ED1 -U+0ED2 -U+0ED3 -U+0ED4 -U+0ED5 -U+0ED6 -U+0ED7 -U+0ED8 -U+0ED9 -U+0F20 -U+0F21 -U+0F22 -U+0F23 -U+0F24 -U+0F25 -U+0F26 -U+0F27 -U+0F28 -U+0F29 -U+1040 -U+1041 -U+1042 -U+1043 -U+1044 -U+1045 -U+1046 -U+1047 -U+1048 -U+1049 -U+1090 -U+1091 -U+1092 -U+1093 -U+1094 -U+1095 -U+1096 -U+1097 -U+1098 -U+1099 -U+17E0 -U+17E1 -U+17E2 -U+17E3 -U+17E4 -U+17E5 -U+17E6 -U+17E7 -U+17E8 -U+17E9 -U+1810 -U+1811 -U+1812 -U+1813 -U+1814 -U+1815 -U+1816 -U+1817 -U+1818 -U+1819 -U+1946 -U+1947 -U+1948 -U+1949 -U+194A -U+194B -U+194C -U+194D -U+194E -U+194F -U+19D0 -U+19D1 -U+19D2 -U+19D3 -U+19D4 -U+19D5 -U+19D6 -U+19D7 -U+19D8 -U+19D9 -U+1A80 -U+1A81 -U+1A82 -U+1A83 -U+1A84 -U+1A85 -U+1A86 -U+1A87 -U+1A88 -U+1A89 -U+1A90 -U+1A91 -U+1A92 -U+1A93 -U+1A94 -U+1A95 -U+1A96 -U+1A97 -U+1A98 -U+1A99 -U+1B50 -U+1B51 -U+1B52 -U+1B53 -U+1B54 -U+1B55 -U+1B56 -U+1B57 -U+1B58 -U+1B59 -U+1BB0 -U+1BB1 -U+1BB2 -U+1BB3 -U+1BB4 -U+1BB5 -U+1BB6 -U+1BB7 -U+1BB8 -U+1BB9 -U+1C40 -U+1C41 -U+1C42 -U+1C43 -U+1C44 -U+1C45 -U+1C46 -U+1C47 -U+1C48 -U+1C49 -U+1C50 -U+1C51 -U+1C52 -U+1C53 -U+1C54 -U+1C55 -U+1C56 -U+1C57 -U+1C58 -U+1C59 +U+0030 +U+0031 +U+0032 +U+0033 +U+0034 +U+0035 +U+0036 +U+0037 +U+0038 +U+0039 +U+0660 +U+0661 +U+0662 +U+0663 +U+0664 +U+0665 +U+0666 +U+0667 +U+0668 +U+0669 +U+06F0 +U+06F1 +U+06F2 +U+06F3 +U+06F4 +U+06F5 +U+06F6 +U+06F7 +U+06F8 +U+06F9 +U+07C0 +U+07C1 +U+07C2 +U+07C3 +U+07C4 +U+07C5 +U+07C6 +U+07C7 +U+07C8 +U+07C9 +U+0966 +U+0967 +U+0968 +U+0969 +U+096A +U+096B +U+096C +U+096D +U+096E +U+096F +U+09E6 +U+09E7 +U+09E8 +U+09E9 +U+09EA +U+09EB +U+09EC +U+09ED +U+09EE +U+09EF +U+0A66 +U+0A67 +U+0A68 +U+0A69 +U+0A6A +U+0A6B +U+0A6C +U+0A6D +U+0A6E +U+0A6F +U+0AE6 +U+0AE7 +U+0AE8 +U+0AE9 +U+0AEA +U+0AEB +U+0AEC +U+0AED +U+0AEE +U+0AEF +U+0B66 +U+0B67 +U+0B68 +U+0B69 +U+0B6A +U+0B6B +U+0B6C +U+0B6D +U+0B6E +U+0B6F +U+0BE6 +U+0BE7 +U+0BE8 +U+0BE9 +U+0BEA +U+0BEB +U+0BEC +U+0BED +U+0BEE +U+0BEF +U+0C66 +U+0C67 +U+0C68 +U+0C69 +U+0C6A +U+0C6B +U+0C6C +U+0C6D +U+0C6E +U+0C6F +U+0CE6 +U+0CE7 +U+0CE8 +U+0CE9 +U+0CEA +U+0CEB +U+0CEC +U+0CED +U+0CEE +U+0CEF +U+0D66 +U+0D67 +U+0D68 +U+0D69 +U+0D6A +U+0D6B +U+0D6C +U+0D6D +U+0D6E +U+0D6F +U+0DE6 +U+0DE7 +U+0DE8 +U+0DE9 +U+0DEA +U+0DEB +U+0DEC +U+0DED +U+0DEE +U+0DEF +U+0E50 +U+0E51 +U+0E52 +U+0E53 +U+0E54 +U+0E55 +U+0E56 +U+0E57 +U+0E58 +U+0E59 +U+0ED0 +U+0ED1 +U+0ED2 +U+0ED3 +U+0ED4 +U+0ED5 +U+0ED6 +U+0ED7 +U+0ED8 +U+0ED9 +U+0F20 +U+0F21 +U+0F22 +U+0F23 +U+0F24 +U+0F25 +U+0F26 +U+0F27 +U+0F28 +U+0F29 +U+1040 +U+1041 +U+1042 +U+1043 +U+1044 +U+1045 +U+1046 +U+1047 +U+1048 +U+1049 +U+1090 +U+1091 +U+1092 +U+1093 +U+1094 +U+1095 +U+1096 +U+1097 +U+1098 +U+1099 +U+17E0 +U+17E1 +U+17E2 +U+17E3 +U+17E4 +U+17E5 +U+17E6 +U+17E7 +U+17E8 +U+17E9 +U+1810 +U+1811 +U+1812 +U+1813 +U+1814 +U+1815 +U+1816 +U+1817 +U+1818 +U+1819 +U+1946 +U+1947 +U+1948 +U+1949 +U+194A +U+194B +U+194C +U+194D +U+194E +U+194F +U+19D0 +U+19D1 +U+19D2 +U+19D3 +U+19D4 +U+19D5 +U+19D6 +U+19D7 +U+19D8 +U+19D9 +U+1A80 +U+1A81 +U+1A82 +U+1A83 +U+1A84 +U+1A85 +U+1A86 +U+1A87 +U+1A88 +U+1A89 +U+1A90 +U+1A91 +U+1A92 +U+1A93 +U+1A94 +U+1A95 +U+1A96 +U+1A97 +U+1A98 +U+1A99 +U+1B50 +U+1B51 +U+1B52 +U+1B53 +U+1B54 +U+1B55 +U+1B56 +U+1B57 +U+1B58 +U+1B59 +U+1BB0 +U+1BB1 +U+1BB2 +U+1BB3 +U+1BB4 +U+1BB5 +U+1BB6 +U+1BB7 +U+1BB8 +U+1BB9 +U+1C40 +U+1C41 +U+1C42 +U+1C43 +U+1C44 +U+1C45 +U+1C46 +U+1C47 +U+1C48 +U+1C49 +U+1C50 +U+1C51 +U+1C52 +U+1C53 +U+1C54 +U+1C55 +U+1C56 +U+1C57 +U+1C58 +U+1C59 U+2160 U+2161 U+2162 @@ -329,86 +329,86 @@ U+2185 U+2186 U+2187 U+2188 -U+A620 -U+A621 -U+A622 -U+A623 -U+A624 -U+A625 -U+A626 -U+A627 -U+A628 -U+A629 -U+A8D0 -U+A8D1 -U+A8D2 -U+A8D3 -U+A8D4 -U+A8D5 -U+A8D6 -U+A8D7 -U+A8D8 -U+A8D9 -U+A900 -U+A901 -U+A902 -U+A903 -U+A904 -U+A905 -U+A906 -U+A907 -U+A908 -U+A909 -U+A9D0 -U+A9D1 -U+A9D2 -U+A9D3 -U+A9D4 -U+A9D5 -U+A9D6 -U+A9D7 -U+A9D8 -U+A9D9 -U+A9F0 -U+A9F1 -U+A9F2 -U+A9F3 -U+A9F4 -U+A9F5 -U+A9F6 -U+A9F7 -U+A9F8 -U+A9F9 -U+AA50 -U+AA51 -U+AA52 -U+AA53 -U+AA54 -U+AA55 -U+AA56 -U+AA57 -U+AA58 -U+AA59 -U+ABF0 -U+ABF1 -U+ABF2 -U+ABF3 -U+ABF4 -U+ABF5 -U+ABF6 -U+ABF7 -U+ABF8 -U+ABF9 -U+FF10 -U+FF11 -U+FF12 -U+FF13 -U+FF14 -U+FF15 -U+FF16 -U+FF17 -U+FF18 -U+FF19 +U+A620 +U+A621 +U+A622 +U+A623 +U+A624 +U+A625 +U+A626 +U+A627 +U+A628 +U+A629 +U+A8D0 +U+A8D1 +U+A8D2 +U+A8D3 +U+A8D4 +U+A8D5 +U+A8D6 +U+A8D7 +U+A8D8 +U+A8D9 +U+A900 +U+A901 +U+A902 +U+A903 +U+A904 +U+A905 +U+A906 +U+A907 +U+A908 +U+A909 +U+A9D0 +U+A9D1 +U+A9D2 +U+A9D3 +U+A9D4 +U+A9D5 +U+A9D6 +U+A9D7 +U+A9D8 +U+A9D9 +U+A9F0 +U+A9F1 +U+A9F2 +U+A9F3 +U+A9F4 +U+A9F5 +U+A9F6 +U+A9F7 +U+A9F8 +U+A9F9 +U+AA50 +U+AA51 +U+AA52 +U+AA53 +U+AA54 +U+AA55 +U+AA56 +U+AA57 +U+AA58 +U+AA59 +U+ABF0 +U+ABF1 +U+ABF2 +U+ABF3 +U+ABF4 +U+ABF5 +U+ABF6 +U+ABF7 +U+ABF8 +U+ABF9 +U+FF10 +U+FF11 +U+FF12 +U+FF13 +U+FF14 +U+FF15 +U+FF16 +U+FF17 +U+FF18 +U+FF19 U+104A0 U+104A1 U+104A2 @@ -1641,3 +1641,73 @@ U+1E4F6 U+1E4F7 U+1E4F8 U+1E4F9 +U+10D40 +U+10D41 +U+10D42 +U+10D43 +U+10D44 +U+10D45 +U+10D46 +U+10D47 +U+10D48 +U+10D49 +U+116D0 +U+116D1 +U+116D2 +U+116D3 +U+116D4 +U+116D5 +U+116D6 +U+116D7 +U+116D8 +U+116D9 +U+116DA +U+116DB +U+116DC +U+116DD +U+116DE +U+116DF +U+116E0 +U+116E1 +U+116E2 +U+116E3 +U+11BF0 +U+11BF1 +U+11BF2 +U+11BF3 +U+11BF4 +U+11BF5 +U+11BF6 +U+11BF7 +U+11BF8 +U+11BF9 +U+16130 +U+16131 +U+16132 +U+16133 +U+16134 +U+16135 +U+16136 +U+16137 +U+16138 +U+16139 +U+16D70 +U+16D71 +U+16D72 +U+16D73 +U+16D74 +U+16D75 +U+16D76 +U+16D77 +U+16D78 +U+16D79 +U+1E5F1 +U+1E5F2 +U+1E5F3 +U+1E5F4 +U+1E5F5 +U+1E5F6 +U+1E5F7 +U+1E5F8 +U+1E5F9 +U+1E5FA diff --git a/level_0/f_utf/data/tests/codepoints/emoji-all.txt b/level_0/f_utf/data/tests/codepoints/emoji-all.txt index 6fd5e16e1..74b050c15 100644 --- a/level_0/f_utf/data/tests/codepoints/emoji-all.txt +++ b/level_0/f_utf/data/tests/codepoints/emoji-all.txt @@ -1,7 +1,7 @@ U+00A9 U+00AE U+1F004 -U+1F0CF +U+1F0CF U+1F170 U+1F171 U+1F17F @@ -1130,6 +1130,8 @@ U+1FA85 U+1FA86 U+1FA87 U+1FA88 +U+1FA89 +U+1FA8F U+1FA90 U+1FA91 U+1FA92 @@ -1176,6 +1178,7 @@ U+1FABA U+1FABB U+1FABC U+1FABD +U+1FABE U+1FABF U+1FAC0 U+1FAC1 @@ -1183,6 +1186,7 @@ U+1FAC2 U+1FAC3 U+1FAC4 U+1FAC5 +U+1FAC6 U+1FACE U+1FACF U+1FAD0 diff --git a/level_0/f_utf/data/tests/codepoints/numeric-all.txt b/level_0/f_utf/data/tests/codepoints/numeric-all.txt index b108d1ae7..74755ea70 100644 --- a/level_0/f_utf/data/tests/codepoints/numeric-all.txt +++ b/level_0/f_utf/data/tests/codepoints/numeric-all.txt @@ -8,6 +8,12 @@ U+0036 U+0037 U+0038 U+0039 +U+00B2 +U+00B3 +U+00B9 +U+00BC +U+00BD +U+00BE U+0660 U+0661 U+0662 @@ -58,6 +64,12 @@ U+09EC U+09ED U+09EE U+09EF +U+09F4 +U+09F5 +U+09F6 +U+09F7 +U+09F8 +U+09F9 U+0A66 U+0A67 U+0A68 @@ -88,6 +100,12 @@ U+0B6C U+0B6D U+0B6E U+0B6F +U+0B72 +U+0B73 +U+0B74 +U+0B75 +U+0B76 +U+0B77 U+0BE6 U+0BE7 U+0BE8 @@ -98,6 +116,9 @@ U+0BEC U+0BED U+0BEE U+0BEF +U+0BF0 +U+0BF1 +U+0BF2 U+0C66 U+0C67 U+0C68 @@ -108,6 +129,13 @@ U+0C6C U+0C6D U+0C6E U+0C6F +U+0C78 +U+0C79 +U+0C7A +U+0C7B +U+0C7C +U+0C7D +U+0C7E U+0CE6 U+0CE7 U+0CE8 @@ -118,6 +146,13 @@ U+0CEC U+0CED U+0CEE U+0CEF +U+0D58 +U+0D59 +U+0D5A +U+0D5B +U+0D5C +U+0D5D +U+0D5E U+0D66 U+0D67 U+0D68 @@ -128,6 +163,15 @@ U+0D6C U+0D6D U+0D6E U+0D6F +U+0D70 +U+0D71 +U+0D72 +U+0D73 +U+0D74 +U+0D75 +U+0D76 +U+0D77 +U+0D78 U+0DE6 U+0DE7 U+0DE8 @@ -168,6 +212,158 @@ U+0F26 U+0F27 U+0F28 U+0F29 +U+0F2A +U+0F2B +U+0F2C +U+0F2D +U+0F2E +U+0F2F +U+0F30 +U+0F31 +U+0F32 +U+0F33 +U+10107 +U+10108 +U+10109 +U+1010A +U+1010B +U+1010C +U+1010D +U+1010E +U+1010F +U+10110 +U+10111 +U+10112 +U+10113 +U+10114 +U+10115 +U+10116 +U+10117 +U+10118 +U+10119 +U+1011A +U+1011B +U+1011C +U+1011D +U+1011E +U+1011F +U+10120 +U+10121 +U+10122 +U+10123 +U+10124 +U+10125 +U+10126 +U+10127 +U+10128 +U+10129 +U+1012A +U+1012B +U+1012C +U+1012D +U+1012E +U+1012F +U+10130 +U+10131 +U+10132 +U+10133 +U+10140 +U+10141 +U+10142 +U+10143 +U+10144 +U+10145 +U+10146 +U+10147 +U+10148 +U+10149 +U+1014A +U+1014B +U+1014C +U+1014D +U+1014E +U+1014F +U+10150 +U+10151 +U+10152 +U+10153 +U+10154 +U+10155 +U+10156 +U+10157 +U+10158 +U+10159 +U+1015A +U+1015B +U+1015C +U+1015D +U+1015E +U+1015F +U+10160 +U+10161 +U+10162 +U+10163 +U+10164 +U+10165 +U+10166 +U+10167 +U+10168 +U+10169 +U+1016A +U+1016B +U+1016C +U+1016D +U+1016E +U+1016F +U+10170 +U+10171 +U+10172 +U+10173 +U+10174 +U+10175 +U+10176 +U+10177 +U+10178 +U+1018A +U+1018B +U+102E1 +U+102E2 +U+102E3 +U+102E4 +U+102E5 +U+102E6 +U+102E7 +U+102E8 +U+102E9 +U+102EA +U+102EB +U+102EC +U+102ED +U+102EE +U+102EF +U+102F0 +U+102F1 +U+102F2 +U+102F3 +U+102F4 +U+102F5 +U+102F6 +U+102F7 +U+102F8 +U+102F9 +U+102FA +U+102FB +U+10320 +U+10321 +U+10322 +U+10323 +U+10341 +U+1034A +U+103D1 +U+103D2 +U+103D3 +U+103D4 +U+103D5 U+1040 U+1041 U+1042 @@ -178,8 +374,53 @@ U+1046 U+1047 U+1048 U+1049 +U+104A0 +U+104A1 +U+104A2 +U+104A3 +U+104A4 +U+104A5 +U+104A6 +U+104A7 +U+104A8 +U+104A9 +U+10858 +U+10859 +U+1085A +U+1085B +U+1085C +U+1085D +U+1085E +U+1085F +U+10879 +U+1087A +U+1087B +U+1087C +U+1087D +U+1087E +U+1087F +U+108A7 +U+108A8 +U+108A9 +U+108AA +U+108AB +U+108AC +U+108AD +U+108AE +U+108AF +U+108FB +U+108FC +U+108FD +U+108FE +U+108FF U+1090 U+1091 +U+10916 +U+10917 +U+10918 +U+10919 +U+1091A +U+1091B U+1092 U+1093 U+1094 @@ -188,1170 +429,6 @@ U+1096 U+1097 U+1098 U+1099 -U+17E0 -U+17E1 -U+17E2 -U+17E3 -U+17E4 -U+17E5 -U+17E6 -U+17E7 -U+17E8 -U+17E9 -U+1810 -U+1811 -U+1812 -U+1813 -U+1814 -U+1815 -U+1816 -U+1817 -U+1818 -U+1819 -U+1946 -U+1947 -U+1948 -U+1949 -U+194A -U+194B -U+194C -U+194D -U+194E -U+194F -U+19D0 -U+19D1 -U+19D2 -U+19D3 -U+19D4 -U+19D5 -U+19D6 -U+19D7 -U+19D8 -U+19D9 -U+1A80 -U+1A81 -U+1A82 -U+1A83 -U+1A84 -U+1A85 -U+1A86 -U+1A87 -U+1A88 -U+1A89 -U+1A90 -U+1A91 -U+1A92 -U+1A93 -U+1A94 -U+1A95 -U+1A96 -U+1A97 -U+1A98 -U+1A99 -U+1B50 -U+1B51 -U+1B52 -U+1B53 -U+1B54 -U+1B55 -U+1B56 -U+1B57 -U+1B58 -U+1B59 -U+1BB0 -U+1BB1 -U+1BB2 -U+1BB3 -U+1BB4 -U+1BB5 -U+1BB6 -U+1BB7 -U+1BB8 -U+1BB9 -U+1C40 -U+1C41 -U+1C42 -U+1C43 -U+1C44 -U+1C45 -U+1C46 -U+1C47 -U+1C48 -U+1C49 -U+1C50 -U+1C51 -U+1C52 -U+1C53 -U+1C54 -U+1C55 -U+1C56 -U+1C57 -U+1C58 -U+1C59 -U+2160 -U+2161 -U+2162 -U+2163 -U+2164 -U+2165 -U+2166 -U+2167 -U+2168 -U+2169 -U+216A -U+216B -U+216C -U+216D -U+216E -U+216F -U+2170 -U+2171 -U+2172 -U+2173 -U+2174 -U+2175 -U+2176 -U+2177 -U+2178 -U+2179 -U+217A -U+217B -U+217C -U+217D -U+217E -U+217F -U+2180 -U+2181 -U+2182 -U+2183 -U+2184 -U+2185 -U+2186 -U+2187 -U+2188 -U+A620 -U+A621 -U+A622 -U+A623 -U+A624 -U+A625 -U+A626 -U+A627 -U+A628 -U+A629 -U+A8D0 -U+A8D1 -U+A8D2 -U+A8D3 -U+A8D4 -U+A8D5 -U+A8D6 -U+A8D7 -U+A8D8 -U+A8D9 -U+A900 -U+A901 -U+A902 -U+A903 -U+A904 -U+A905 -U+A906 -U+A907 -U+A908 -U+A909 -U+A9D0 -U+A9D1 -U+A9D2 -U+A9D3 -U+A9D4 -U+A9D5 -U+A9D6 -U+A9D7 -U+A9D8 -U+A9D9 -U+A9F0 -U+A9F1 -U+A9F2 -U+A9F3 -U+A9F4 -U+A9F5 -U+A9F6 -U+A9F7 -U+A9F8 -U+A9F9 -U+AA50 -U+AA51 -U+AA52 -U+AA53 -U+AA54 -U+AA55 -U+AA56 -U+AA57 -U+AA58 -U+AA59 -U+ABF0 -U+ABF1 -U+ABF2 -U+ABF3 -U+ABF4 -U+ABF5 -U+ABF6 -U+ABF7 -U+ABF8 -U+ABF9 -U+FF10 -U+FF11 -U+FF12 -U+FF13 -U+FF14 -U+FF15 -U+FF16 -U+FF17 -U+FF18 -U+FF19 -U+104A0 -U+104A1 -U+104A2 -U+104A3 -U+104A4 -U+104A5 -U+104A6 -U+104A7 -U+104A8 -U+104A9 -U+10D30 -U+10D31 -U+10D32 -U+10D33 -U+10D34 -U+10D35 -U+10D36 -U+10D37 -U+10D38 -U+10D39 -U+11066 -U+11067 -U+11068 -U+11069 -U+1106A -U+1106B -U+1106C -U+1106D -U+1106E -U+1106F -U+110F0 -U+110F1 -U+110F2 -U+110F3 -U+110F4 -U+110F5 -U+110F6 -U+110F7 -U+110F8 -U+110F9 -U+11136 -U+11137 -U+11138 -U+11139 -U+1113A -U+1113B -U+1113C -U+1113D -U+1113E -U+1113F -U+111D0 -U+111D1 -U+111D2 -U+111D3 -U+111D4 -U+111D5 -U+111D6 -U+111D7 -U+111D8 -U+111D9 -U+112F0 -U+112F1 -U+112F2 -U+112F3 -U+112F4 -U+112F5 -U+112F6 -U+112F7 -U+112F8 -U+112F9 -U+11450 -U+11451 -U+11452 -U+11453 -U+11454 -U+11455 -U+11456 -U+11457 -U+11458 -U+11459 -U+114D0 -U+114D1 -U+114D2 -U+114D3 -U+114D4 -U+114D5 -U+114D6 -U+114D7 -U+114D8 -U+114D9 -U+11650 -U+11651 -U+11652 -U+11653 -U+11654 -U+11655 -U+11656 -U+11657 -U+11658 -U+11659 -U+116C0 -U+116C1 -U+116C2 -U+116C3 -U+116C4 -U+116C5 -U+116C6 -U+116C7 -U+116C8 -U+116C9 -U+11730 -U+11731 -U+11732 -U+11733 -U+11734 -U+11735 -U+11736 -U+11737 -U+11738 -U+11739 -U+118E0 -U+118E1 -U+118E2 -U+118E3 -U+118E4 -U+118E5 -U+118E6 -U+118E7 -U+118E8 -U+118E9 -U+11950 -U+11951 -U+11952 -U+11953 -U+11954 -U+11955 -U+11956 -U+11957 -U+11958 -U+11959 -U+11C50 -U+11C51 -U+11C52 -U+11C53 -U+11C54 -U+11C55 -U+11C56 -U+11C57 -U+11C58 -U+11C59 -U+11D50 -U+11D51 -U+11D52 -U+11D53 -U+11D54 -U+11D55 -U+11D56 -U+11D57 -U+11D58 -U+11D59 -U+11DA0 -U+11DA1 -U+11DA2 -U+11DA3 -U+11DA4 -U+11DA5 -U+11DA6 -U+11DA7 -U+11DA8 -U+11DA9 -U+16A60 -U+16A61 -U+16A62 -U+16A63 -U+16A64 -U+16A65 -U+16A66 -U+16A67 -U+16A68 -U+16A69 -U+16AC0 -U+16AC1 -U+16AC2 -U+16AC3 -U+16AC4 -U+16AC5 -U+16AC6 -U+16AC7 -U+16AC8 -U+16AC9 -U+16B50 -U+16B51 -U+16B52 -U+16B53 -U+16B54 -U+16B55 -U+16B56 -U+16B57 -U+16B58 -U+16B59 -U+1D7CE -U+1D7CF -U+1D7D0 -U+1D7D1 -U+1D7D2 -U+1D7D3 -U+1D7D4 -U+1D7D5 -U+1D7D6 -U+1D7D7 -U+1D7D8 -U+1D7D9 -U+1D7DA -U+1D7DB -U+1D7DC -U+1D7DD -U+1D7DE -U+1D7DF -U+1D7E0 -U+1D7E1 -U+1D7E2 -U+1D7E3 -U+1D7E4 -U+1D7E5 -U+1D7E6 -U+1D7E7 -U+1D7E8 -U+1D7E9 -U+1D7EA -U+1D7EB -U+1D7EC -U+1D7ED -U+1D7EE -U+1D7EF -U+1D7F0 -U+1D7F1 -U+1D7F2 -U+1D7F3 -U+1D7F4 -U+1D7F5 -U+1D7F6 -U+1D7F7 -U+1D7F8 -U+1D7F9 -U+1D7FA -U+1D7FB -U+1D7FC -U+1D7FD -U+1D7FE -U+1D7FF -U+1E140 -U+1E141 -U+1E142 -U+1E143 -U+1E144 -U+1E145 -U+1E146 -U+1E147 -U+1E148 -U+1E149 -U+1E2F0 -U+1E2F1 -U+1E2F2 -U+1E2F3 -U+1E2F4 -U+1E2F5 -U+1E2F6 -U+1E2F7 -U+1E2F8 -U+1E2F9 -U+1E950 -U+1E951 -U+1E952 -U+1E953 -U+1E954 -U+1E955 -U+1E956 -U+1E957 -U+1E958 -U+1E959 -U+1FBF0 -U+1FBF1 -U+1FBF2 -U+1FBF3 -U+1FBF4 -U+1FBF5 -U+1FBF6 -U+1FBF7 -U+1FBF8 -U+1FBF9 -U+16EE -U+16EF -U+16F0 -U+2160 -U+2161 -U+2162 -U+2163 -U+2164 -U+2165 -U+2166 -U+2167 -U+2168 -U+2169 -U+216A -U+216B -U+216C -U+216D -U+216E -U+216F -U+2170 -U+2171 -U+2172 -U+2173 -U+2174 -U+2175 -U+2176 -U+2177 -U+2178 -U+2179 -U+217A -U+217B -U+217C -U+217D -U+217E -U+217F -U+2180 -U+2181 -U+2182 -U+2185 -U+2186 -U+2187 -U+2188 -U+3007 -U+3021 -U+3022 -U+3023 -U+3024 -U+3025 -U+3026 -U+3027 -U+3028 -U+3029 -U+3038 -U+3039 -U+303A -U+A6E6 -U+A6E7 -U+A6E8 -U+A6E9 -U+A6EA -U+A6EB -U+A6EC -U+A6ED -U+A6EE -U+A6EF -U+10140 -U+10141 -U+10142 -U+10143 -U+10144 -U+10145 -U+10146 -U+10147 -U+10148 -U+10149 -U+1014A -U+1014B -U+1014C -U+1014D -U+1014E -U+1014F -U+10150 -U+10151 -U+10152 -U+10153 -U+10154 -U+10155 -U+10156 -U+10157 -U+10158 -U+10159 -U+1015A -U+1015B -U+1015C -U+1015D -U+1015E -U+1015F -U+10160 -U+10161 -U+10162 -U+10163 -U+10164 -U+10165 -U+10166 -U+10167 -U+10168 -U+10169 -U+1016A -U+1016B -U+1016C -U+1016D -U+1016E -U+1016F -U+10170 -U+10171 -U+10172 -U+10173 -U+10174 -U+10341 -U+1034A -U+103D1 -U+103D2 -U+103D3 -U+103D4 -U+103D5 -U+12400 -U+12401 -U+12402 -U+12403 -U+12404 -U+12405 -U+12406 -U+12407 -U+12408 -U+12409 -U+1240A -U+1240B -U+1240C -U+1240D -U+1240E -U+1240F -U+12410 -U+12411 -U+12412 -U+12413 -U+12414 -U+12415 -U+12416 -U+12417 -U+12418 -U+12419 -U+1241A -U+1241B -U+1241C -U+1241D -U+1241E -U+1241F -U+12420 -U+12421 -U+12422 -U+12423 -U+12424 -U+12425 -U+12426 -U+12427 -U+12428 -U+12429 -U+1242A -U+1242B -U+1242C -U+1242D -U+1242E -U+1242F -U+12430 -U+12431 -U+12432 -U+12433 -U+12434 -U+12435 -U+12436 -U+12437 -U+12438 -U+12439 -U+1243A -U+1243B -U+1243C -U+1243D -U+1243E -U+1243F -U+12440 -U+12441 -U+12442 -U+12443 -U+12444 -U+12445 -U+12446 -U+12447 -U+12448 -U+12449 -U+1244A -U+1244B -U+1244C -U+1244D -U+1244E -U+1244F -U+12450 -U+12451 -U+12452 -U+12453 -U+12454 -U+12455 -U+12456 -U+12457 -U+12458 -U+12459 -U+1245A -U+1245B -U+1245C -U+1245D -U+1245E -U+1245F -U+12460 -U+12461 -U+12462 -U+12463 -U+12464 -U+12465 -U+12466 -U+12467 -U+12468 -U+12469 -U+1246A -U+1246B -U+1246C -U+1246D -U+1246E -U+00B2 -U+00B3 -U+00B9 -U+00BC -U+00BD -U+00BE -U+09F4 -U+09F5 -U+09F6 -U+09F7 -U+09F8 -U+09F9 -U+0B72 -U+0B73 -U+0B74 -U+0B75 -U+0B76 -U+0B77 -U+0BF0 -U+0BF1 -U+0BF2 -U+0C78 -U+0C79 -U+0C7A -U+0C7B -U+0C7C -U+0C7D -U+0C7E -U+0D58 -U+0D59 -U+0D5A -U+0D5B -U+0D5C -U+0D5D -U+0D5E -U+0D70 -U+0D71 -U+0D72 -U+0D73 -U+0D74 -U+0D75 -U+0D76 -U+0D77 -U+0D78 -U+0F2A -U+0F2B -U+0F2C -U+0F2D -U+0F2E -U+0F2F -U+0F30 -U+0F31 -U+0F32 -U+0F33 -U+1369 -U+136A -U+136B -U+136C -U+136D -U+136E -U+136F -U+1370 -U+1371 -U+1372 -U+1373 -U+1374 -U+1375 -U+1376 -U+1377 -U+1378 -U+1379 -U+137A -U+137B -U+137C -U+17F0 -U+17F1 -U+17F2 -U+17F3 -U+17F4 -U+17F5 -U+17F6 -U+17F7 -U+17F8 -U+17F9 -U+19DA -U+2070 -U+2074 -U+2075 -U+2076 -U+2077 -U+2078 -U+2079 -U+2080 -U+2081 -U+2082 -U+2083 -U+2084 -U+2085 -U+2086 -U+2087 -U+2088 -U+2089 -U+2150 -U+2151 -U+2152 -U+2153 -U+2154 -U+2155 -U+2156 -U+2157 -U+2158 -U+2159 -U+215A -U+215B -U+215C -U+215D -U+215E -U+215F -U+2189 -U+2460 -U+2461 -U+2462 -U+2463 -U+2464 -U+2465 -U+2466 -U+2467 -U+2468 -U+2469 -U+246A -U+246B -U+246C -U+246D -U+246E -U+246F -U+2470 -U+2471 -U+2472 -U+2473 -U+2474 -U+2475 -U+2476 -U+2477 -U+2478 -U+2479 -U+247A -U+247B -U+247C -U+247D -U+247E -U+247F -U+2480 -U+2481 -U+2482 -U+2483 -U+2484 -U+2485 -U+2486 -U+2487 -U+2488 -U+2489 -U+248A -U+248B -U+248C -U+248D -U+248E -U+248F -U+2490 -U+2491 -U+2492 -U+2493 -U+2494 -U+2495 -U+2496 -U+2497 -U+2498 -U+2499 -U+249A -U+249B -U+24EA -U+24EB -U+24EC -U+24ED -U+24EE -U+24EF -U+24F0 -U+24F1 -U+24F2 -U+24F3 -U+24F4 -U+24F5 -U+24F6 -U+24F7 -U+24F8 -U+24F9 -U+24FA -U+24FB -U+24FC -U+24FD -U+24FE -U+24FF -U+2776 -U+2777 -U+2778 -U+2779 -U+277A -U+277B -U+277C -U+277D -U+277E -U+277F -U+2780 -U+2781 -U+2782 -U+2783 -U+2784 -U+2785 -U+2786 -U+2787 -U+2788 -U+2789 -U+278A -U+278B -U+278C -U+278D -U+278E -U+278F -U+2790 -U+2791 -U+2792 -U+2793 -U+2CFD -U+3192 -U+3193 -U+3194 -U+3195 -U+3220 -U+3221 -U+3222 -U+3223 -U+3224 -U+3225 -U+3226 -U+3227 -U+3228 -U+3229 -U+3248 -U+3249 -U+324A -U+324B -U+324C -U+324D -U+324E -U+324F -U+3251 -U+3252 -U+3253 -U+3254 -U+3255 -U+3256 -U+3257 -U+3258 -U+3259 -U+325A -U+325B -U+325C -U+325D -U+325E -U+325F -U+3280 -U+3281 -U+3282 -U+3283 -U+3284 -U+3285 -U+3286 -U+3287 -U+3288 -U+3289 -U+32B1 -U+32B2 -U+32B3 -U+32B4 -U+32B5 -U+32B6 -U+32B7 -U+32B8 -U+32B9 -U+32BA -U+32BB -U+32BC -U+32BD -U+32BE -U+32BF -U+A830 -U+A831 -U+A832 -U+A833 -U+A834 -U+A835 -U+10107 -U+10108 -U+10109 -U+1010A -U+1010B -U+1010C -U+1010D -U+1010E -U+1010F -U+10110 -U+10111 -U+10112 -U+10113 -U+10114 -U+10115 -U+10116 -U+10117 -U+10118 -U+10119 -U+1011A -U+1011B -U+1011C -U+1011D -U+1011E -U+1011F -U+10120 -U+10121 -U+10122 -U+10123 -U+10124 -U+10125 -U+10126 -U+10127 -U+10128 -U+10129 -U+1012A -U+1012B -U+1012C -U+1012D -U+1012E -U+1012F -U+10130 -U+10131 -U+10132 -U+10133 -U+10175 -U+10176 -U+10177 -U+10178 -U+1018A -U+1018B -U+102E1 -U+102E2 -U+102E3 -U+102E4 -U+102E5 -U+102E6 -U+102E7 -U+102E8 -U+102E9 -U+102EA -U+102EB -U+102EC -U+102ED -U+102EE -U+102EF -U+102F0 -U+102F1 -U+102F2 -U+102F3 -U+102F4 -U+102F5 -U+102F6 -U+102F7 -U+102F8 -U+102F9 -U+102FA -U+102FB -U+10320 -U+10321 -U+10322 -U+10323 -U+10858 -U+10859 -U+1085A -U+1085B -U+1085C -U+1085D -U+1085E -U+1085F -U+10879 -U+1087A -U+1087B -U+1087C -U+1087D -U+1087E -U+1087F -U+108A7 -U+108A8 -U+108A9 -U+108AA -U+108AB -U+108AC -U+108AD -U+108AE -U+108AF -U+108FB -U+108FC -U+108FD -U+108FE -U+108FF -U+10916 -U+10917 -U+10918 -U+10919 -U+1091A -U+1091B U+109BC U+109BD U+109C0 @@ -1464,6 +541,26 @@ U+10CFC U+10CFD U+10CFE U+10CFF +U+10D30 +U+10D31 +U+10D32 +U+10D33 +U+10D34 +U+10D35 +U+10D36 +U+10D37 +U+10D38 +U+10D39 +U+10D40 +U+10D41 +U+10D42 +U+10D43 +U+10D44 +U+10D45 +U+10D46 +U+10D47 +U+10D48 +U+10D49 U+10E60 U+10E61 U+10E62 @@ -1536,6 +633,46 @@ U+11062 U+11063 U+11064 U+11065 +U+11066 +U+11067 +U+11068 +U+11069 +U+1106A +U+1106B +U+1106C +U+1106D +U+1106E +U+1106F +U+110F0 +U+110F1 +U+110F2 +U+110F3 +U+110F4 +U+110F5 +U+110F6 +U+110F7 +U+110F8 +U+110F9 +U+11136 +U+11137 +U+11138 +U+11139 +U+1113A +U+1113B +U+1113C +U+1113D +U+1113E +U+1113F +U+111D0 +U+111D1 +U+111D2 +U+111D3 +U+111D4 +U+111D5 +U+111D6 +U+111D7 +U+111D8 +U+111D9 U+111E1 U+111E2 U+111E3 @@ -1556,8 +693,98 @@ U+111F1 U+111F2 U+111F3 U+111F4 +U+112F0 +U+112F1 +U+112F2 +U+112F3 +U+112F4 +U+112F5 +U+112F6 +U+112F7 +U+112F8 +U+112F9 +U+11450 +U+11451 +U+11452 +U+11453 +U+11454 +U+11455 +U+11456 +U+11457 +U+11458 +U+11459 +U+114D0 +U+114D1 +U+114D2 +U+114D3 +U+114D4 +U+114D5 +U+114D6 +U+114D7 +U+114D8 +U+114D9 +U+11650 +U+11651 +U+11652 +U+11653 +U+11654 +U+11655 +U+11656 +U+11657 +U+11658 +U+11659 +U+116C0 +U+116C1 +U+116C2 +U+116C3 +U+116C4 +U+116C5 +U+116C6 +U+116C7 +U+116C8 +U+116C9 +U+116D0 +U+116D1 +U+116D2 +U+116D3 +U+116D4 +U+116D5 +U+116D6 +U+116D7 +U+116D8 +U+116D9 +U+116DA +U+116DB +U+116DC +U+116DD +U+116DE +U+116DF +U+116E0 +U+116E1 +U+116E2 +U+116E3 +U+11730 +U+11731 +U+11732 +U+11733 +U+11734 +U+11735 +U+11736 +U+11737 +U+11738 +U+11739 U+1173A U+1173B +U+118E0 +U+118E1 +U+118E2 +U+118E3 +U+118E4 +U+118E5 +U+118E6 +U+118E7 +U+118E8 +U+118E9 U+118EA U+118EB U+118EC @@ -1567,6 +794,36 @@ U+118EF U+118F0 U+118F1 U+118F2 +U+11950 +U+11951 +U+11952 +U+11953 +U+11954 +U+11955 +U+11956 +U+11957 +U+11958 +U+11959 +U+11BF0 +U+11BF1 +U+11BF2 +U+11BF3 +U+11BF4 +U+11BF5 +U+11BF6 +U+11BF7 +U+11BF8 +U+11BF9 +U+11C50 +U+11C51 +U+11C52 +U+11C53 +U+11C54 +U+11C55 +U+11C56 +U+11C57 +U+11C58 +U+11C59 U+11C5A U+11C5B U+11C5C @@ -1586,6 +843,26 @@ U+11C69 U+11C6A U+11C6B U+11C6C +U+11D50 +U+11D51 +U+11D52 +U+11D53 +U+11D54 +U+11D55 +U+11D56 +U+11D57 +U+11D58 +U+11D59 +U+11DA0 +U+11DA1 +U+11DA2 +U+11DA3 +U+11DA4 +U+11DA5 +U+11DA6 +U+11DA7 +U+11DA8 +U+11DA9 U+11FC0 U+11FC1 U+11FC2 @@ -1607,6 +884,177 @@ U+11FD1 U+11FD2 U+11FD3 U+11FD4 +U+12400 +U+12401 +U+12402 +U+12403 +U+12404 +U+12405 +U+12406 +U+12407 +U+12408 +U+12409 +U+1240A +U+1240B +U+1240C +U+1240D +U+1240E +U+1240F +U+12410 +U+12411 +U+12412 +U+12413 +U+12414 +U+12415 +U+12416 +U+12417 +U+12418 +U+12419 +U+1241A +U+1241B +U+1241C +U+1241D +U+1241E +U+1241F +U+12420 +U+12421 +U+12422 +U+12423 +U+12424 +U+12425 +U+12426 +U+12427 +U+12428 +U+12429 +U+1242A +U+1242B +U+1242C +U+1242D +U+1242E +U+1242F +U+12430 +U+12431 +U+12432 +U+12433 +U+12434 +U+12435 +U+12436 +U+12437 +U+12438 +U+12439 +U+1243A +U+1243B +U+1243C +U+1243D +U+1243E +U+1243F +U+12440 +U+12441 +U+12442 +U+12443 +U+12444 +U+12445 +U+12446 +U+12447 +U+12448 +U+12449 +U+1244A +U+1244B +U+1244C +U+1244D +U+1244E +U+1244F +U+12450 +U+12451 +U+12452 +U+12453 +U+12454 +U+12455 +U+12456 +U+12457 +U+12458 +U+12459 +U+1245A +U+1245B +U+1245C +U+1245D +U+1245E +U+1245F +U+12460 +U+12461 +U+12462 +U+12463 +U+12464 +U+12465 +U+12466 +U+12467 +U+12468 +U+12469 +U+1246A +U+1246B +U+1246C +U+1246D +U+1246E +U+1369 +U+136A +U+136B +U+136C +U+136D +U+136E +U+136F +U+1370 +U+1371 +U+1372 +U+1373 +U+1374 +U+1375 +U+1376 +U+1377 +U+1378 +U+1379 +U+137A +U+137B +U+137C +U+16130 +U+16131 +U+16132 +U+16133 +U+16134 +U+16135 +U+16136 +U+16137 +U+16138 +U+16139 +U+16A60 +U+16A61 +U+16A62 +U+16A63 +U+16A64 +U+16A65 +U+16A66 +U+16A67 +U+16A68 +U+16A69 +U+16AC0 +U+16AC1 +U+16AC2 +U+16AC3 +U+16AC4 +U+16AC5 +U+16AC6 +U+16AC7 +U+16AC8 +U+16AC9 +U+16B50 +U+16B51 +U+16B52 +U+16B53 +U+16B54 +U+16B55 +U+16B56 +U+16B57 +U+16B58 +U+16B59 U+16B5B U+16B5C U+16B5D @@ -1614,6 +1062,16 @@ U+16B5E U+16B5F U+16B60 U+16B61 +U+16D70 +U+16D71 +U+16D72 +U+16D73 +U+16D74 +U+16D75 +U+16D76 +U+16D77 +U+16D78 +U+16D79 U+16E80 U+16E81 U+16E82 @@ -1637,6 +1095,120 @@ U+16E93 U+16E94 U+16E95 U+16E96 +U+16EE +U+16EF +U+16F0 +U+17E0 +U+17E1 +U+17E2 +U+17E3 +U+17E4 +U+17E5 +U+17E6 +U+17E7 +U+17E8 +U+17E9 +U+17F0 +U+17F1 +U+17F2 +U+17F3 +U+17F4 +U+17F5 +U+17F6 +U+17F7 +U+17F8 +U+17F9 +U+1810 +U+1811 +U+1812 +U+1813 +U+1814 +U+1815 +U+1816 +U+1817 +U+1818 +U+1819 +U+1946 +U+1947 +U+1948 +U+1949 +U+194A +U+194B +U+194C +U+194D +U+194E +U+194F +U+19D0 +U+19D1 +U+19D2 +U+19D3 +U+19D4 +U+19D5 +U+19D6 +U+19D7 +U+19D8 +U+19D9 +U+19DA +U+1A80 +U+1A81 +U+1A82 +U+1A83 +U+1A84 +U+1A85 +U+1A86 +U+1A87 +U+1A88 +U+1A89 +U+1A90 +U+1A91 +U+1A92 +U+1A93 +U+1A94 +U+1A95 +U+1A96 +U+1A97 +U+1A98 +U+1A99 +U+1B50 +U+1B51 +U+1B52 +U+1B53 +U+1B54 +U+1B55 +U+1B56 +U+1B57 +U+1B58 +U+1B59 +U+1BB0 +U+1BB1 +U+1BB2 +U+1BB3 +U+1BB4 +U+1BB5 +U+1BB6 +U+1BB7 +U+1BB8 +U+1BB9 +U+1C40 +U+1C41 +U+1C42 +U+1C43 +U+1C44 +U+1C45 +U+1C46 +U+1C47 +U+1C48 +U+1C49 +U+1C50 +U+1C51 +U+1C52 +U+1C53 +U+1C54 +U+1C55 +U+1C56 +U+1C57 +U+1C58 +U+1C59 U+1D2E0 U+1D2E1 U+1D2E2 @@ -1682,6 +1254,86 @@ U+1D375 U+1D376 U+1D377 U+1D378 +U+1D7CE +U+1D7CF +U+1D7D0 +U+1D7D1 +U+1D7D2 +U+1D7D3 +U+1D7D4 +U+1D7D5 +U+1D7D6 +U+1D7D7 +U+1D7D8 +U+1D7D9 +U+1D7DA +U+1D7DB +U+1D7DC +U+1D7DD +U+1D7DE +U+1D7DF +U+1D7E0 +U+1D7E1 +U+1D7E2 +U+1D7E3 +U+1D7E4 +U+1D7E5 +U+1D7E6 +U+1D7E7 +U+1D7E8 +U+1D7E9 +U+1D7EA +U+1D7EB +U+1D7EC +U+1D7ED +U+1D7EE +U+1D7EF +U+1D7F0 +U+1D7F1 +U+1D7F2 +U+1D7F3 +U+1D7F4 +U+1D7F5 +U+1D7F6 +U+1D7F7 +U+1D7F8 +U+1D7F9 +U+1D7FA +U+1D7FB +U+1D7FC +U+1D7FD +U+1D7FE +U+1D7FF +U+1E140 +U+1E141 +U+1E142 +U+1E143 +U+1E144 +U+1E145 +U+1E146 +U+1E147 +U+1E148 +U+1E149 +U+1E2F0 +U+1E2F1 +U+1E2F2 +U+1E2F3 +U+1E2F4 +U+1E2F5 +U+1E2F6 +U+1E2F7 +U+1E2F8 +U+1E2F9 +U+1E5F1 +U+1E5F2 +U+1E5F3 +U+1E5F4 +U+1E5F5 +U+1E5F6 +U+1E5F7 +U+1E5F8 +U+1E5F9 +U+1E5FAU+0030 U+1E8C7 U+1E8C8 U+1E8C9 @@ -1691,6 +1343,16 @@ U+1E8CC U+1E8CD U+1E8CE U+1E8CF +U+1E950 +U+1E951 +U+1E952 +U+1E953 +U+1E954 +U+1E955 +U+1E956 +U+1E957 +U+1E958 +U+1E959 U+1EC71 U+1EC72 U+1EC73 @@ -1830,3 +1492,372 @@ U+1F109 U+1F10A U+1F10B U+1F10C +U+1FBF0 +U+1FBF1 +U+1FBF2 +U+1FBF3 +U+1FBF4 +U+1FBF5 +U+1FBF6 +U+1FBF7 +U+1FBF8 +U+1FBF9 +U+2070 +U+2074 +U+2075 +U+2076 +U+2077 +U+2078 +U+2079 +U+2080 +U+2081 +U+2082 +U+2083 +U+2084 +U+2085 +U+2086 +U+2087 +U+2088 +U+2089 +U+2150 +U+2151 +U+2152 +U+2153 +U+2154 +U+2155 +U+2156 +U+2157 +U+2158 +U+2159 +U+215A +U+215B +U+215C +U+215D +U+215E +U+215F +U+2160 +U+2161 +U+2162 +U+2163 +U+2164 +U+2165 +U+2166 +U+2167 +U+2168 +U+2169 +U+216A +U+216B +U+216C +U+216D +U+216E +U+216F +U+2170 +U+2171 +U+2172 +U+2173 +U+2174 +U+2175 +U+2176 +U+2177 +U+2178 +U+2179 +U+217A +U+217B +U+217C +U+217D +U+217E +U+217F +U+2180 +U+2181 +U+2182 +U+2183 +U+2184 +U+2185 +U+2186 +U+2187 +U+2188 +U+2189 +U+2460 +U+2461 +U+2462 +U+2463 +U+2464 +U+2465 +U+2466 +U+2467 +U+2468 +U+2469 +U+246A +U+246B +U+246C +U+246D +U+246E +U+246F +U+2470 +U+2471 +U+2472 +U+2473 +U+2474 +U+2475 +U+2476 +U+2477 +U+2478 +U+2479 +U+247A +U+247B +U+247C +U+247D +U+247E +U+247F +U+2480 +U+2481 +U+2482 +U+2483 +U+2484 +U+2485 +U+2486 +U+2487 +U+2488 +U+2489 +U+248A +U+248B +U+248C +U+248D +U+248E +U+248F +U+2490 +U+2491 +U+2492 +U+2493 +U+2494 +U+2495 +U+2496 +U+2497 +U+2498 +U+2499 +U+249A +U+249B +U+24EA +U+24EB +U+24EC +U+24ED +U+24EE +U+24EF +U+24F0 +U+24F1 +U+24F2 +U+24F3 +U+24F4 +U+24F5 +U+24F6 +U+24F7 +U+24F8 +U+24F9 +U+24FA +U+24FB +U+24FC +U+24FD +U+24FE +U+24FF +U+2776 +U+2777 +U+2778 +U+2779 +U+277A +U+277B +U+277C +U+277D +U+277E +U+277F +U+2780 +U+2781 +U+2782 +U+2783 +U+2784 +U+2785 +U+2786 +U+2787 +U+2788 +U+2789 +U+278A +U+278B +U+278C +U+278D +U+278E +U+278F +U+2790 +U+2791 +U+2792 +U+2793 +U+2CFD +U+3007 +U+3021 +U+3022 +U+3023 +U+3024 +U+3025 +U+3026 +U+3027 +U+3028 +U+3029 +U+3038 +U+3039 +U+303A +U+3192 +U+3193 +U+3194 +U+3195 +U+3220 +U+3221 +U+3222 +U+3223 +U+3224 +U+3225 +U+3226 +U+3227 +U+3228 +U+3229 +U+3248 +U+3249 +U+324A +U+324B +U+324C +U+324D +U+324E +U+324F +U+3251 +U+3252 +U+3253 +U+3254 +U+3255 +U+3256 +U+3257 +U+3258 +U+3259 +U+325A +U+325B +U+325C +U+325D +U+325E +U+325F +U+3280 +U+3281 +U+3282 +U+3283 +U+3284 +U+3285 +U+3286 +U+3287 +U+3288 +U+3289 +U+32B1 +U+32B2 +U+32B3 +U+32B4 +U+32B5 +U+32B6 +U+32B7 +U+32B8 +U+32B9 +U+32BA +U+32BB +U+32BC +U+32BD +U+32BE +U+32BF +U+A620 +U+A621 +U+A622 +U+A623 +U+A624 +U+A625 +U+A626 +U+A627 +U+A628 +U+A629 +U+A6E6 +U+A6E7 +U+A6E8 +U+A6E9 +U+A6EA +U+A6EB +U+A6EC +U+A6ED +U+A6EE +U+A6EF +U+A830 +U+A831 +U+A832 +U+A833 +U+A834 +U+A835 +U+A8D0 +U+A8D1 +U+A8D2 +U+A8D3 +U+A8D4 +U+A8D5 +U+A8D6 +U+A8D7 +U+A8D8 +U+A8D9 +U+A900 +U+A901 +U+A902 +U+A903 +U+A904 +U+A905 +U+A906 +U+A907 +U+A908 +U+A909 +U+A9D0 +U+A9D1 +U+A9D2 +U+A9D3 +U+A9D4 +U+A9D5 +U+A9D6 +U+A9D7 +U+A9D8 +U+A9D9 +U+A9F0 +U+A9F1 +U+A9F2 +U+A9F3 +U+A9F4 +U+A9F5 +U+A9F6 +U+A9F7 +U+A9F8 +U+A9F9 +U+AA50 +U+AA51 +U+AA52 +U+AA53 +U+AA54 +U+AA55 +U+AA56 +U+AA57 +U+AA58 +U+AA59 +U+ABF0 +U+ABF1 +U+ABF2 +U+ABF3 +U+ABF4 +U+ABF5 +U+ABF6 +U+ABF7 +U+ABF8 +U+ABF9 +U+FF10 +U+FF11 +U+FF12 +U+FF13 +U+FF14 +U+FF15 +U+FF16 +U+FF17 +U+FF18 +U+FF19 diff --git a/level_0/f_utf/data/tests/codepoints/phonetic-all.txt b/level_0/f_utf/data/tests/codepoints/phonetic-all.txt index 0c2849fd1..382b4c377 100644 --- a/level_0/f_utf/data/tests/codepoints/phonetic-all.txt +++ b/level_0/f_utf/data/tests/codepoints/phonetic-all.txt @@ -190,3 +190,4 @@ U+1DBC U+1DBD U+1DBE U+1DBF +U+A78E diff --git a/level_0/f_utf/data/tests/codepoints/punctuation-all.txt b/level_0/f_utf/data/tests/codepoints/punctuation-all.txt index 6440757dc..b56dbdb45 100644 --- a/level_0/f_utf/data/tests/codepoints/punctuation-all.txt +++ b/level_0/f_utf/data/tests/codepoints/punctuation-all.txt @@ -384,6 +384,7 @@ U+1B5F U+1B60 U+1B7D U+1B7E +U+1B7F U+1BC9F U+1BFC U+1BFD diff --git a/level_0/f_utf/data/tests/codepoints/symbol-all.txt b/level_0/f_utf/data/tests/codepoints/symbol-all.txt index 3b7d7b52e..1007b9b84 100644 --- a/level_0/f_utf/data/tests/codepoints/symbol-all.txt +++ b/level_0/f_utf/data/tests/codepoints/symbol-all.txt @@ -3834,6 +3834,65 @@ U+1FA83 U+1FA84 U+1FA85 U+1FA86 +U+1FA87 +U+1FA88 +U+1FA89 +U+1FA8F +U+1FA90 +U+1FA91 +U+1FA92 +U+1FA93 +U+1FA94 +U+1FA95 +U+1FA96 +U+1FA97 +U+1FA98 +U+1FA99 +U+1FA9A +U+1FA9B +U+1FA9C +U+1FA9D +U+1FA9E +U+1FA9F +U+1FAA0 +U+1FAA1 +U+1FAA2 +U+1FAA3 +U+1FAA4 +U+1FAA5 +U+1FAA6 +U+1FAA7 +U+1FAA8 +U+1FAA9 +U+1FAAA +U+1FAAB +U+1FAAC +U+1FAAD +U+1FAAE +U+1FAAF +U+1FAB0 +U+1FAB1 +U+1FAB2 +U+1FAB3 +U+1FAB4 +U+1FAB5 +U+1FAB6 +U+1FAB7 +U+1FAB8 +U+1FAB9 +U+1FABA +U+1FABB +U+1FABC +U+1FABD +U+1FABE +U+1FABF +U+1FAC0 +U+1FAC1 +U+1FAC2 +U+1FAC3 +U+1FAC4 +U+1FAC5 +U+1FAC6 U+1FA90 U+1FA91 U+1FA92 diff --git a/level_0/f_utf/tests/unit/c/data-utf.c b/level_0/f_utf/tests/unit/c/data-utf.c index b66bfc5c6..795de0518 100644 --- a/level_0/f_utf/tests/unit/c/data-utf.c +++ b/level_0/f_utf/tests/unit/c/data-utf.c @@ -19,6 +19,11 @@ FILE *data__bytesequence_file_open__control(void) { return fopen("./data/tests/bytesequences/control-all.txt", "r"); } +FILE *data__bytesequence_file_open__control_picture(void) { + + return fopen("./data/tests/bytesequences/control_picture-all.txt", "r"); +} + FILE *data__bytesequence_file_open__digit(void) { return fopen("./data/tests/bytesequences/digit-all.txt", "r"); @@ -129,7 +134,9 @@ FILE *data__bytesequence_file_open__zero_width(void) { return fopen("./data/tests/bytesequences/zero_width-all.txt", "r"); } -ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const character) { +ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const character, long long * const number) { + + if (!file || !character || !number) return -1; size_t length = 0; char *line = 0; @@ -144,29 +151,31 @@ ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const char return bytes; } - const long long number = atoll(line); + *number = atoll(line); if (line) { free(line); } - if (!number && bytes != 2 && line[0] != '0') return -1; + if (!*number && bytes != 2 && line[0] != '0') return -1; + + memset(character, 0, sizeof(f_utf_char_t)); #ifdef _is_F_endian_little - if ((F_utf_char_mask_byte_1_le_d & number) == number) { - *character = (f_utf_char_t) ((F_utf_char_mask_byte_1_le_d & number) << 24); + if ((F_utf_char_mask_byte_1_le_d & (*number)) == (*number)) { + *character = (f_utf_char_t) ((F_utf_char_mask_byte_1_le_d & (*number)) << 24); } - else if ((F_utf_char_mask_byte_2_le_d & number) == number) { - *character = (f_utf_char_t) ((F_utf_char_mask_byte_2_le_d & number) << 16); + else if ((F_utf_char_mask_byte_2_le_d & (*number)) == (*number)) { + *character = (f_utf_char_t) ((F_utf_char_mask_byte_2_le_d & (*number)) << 16); } - else if ((F_utf_char_mask_byte_3_le_d & number) == number) { - *character = (f_utf_char_t) ((F_utf_char_mask_byte_3_le_d & number) << 8); + else if ((F_utf_char_mask_byte_3_le_d & (*number)) == (*number)) { + *character = (f_utf_char_t) ((F_utf_char_mask_byte_3_le_d & (*number)) << 8); } - else if ((F_utf_char_mask_byte_4_le_d & number) == number) { - *character = (f_utf_char_t) ((F_utf_char_mask_byte_4_le_d & number)); + else if ((F_utf_char_mask_byte_4_le_d & (*number)) == (*number)) { + *character = (f_utf_char_t) ((F_utf_char_mask_byte_4_le_d & (*number))); } #else - *character = (f_utf_char_t) number; + *character = (f_utf_char_t) (*number); #endif // _is_F_endian_little return bytes; diff --git a/level_0/f_utf/tests/unit/c/data-utf.h b/level_0/f_utf/tests/unit/c/data-utf.h index 119fc7d4e..3a508b9da 100644 --- a/level_0/f_utf/tests/unit/c/data-utf.h +++ b/level_0/f_utf/tests/unit/c/data-utf.h @@ -67,6 +67,21 @@ extern FILE *data__bytesequence_file_open__combining(void); */ extern FILE *data__bytesequence_file_open__control(void); +/** + * Open the "control_picture" bytesequence file. + * + * This assumes the following: + * - The file path is relative to the current working directory (tests are run from project root). + * - The file path is "data/tests/bytesequences/control_picture-all.txt". + * + * @return + * Non-zero on success. + * 0 on failure. + * + * @see fopen() + */ +extern FILE *data__bytesequence_file_open__control_picture(void); + /** * Open the "digit" bytesequence file. * @@ -412,6 +427,8 @@ extern FILE *data__bytesequence_file_open__zero_width(void); * The file stream. * @param character * The character read from the file at the current line in the stream. + * @param number + * The number retrieved from the file for the current line. * * @return * positive number on success where number represents bytes read. @@ -421,7 +438,7 @@ extern FILE *data__bytesequence_file_open__zero_width(void); * @see atoll() * @see getline() */ -extern ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const character); +extern ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const character, long long * const number); /** * Open the "decimal_number" values file. diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_combining.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_combining.c index 37a465e80..1fd65fc7d 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_combining.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_combining.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_combining__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_combining(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_control.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_control.c index 65618d3b6..70049df9a 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_control.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_control.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_control__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_control(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.c new file mode 100644 index 000000000..4532f295c --- /dev/null +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.c @@ -0,0 +1,44 @@ +#include "test-utf.h" +#include "test-utf-character_is_control_picture.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void test__f_utf_character_is_control_picture__works(void **state) { + + { + FILE *file = data__bytesequence_file_open__control_picture(); + + assert_non_null(file); + + f_utf_char_t sequence = 0; + ssize_t bytes = 0; + long long code = 0; + + f_number_unsigned_t line = 0; + + do { + bytes = data__bytesequence_get_line(file, &sequence, &code); + + if (bytes > 0) { + const f_status_t status = f_utf_character_is_control_picture(sequence); + + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + + assert_int_equal(status, F_true); + } + + ++line; + + } while (bytes > 0); + + fclose(file); + } +} + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.h b/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.h new file mode 100644 index 000000000..29686c94a --- /dev/null +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_control_picture.h @@ -0,0 +1,20 @@ +/** + * FLL - Level 0 + * + * Project: UTF + * API Version: 0.8 + * Licenses: lgpl-2.1-or-later + * + * Test the function in the utf project. + */ +#ifndef _TEST__F_utf_character_is_control_picture_h +#define _TEST__F_utf_character_is_control_picture_h + +/** + * Test that the function works. + * + * @see f_utf_character_is_control_picture() + */ +extern void test__f_utf_character_is_control_picture__works(void **state); + +#endif // _TEST__F_utf_character_is_control_picture_h diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_digit.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_digit.c index 2f795d284..b22212beb 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_digit.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_digit.c @@ -19,9 +19,10 @@ void test__f_utf_character_is_digit__works(void **state) { ssize_t bytes_number = 0; uint64_t number = 0; f_number_unsigned_t line = 0; + long long code = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); bytes_number = data__value_get_line_long_long(file_number, &number); if (bytes > 0 && bytes_number > 0) { @@ -29,6 +30,10 @@ void test__f_utf_character_is_digit__works(void **state) { const f_status_t status = f_utf_character_is_digit(sequence, &value); + if (status != F_true || value != number) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); assert_int_equal(value, number); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_emoji.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_emoji.c index ca4f2507b..61daf9768 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_emoji.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_emoji.c @@ -14,14 +14,19 @@ void test__f_utf_character_is_emoji__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_emoji(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_numeric.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_numeric.c index 1d2069c76..95696e8f1 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_numeric.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_numeric.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_numeric__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_numeric(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_phonetic.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_phonetic.c index fa0ca33b5..90a6d0db5 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_phonetic.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_phonetic.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_phonetic__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_phonetic(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_private.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_private.c index e8b35f324..c63f14593 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_private.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_private.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_private__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_private(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_punctuation.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_punctuation.c index 516a0b5d8..4213bf40f 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_punctuation.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_punctuation.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_punctuation__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_punctuation(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_subscript.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_subscript.c index 3b7364dfa..3bc6ba7e1 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_subscript.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_subscript.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_subscript__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_subscript(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_superscript.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_superscript.c index 38d048a97..efbcb1dd5 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_superscript.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_superscript.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_superscript__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_superscript(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_symbol.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_symbol.c index 405e81155..17d7bad43 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_symbol.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_symbol.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_symbol__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_symbol(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_valid.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_valid.c index 253b7a843..6d769b0cc 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_valid.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_valid.c @@ -27,24 +27,40 @@ void test__f_utf_character_is_valid__works(void **state) { // All remaining bytes after width must be zero for valid sequence. if (width == 0 && (second || third || fourth)) { + if (status != F_false) { + printf("[ -------> ] --- Failure [00], width == 0 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; } if (width == 1) { + if (status != F_status_set_error(F_utf_fragment)) { + printf("[ -------> ] --- Failure [01], width == 1 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_status_set_error(F_utf_fragment)); continue; } if (width == 2 && (third || fourth)) { + if (status != F_false) { + printf("[ -------> ] --- Failure [02], width == 2 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; } if (width == 3 && fourth) { + if (status != F_false) { + printf("[ -------> ] --- Failure [03], width == 3 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; @@ -52,6 +68,10 @@ void test__f_utf_character_is_valid__works(void **state) { // Invalid: 11111xxx xxxxxxxx xxxxxxxx xxxxxxxx. if ((first & 0b11111000) == 0b11111000) { + if (status != F_false) { + printf("[ -------> ] --- Failure [04], first byte 0b11111000 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; @@ -63,6 +83,10 @@ void test__f_utf_character_is_valid__works(void **state) { // For first byte 0xf0, only second byte ranges 0x90 to 0xbf are valid. if (first == 0xf0) { if (second < 0x90 || second > 0xbf) { + if (status != F_false) { + printf("[ -------> ] --- Failure [05], first byte 0b11110000: 0xf0 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; @@ -72,6 +96,10 @@ void test__f_utf_character_is_valid__works(void **state) { // For first byte 0xf4, only second byte ranges 0x80 to 0x8f are valid. else if (first == 0xf4) { if (second < 0x80 || second > 0x8f) { + if (status != F_false) { + printf("[ -------> ] --- Failure [06], first byte 0b11110000: 0xf4 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; @@ -80,17 +108,29 @@ void test__f_utf_character_is_valid__works(void **state) { // For first byte greater than 0xf4 are all invalid. else if (first > 0xf4) { + if (status != F_false) { + printf("[ -------> ] --- Failure [07], first byte 0b11110000: > 0xf4 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; } if ((second & 0b11000000) == 0b10000000 && (third & 0b11000000) == 0b10000000 && (fourth & 0b11000000) == 0b10000000) { + if (status != F_true) { + printf("[ -------> ] --- Failure [08], first byte 0b11110000: match test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_true); continue; } + if (status != F_false) { + printf("[ -------> ] --- Failure [09], first byte 0b11110000: all else test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; @@ -102,6 +142,10 @@ void test__f_utf_character_is_valid__works(void **state) { // For first byte 0xe0, only second byte ranges 0xa0 to 0xbf are valid. if (first == 0xe0) { if (second < 0xa0 || second > 0xbf) { + if (status != F_false) { + printf("[ -------> ] --- Failure [10], first byte 0b11100000: 0xe0 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; @@ -111,6 +155,10 @@ void test__f_utf_character_is_valid__works(void **state) { // For first byte 0xed, only second byte ranges 0x80 to 0x9f are valid. else if (first == 0xed) { if (second < 0x80 || second > 0x9f) { + if (status != F_false) { + printf("[ -------> ] --- Failure [11], first byte 0b11100000: 0xed test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; @@ -118,11 +166,19 @@ void test__f_utf_character_is_valid__works(void **state) { } if ((second & 0b11000000) == 0b10000000 && (third & 0b11000000) == 0b10000000) { + if (status != F_true) { + printf("[ -------> ] --- Failure [12], first byte 0b11100000: match test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_true); continue; } + if (status != F_false) { + printf("[ -------> ] --- Failure [13], first byte 0b11100000: all else test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; @@ -133,17 +189,29 @@ void test__f_utf_character_is_valid__works(void **state) { // Only first byte ranges 0xc2 or greater are valid. if (first < 0xc2) { + if (status != F_false) { + printf("[ -------> ] --- Failure [14], first byte 0b11000000: < 0xc2 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; } if ((second & 0b11000000) == 0b10000000) { + if (status != F_true) { + printf("[ -------> ] --- Failure [15], first byte 0b11000000: match test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_true); continue; } + if (status != F_false) { + printf("[ -------> ] --- Failure [16], first byte 0b11000000: all else test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_false); continue; @@ -151,6 +219,10 @@ void test__f_utf_character_is_valid__works(void **state) { // Invalid (UTF Fragment): 10xxxxxx ???????? ???????? ????????. if ((first & 0b11000000) == 0b10000000) { + if (status != F_status_set_error(F_utf_fragment)) { + printf("[ -------> ] --- Failure [17], invalid fragment test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_status_set_error(F_utf_fragment)); continue; @@ -158,11 +230,19 @@ void test__f_utf_character_is_valid__works(void **state) { // Valid: 0xxxxxxx ???????? ???????? ????????. if (first < 0x80) { + if (status != F_true) { + printf("[ -------> ] --- Failure [18], < 0x80 test, at sequence='%0x'.\n", sequence); + } + assert_int_equal(status, F_true); continue; } + if (status != F_false) { + printf("[ -------> ] --- Failure [19], all others test, at sequence='%0x'.\n", sequence); + } + // All other values > 0x7f are invalid. assert_int_equal(status, F_false); } // for diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace.c index 97c7aef5a..5ca6167e4 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_whitespace__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_whitespace(sequence, F_true); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_modifier.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_modifier.c index ed47077c6..71ed1ae22 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_modifier.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_modifier.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_whitespace_modifier__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_whitespace_modifier(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_other.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_other.c index d96712f05..f3a395716 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_other.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_other.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_whitespace_other__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_whitespace_other(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_zero_width.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_zero_width.c index 9714a55d3..78a6de5f9 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_zero_width.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_whitespace_zero_width.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_whitespace_zero_width__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_whitespace_zero_width(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_wide.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_wide.c index b3d0c5910..29c44859a 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_wide.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_wide.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_wide__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_wide(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_word.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_word.c index 01b715a22..b72286094 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_word.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_word.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_word__strict_is_false(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_word(sequence, F_false); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } @@ -43,11 +48,12 @@ void test__f_utf_character_is_word__strict_is_true(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_word(sequence, F_true); diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash.c index 7cacda513..a165e337b 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_word_dash__strict_is_false(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_word_dash(sequence, F_false); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } @@ -43,15 +48,20 @@ void test__f_utf_character_is_word_dash__strict_is_true(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_word_dash(sequence, F_true); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash_plus.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash_plus.c index 6879bda35..46fab2aba 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash_plus.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_word_dash_plus.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_word_dash_plus__strict_is_false(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_word_dash_plus(sequence, F_false); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } @@ -43,15 +48,20 @@ void test__f_utf_character_is_word_dash_plus__strict_is_true(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_word_dash_plus(sequence, F_true); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_zero_width.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_zero_width.c index 2cc36cb64..585fa1077 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_zero_width.c +++ b/level_0/f_utf/tests/unit/c/test-utf-character_is_zero_width.c @@ -14,15 +14,20 @@ void test__f_utf_character_is_zero_width__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const f_status_t status = f_utf_character_is_zero_width(sequence); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_combining.c b/level_0/f_utf/tests/unit/c/test-utf-is_combining.c index 8a477c1d4..ece883beb 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_combining.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_combining.c @@ -14,11 +14,12 @@ void test__f_utf_is_combining__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_combining__works(void **state) { const f_status_t status = f_utf_is_combining(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_control.c b/level_0/f_utf/tests/unit/c/test-utf-is_control.c index ff4e40f65..8c904cf2a 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_control.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_control.c @@ -14,11 +14,12 @@ void test__f_utf_is_control__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_control__works(void **state) { const f_status_t status = f_utf_is_control(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.c b/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.c new file mode 100644 index 000000000..4ce085011 --- /dev/null +++ b/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.c @@ -0,0 +1,61 @@ +#include "test-utf.h" +#include "test-utf-is_control_picture.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void test__f_utf_is_control_picture__works(void **state) { + + { + FILE *file = data__bytesequence_file_open__control_picture(); + + assert_non_null(file); + + f_utf_char_t sequence = 0; + ssize_t bytes = 0; + long long code = 0; + + f_number_unsigned_t line = 0; + + do { + bytes = data__bytesequence_get_line(file, &sequence, &code); + + if (bytes > 0) { + const uint8_t width = macro_f_utf_char_t_width(sequence); + char buffer[5] = { 0, 0, 0, 0, 0 }; + + buffer[0] = macro_f_utf_char_t_to_char_1(sequence); + + if (width > 1) { + buffer[1] = macro_f_utf_char_t_to_char_2(sequence); + + if (width > 2) { + buffer[2] = macro_f_utf_char_t_to_char_3(sequence); + + if (width > 3) { + buffer[3] = macro_f_utf_char_t_to_char_4(sequence); + } + } + } + + const f_status_t status = f_utf_is_control_picture(buffer, 5); + + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + + assert_int_equal(status, F_true); + } + + ++line; + + } while (bytes > 0); + + fclose(file); + } +} + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.h b/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.h new file mode 100644 index 000000000..91d179501 --- /dev/null +++ b/level_0/f_utf/tests/unit/c/test-utf-is_control_picture.h @@ -0,0 +1,20 @@ +/** + * FLL - Level 0 + * + * Project: UTF + * API Version: 0.8 + * Licenses: lgpl-2.1-or-later + * + * Test the function in the utf project. + */ +#ifndef _TEST__F_utf_is_control_picture_h +#define _TEST__F_utf_is_control_picture_h + +/** + * Test that the function works. + * + * @see f_utf_is_control_picture() + */ +extern void test__f_utf_is_control_picture__works(void **state); + +#endif // _TEST__F_utf_is_control_picture_h diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_digit.c b/level_0/f_utf/tests/unit/c/test-utf-is_digit.c index 419a1846e..c487a5221 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_digit.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_digit.c @@ -18,10 +18,11 @@ void test__f_utf_is_digit__works(void **state) { ssize_t bytes = 0; ssize_t bytes_number = 0; uint64_t number = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); bytes_number = data__value_get_line_long_long(file_number, &number); if (bytes > 0 && bytes_number > 0) { @@ -46,6 +47,10 @@ void test__f_utf_is_digit__works(void **state) { const f_status_t status = f_utf_is_digit(buffer, 5, &value); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); assert_int_equal(value, number); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_emoji.c b/level_0/f_utf/tests/unit/c/test-utf-is_emoji.c index 1eb7f2135..3baf99870 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_emoji.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_emoji.c @@ -14,11 +14,12 @@ void test__f_utf_is_emoji__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_emoji__works(void **state) { const f_status_t status = f_utf_is_emoji(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_numeric.c b/level_0/f_utf/tests/unit/c/test-utf-is_numeric.c index 993198cfc..eb8395654 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_numeric.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_numeric.c @@ -14,11 +14,12 @@ void test__f_utf_is_numeric__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_numeric__works(void **state) { const f_status_t status = f_utf_is_numeric(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_phonetic.c b/level_0/f_utf/tests/unit/c/test-utf-is_phonetic.c index 6a0abaffc..b9c689fc5 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_phonetic.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_phonetic.c @@ -14,11 +14,12 @@ void test__f_utf_is_phonetic__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_phonetic__works(void **state) { const f_status_t status = f_utf_is_phonetic(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_private.c b/level_0/f_utf/tests/unit/c/test-utf-is_private.c index dc0d83050..def49fa23 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_private.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_private.c @@ -14,11 +14,12 @@ void test__f_utf_is_private__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_private__works(void **state) { const f_status_t status = f_utf_is_private(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_punctuation.c b/level_0/f_utf/tests/unit/c/test-utf-is_punctuation.c index 1673cf9c7..413c89877 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_punctuation.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_punctuation.c @@ -14,11 +14,12 @@ void test__f_utf_is_punctuation__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_punctuation__works(void **state) { const f_status_t status = f_utf_is_punctuation(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_subscript.c b/level_0/f_utf/tests/unit/c/test-utf-is_subscript.c index ca3f82640..2f979d7cf 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_subscript.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_subscript.c @@ -14,11 +14,12 @@ void test__f_utf_is_subscript__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_subscript__works(void **state) { const f_status_t status = f_utf_is_subscript(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_superscript.c b/level_0/f_utf/tests/unit/c/test-utf-is_superscript.c index d27e88811..a3c0dbf8d 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_superscript.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_superscript.c @@ -14,11 +14,12 @@ void test__f_utf_is_superscript__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_superscript__works(void **state) { const f_status_t status = f_utf_is_superscript(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_symbol.c b/level_0/f_utf/tests/unit/c/test-utf-is_symbol.c index 9716525ec..226b48972 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_symbol.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_symbol.c @@ -14,11 +14,12 @@ void test__f_utf_is_symbol__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_symbol__works(void **state) { const f_status_t status = f_utf_is_symbol(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_whitespace.c b/level_0/f_utf/tests/unit/c/test-utf-is_whitespace.c index 222982c02..de69336d3 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_whitespace.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_whitespace.c @@ -14,11 +14,12 @@ void test__f_utf_is_whitespace__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_whitespace__works(void **state) { const f_status_t status = f_utf_is_whitespace(buffer, 5, F_true); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_modifier.c b/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_modifier.c index e8cd69c2e..9a059090b 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_modifier.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_modifier.c @@ -14,11 +14,12 @@ void test__f_utf_is_whitespace_modifier__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_whitespace_modifier__works(void **state) { const f_status_t status = f_utf_is_whitespace_modifier(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_other.c b/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_other.c index 6f653a537..a26ae9a6e 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_other.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_other.c @@ -14,11 +14,12 @@ void test__f_utf_is_whitespace_other__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_whitespace_other__works(void **state) { const f_status_t status = f_utf_is_whitespace_other(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_zero_width.c b/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_zero_width.c index 8a57cba87..322c774ad 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_zero_width.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_whitespace_zero_width.c @@ -14,11 +14,12 @@ void test__f_utf_is_whitespace_zero_width__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_whitespace_zero_width__works(void **state) { const f_status_t status = f_utf_is_whitespace_zero_width(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_wide.c b/level_0/f_utf/tests/unit/c/test-utf-is_wide.c index c1cf0780d..45fad85a6 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_wide.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_wide.c @@ -14,11 +14,12 @@ void test__f_utf_is_wide__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_wide__works(void **state) { const f_status_t status = f_utf_is_wide(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_word.c b/level_0/f_utf/tests/unit/c/test-utf-is_word.c index eb5036f4e..2514e045e 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_word.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_word.c @@ -14,11 +14,12 @@ void test__f_utf_is_word__strict_is_false(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -60,11 +61,12 @@ void test__f_utf_is_word__strict_is_true(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -86,6 +88,10 @@ void test__f_utf_is_word__strict_is_true(void **state) { const f_status_t status = f_utf_is_word(buffer, 5, F_true); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_word_dash.c b/level_0/f_utf/tests/unit/c/test-utf-is_word_dash.c index 370c63865..c5d95f1f5 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_word_dash.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_word_dash.c @@ -14,11 +14,12 @@ void test__f_utf_is_word_dash__strict_is_false(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -60,11 +61,12 @@ void test__f_utf_is_word_dash__strict_is_true(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -86,6 +88,10 @@ void test__f_utf_is_word_dash__strict_is_true(void **state) { const f_status_t status = f_utf_is_word_dash(buffer, 5, F_true); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_word_dash_plus.c b/level_0/f_utf/tests/unit/c/test-utf-is_word_dash_plus.c index 1f95b6ad9..148cf3832 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_word_dash_plus.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_word_dash_plus.c @@ -14,11 +14,12 @@ void test__f_utf_is_word_dash_plus__strict_is_false(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -60,11 +61,12 @@ void test__f_utf_is_word_dash_plus__strict_is_true(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -86,6 +88,10 @@ void test__f_utf_is_word_dash_plus__strict_is_true(void **state) { const f_status_t status = f_utf_is_word_dash_plus(buffer, 5, F_true); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_zero_width.c b/level_0/f_utf/tests/unit/c/test-utf-is_zero_width.c index d70e5cd50..c359ded8f 100644 --- a/level_0/f_utf/tests/unit/c/test-utf-is_zero_width.c +++ b/level_0/f_utf/tests/unit/c/test-utf-is_zero_width.c @@ -14,11 +14,12 @@ void test__f_utf_is_zero_width__works(void **state) { f_utf_char_t sequence = 0; ssize_t bytes = 0; + long long code = 0; f_number_unsigned_t line = 0; do { - bytes = data__bytesequence_get_line(file, &sequence); + bytes = data__bytesequence_get_line(file, &sequence, &code); if (bytes > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); @@ -40,6 +41,10 @@ void test__f_utf_is_zero_width__works(void **state) { const f_status_t status = f_utf_is_zero_width(buffer, 5); + if (status != F_true) { + printf("[ -------> ] --- Failure at line=%lu sequence='%0x' (%llu).\n", line + 1, sequence, code); + } + assert_int_equal(status, F_true); } diff --git a/level_0/f_utf/tests/unit/c/test-utf.c b/level_0/f_utf/tests/unit/c/test-utf.c index e60c5db32..c6b4d6112 100644 --- a/level_0/f_utf/tests/unit/c/test-utf.c +++ b/level_0/f_utf/tests/unit/c/test-utf.c @@ -23,12 +23,13 @@ int main(void) { cmocka_unit_test(test__f_utf_append_assure__works), cmocka_unit_test(test__f_utf_append_assure_nulless__works), cmocka_unit_test(test__f_utf_append_nulless__works), -/* + cmocka_unit_test(test__f_utf_character_is_alphabetic__works), cmocka_unit_test(test__f_utf_character_is_alphabetic_digit__works), cmocka_unit_test(test__f_utf_character_is_alphabetic_numeric__works), cmocka_unit_test(test__f_utf_character_is_combining__works), cmocka_unit_test(test__f_utf_character_is_control__works), + cmocka_unit_test(test__f_utf_character_is_control_picture__works), cmocka_unit_test(test__f_utf_character_is_digit__works), cmocka_unit_test(test__f_utf_character_is_emoji__works), cmocka_unit_test(test__f_utf_character_is_numeric__works), @@ -54,7 +55,7 @@ int main(void) { cmocka_unit_test(test__f_utf_character_is_word_dash_plus__strict_is_false), cmocka_unit_test(test__f_utf_character_is_word_dash_plus__strict_is_true), -*/ + cmocka_unit_test(test__f_utf_string_dynamic_append__works), cmocka_unit_test(test__f_utf_string_dynamic_append_assure__works), cmocka_unit_test(test__f_utf_string_dynamic_append_assure_nulless__works), @@ -135,12 +136,13 @@ int main(void) { cmocka_unit_test(test__f_utf_string_dynamicss_append__returns_data_not), cmocka_unit_test(test__f_utf_string_dynamicss_append_all__works), cmocka_unit_test(test__f_utf_string_dynamicss_append_all__returns_data_not), -/* + cmocka_unit_test(test__f_utf_is_alphabetic__works), cmocka_unit_test(test__f_utf_is_alphabetic_digit__works), cmocka_unit_test(test__f_utf_is_alphabetic_numeric__works), cmocka_unit_test(test__f_utf_is_combining__works), cmocka_unit_test(test__f_utf_is_control__works), + cmocka_unit_test(test__f_utf_is_control_picture__works), cmocka_unit_test(test__f_utf_is_digit__works), cmocka_unit_test(test__f_utf_is_emoji__works), cmocka_unit_test(test__f_utf_is_numeric__works), @@ -166,7 +168,7 @@ int main(void) { cmocka_unit_test(test__f_utf_is_word_dash_plus__strict_is_false), cmocka_unit_test(test__f_utf_is_word_dash_plus__strict_is_true), -*/ + cmocka_unit_test(test__f_utf_string_map_multis_append__works), cmocka_unit_test(test__f_utf_string_map_multis_append_all__works), cmocka_unit_test(test__f_utf_string_map_multis_append_all__returns_data_not), diff --git a/level_0/f_utf/tests/unit/c/test-utf.h b/level_0/f_utf/tests/unit/c/test-utf.h index b1df8d3d2..6ffef947f 100644 --- a/level_0/f_utf/tests/unit/c/test-utf.h +++ b/level_0/f_utf/tests/unit/c/test-utf.h @@ -38,6 +38,7 @@ #include "test-utf-character_is_alphabetic_numeric.h" #include "test-utf-character_is_combining.h" #include "test-utf-character_is_control.h" +#include "test-utf-character_is_control_picture.h" #include "test-utf-character_is_digit.h" #include "test-utf-character_is_digit.h" #include "test-utf-character_is_emoji.h" @@ -103,6 +104,7 @@ #include "test-utf-is_alphabetic_numeric.h" #include "test-utf-is_combining.h" #include "test-utf-is_control.h" +#include "test-utf-is_control_picture.h" #include "test-utf-is_digit.h" #include "test-utf-is_digit.h" #include "test-utf-is_emoji.h"