From 4b14d2ed36e680bcb361dfd0ad7b75242c0d6cec Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Tue, 21 Jun 2022 23:19:36 -0500 Subject: [PATCH] Progress: f_utf unit tests and make significant change Unicode digit/decimal functions. The controller program is using f_utf_is_alphabetic_decimal(). The previous functionality of that function is now handled by f_utf_is_alphabetic_digit(). I reconsidered some of the design I implemented in the previous commit (e696e3941592c6910f2f8ecc87a698d4f618c3b4). The design of reading the value for the variable "value" and then saving to it is too much complexity. Simplify the design and just expect the caller to read the "value" and decide if it is or is not in range. Get rid of the "*_is_decimal()" functions. The "*_is_digit()" functions work like the "*_is_decimal()" functions did. I am avoiding the term "decimal" because it refers to base-10. The term "digit" is a bit more general. The only downside is that fractions might fall under "digit" (really they are two digits), which this function currently does not handle. The "*_is_numeric()" functions will recognize fractions. I didn't get as far as I wanted to. The number of Unicode values to assign has worn me down. The tests processing is not complete and I haven't gone back and done my normal review. I tried to keep the "value" as small as possible, but unsurprisingly some language out there has a digit that represents billions. I am forced to use a 64-bit data type for this. --- build/level_0/settings | 2 +- build/monolithic/settings | 2 +- level_0/f_conversion/c/conversion.c | 6 +- level_0/f_conversion/c/conversion.h | 6 +- level_0/f_utf/c/private-utf.c | 4 +- level_0/f_utf/c/private-utf.h | 7 +- level_0/f_utf/c/private-utf_alphabetic.c | 53 +- level_0/f_utf/c/private-utf_alphabetic.h | 35 +- level_0/f_utf/c/private-utf_decimal.c | 913 ---------- level_0/f_utf/c/private-utf_decimal.h | 91 - level_0/f_utf/c/private-utf_digit.c | 1825 ++++++++++++++++++- level_0/f_utf/c/private-utf_digit.h | 33 +- level_0/f_utf/c/private-utf_numeric.c | 664 ++++++- level_0/f_utf/c/private-utf_word.c | 2 +- level_0/f_utf/c/utf/is.c | 81 +- level_0/f_utf/c/utf/is.h | 116 +- level_0/f_utf/c/utf/is_character.c | 76 +- level_0/f_utf/c/utf/is_character.h | 107 +- level_0/f_utf/data/build/settings | 2 +- level_0/f_utf/data/build/settings-tests | 1 - .../f_utf/data/tests/bytesequences/decimal-all.txt | 701 -------- .../f_utf/data/tests/bytesequences/digit-all.txt | 941 ++++++++++ .../f_utf/data/tests/bytesequences/numeric-all.txt | 1832 ++++++++++++++++++++ .../f_utf/data/tests/codepoints/decimal-all.txt | 701 -------- level_0/f_utf/data/tests/codepoints/digit-all.txt | 941 ++++++++++ .../f_utf/data/tests/codepoints/numeric-all.txt | 1832 ++++++++++++++++++++ level_0/f_utf/data/tests/values/decimal-all.txt | 701 -------- level_0/f_utf/data/tests/values/digit-all.txt | 1642 ++++++++++++++++++ level_0/f_utf/tests/unit/c/data-utf.c | 13 +- level_0/f_utf/tests/unit/c/data-utf.h | 23 +- .../tests/unit/c/test-utf-character_is_decimal.c | 47 - .../tests/unit/c/test-utf-character_is_decimal.h | 20 - .../tests/unit/c/test-utf-character_is_digit.c | 16 +- level_0/f_utf/tests/unit/c/test-utf-is_decimal.c | 64 - level_0/f_utf/tests/unit/c/test-utf-is_decimal.h | 20 - level_0/f_utf/tests/unit/c/test-utf-is_digit.c | 16 +- level_0/f_utf/tests/unit/c/test-utf.c | 8 +- level_0/f_utf/tests/unit/c/test-utf.h | 4 +- level_1/fl_conversion/c/private-conversion.c | 4 +- .../fll_fss_status_string/c/fss_status_string.c | 2 +- .../fll_fss_status_string/c/fss_status_string.h | 2 +- level_2/fll_status_string/c/status_string.c | 2 +- level_2/fll_status_string/c/status_string.h | 2 +- .../controller/c/controller/private-controller.c | 2 +- .../controller/c/controller/private-controller.h | 4 +- 45 files changed, 9739 insertions(+), 3827 deletions(-) delete mode 100644 level_0/f_utf/c/private-utf_decimal.c delete mode 100644 level_0/f_utf/c/private-utf_decimal.h delete mode 100644 level_0/f_utf/data/tests/bytesequences/decimal-all.txt create mode 100644 level_0/f_utf/data/tests/bytesequences/numeric-all.txt delete mode 100644 level_0/f_utf/data/tests/codepoints/decimal-all.txt create mode 100644 level_0/f_utf/data/tests/codepoints/numeric-all.txt delete mode 100644 level_0/f_utf/data/tests/values/decimal-all.txt create mode 100644 level_0/f_utf/data/tests/values/digit-all.txt delete mode 100644 level_0/f_utf/tests/unit/c/test-utf-character_is_decimal.c delete mode 100644 level_0/f_utf/tests/unit/c/test-utf-character_is_decimal.h delete mode 100644 level_0/f_utf/tests/unit/c/test-utf-is_decimal.c delete mode 100644 level_0/f_utf/tests/unit/c/test-utf-is_decimal.h diff --git a/build/level_0/settings b/build/level_0/settings index e86fdf9..6984dec 100644 --- a/build/level_0/settings +++ b/build/level_0/settings @@ -43,7 +43,7 @@ build_sources_library status_string.c build_sources_library string.c private-string.c string/common.c string/dynamic.c string/map.c string/map_multi.c string/private-dynamic.c string/private-map.c string/private-map_multi.c string/private-quantity.c string/private-range.c string/private-triple.c string/quantity.c string/range.c string/static.c string/triple.c build_sources_library type_array/array_length.c type_array/cell.c type_array/fll_id.c type_array/int8.c type_array/int16.c type_array/int32.c type_array/int64.c type_array/int128.c type_array/state.c type_array/status.c type_array/uint8.c type_array/uint16.c type_array/uint32.c type_array/uint64.c type_array/uint128.c build_sources_library type_array/private-array_length.c type_array/private-cell.c type_array/private-fll_id.c type_array/private-int8.c type_array/private-int16.c type_array/private-int32.c type_array/private-int64.c type_array/private-int128.c type_array/private-state.c type_array/private-status.c type_array/private-uint8.c type_array/private-uint16.c type_array/private-uint32.c type_array/private-uint64.c type_array/private-uint128.c -build_sources_library utf.c private-utf.c private-utf_alphabetic.c private-utf_combining.c private-utf_control.c private-utf_decimal.c private-utf_digit.c private-utf_emoji.c private-utf_numeric.c private-utf_phonetic.c private-utf_private.c private-utf_punctuation.c private-utf_subscript.c private-utf_superscript.c private-utf_symbol.c private-utf_valid.c private-utf_whitespace.c private-utf_wide.c private-utf_word.c private-utf_zero_width.c +build_sources_library utf.c private-utf.c private-utf_alphabetic.c private-utf_combining.c private-utf_control.c private-utf_digit.c private-utf_emoji.c private-utf_numeric.c private-utf_phonetic.c private-utf_private.c private-utf_punctuation.c private-utf_subscript.c private-utf_superscript.c private-utf_symbol.c private-utf_valid.c private-utf_whitespace.c private-utf_wide.c private-utf_word.c private-utf_zero_width.c build_sources_library utf/common.c utf/convert.c utf/dynamic.c utf/is.c utf/is_character.c utf/map.c utf/private-dynamic.c utf/private-map.c utf/private-map_multi.c utf/private-triple.c utf/private-is_unassigned.c utf/private-string.c utf/static.c utf/string.c utf/triple.c build_sources_library-level thread.c private-thread.c build_sources_library_shared diff --git a/build/monolithic/settings b/build/monolithic/settings index 9a3e176..c652545 100644 --- a/build/monolithic/settings +++ b/build/monolithic/settings @@ -43,7 +43,7 @@ build_sources_library level_0/status_string.c build_sources_library level_0/string.c level_0/private-string.c level_0/string/common.c level_0/string/dynamic.c level_0/string/map.c level_0/string/map_multi.c level_0/string/private-dynamic.c level_0/string/private-map.c level_0/string/private-map_multi.c level_0/string/private-quantity.c level_0/string/private-range.c level_0/string/private-triple.c level_0/string/quantity.c level_0/string/range.c level_0/string/static.c level_0/string/triple.c build_sources_library level_0/type_array/array_length.c level_0/type_array/cell.c level_0/type_array/fll_id.c level_0/type_array/int8.c level_0/type_array/int16.c level_0/type_array/int32.c level_0/type_array/int64.c level_0/type_array/int128.c level_0/type_array/state.c level_0/type_array/status.c level_0/type_array/uint8.c level_0/type_array/uint16.c level_0/type_array/uint32.c level_0/type_array/uint64.c level_0/type_array/uint128.c build_sources_library level_0/type_array/private-array_length.c level_0/type_array/private-cell.c level_0/type_array/private-fll_id.c level_0/type_array/private-int8.c level_0/type_array/private-int16.c level_0/type_array/private-int32.c level_0/type_array/private-int64.c level_0/type_array/private-int128.c level_0/type_array/private-state.c level_0/type_array/private-status.c level_0/type_array/private-uint8.c level_0/type_array/private-uint16.c level_0/type_array/private-uint32.c level_0/type_array/private-uint64.c level_0/type_array/private-uint128.c -build_sources_library level_0/utf.c level_0/private-utf.c level_0/private-utf_alphabetic.c level_0/private-utf_combining.c level_0/private-utf_control.c level_0/private-utf_decimal.c level_0/private-utf_digit.c level_0/private-utf_emoji.c level_0/private-utf_numeric.c level_0/private-utf_phonetic.c level_0/private-utf_private.c level_0/private-utf_punctuation.c level_0/private-utf_subscript.c level_0/private-utf_superscript.c level_0/private-utf_symbol.c level_0/private-utf_valid.c level_0/private-utf_whitespace.c level_0/private-utf_wide.c level_0/private-utf_word.c level_0/private-utf_zero_width.c +build_sources_library level_0/utf.c level_0/private-utf.c level_0/private-utf_alphabetic.c level_0/private-utf_combining.c level_0/private-utf_control.c level_0/private-utf_digit.c level_0/private-utf_emoji.c level_0/private-utf_numeric.c level_0/private-utf_phonetic.c level_0/private-utf_private.c level_0/private-utf_punctuation.c level_0/private-utf_subscript.c level_0/private-utf_superscript.c level_0/private-utf_symbol.c level_0/private-utf_valid.c level_0/private-utf_whitespace.c level_0/private-utf_wide.c level_0/private-utf_word.c level_0/private-utf_zero_width.c build_sources_library level_0/utf/common.c level_0/utf/convert.c level_0/utf/dynamic.c level_0/utf/is.c level_0/utf/is_character.c level_0/utf/map.c level_0/utf/map_multi.c level_0/utf/static.c level_0/utf/string.c level_0/utf/triple.c level_0/utf/private-dynamic.c level_0/utf/private-is_unassigned.c level_0/utf/private-map.c level_0/utf/private-map_multi.c level_0/utf/private-triple.c level_0/utf/private-string.c build_sources_library level_1/control_group.c diff --git a/level_0/f_conversion/c/conversion.c b/level_0/f_conversion/c/conversion.c index 562be90..9de40ad 100644 --- a/level_0/f_conversion/c/conversion.c +++ b/level_0/f_conversion/c/conversion.c @@ -16,8 +16,8 @@ extern "C" { } #endif // _di_f_conversion_character_is_binary_ -#ifndef _di_f_conversion_character_is_decimal_ - f_status_t f_conversion_character_is_decimal(const f_char_t character) { +#ifndef _di_f_conversion_character_is_digit_ + f_status_t f_conversion_character_is_digit(const f_char_t character) { if (character > 0x2f && character < 0x3a) { return F_true; @@ -25,7 +25,7 @@ extern "C" { return F_false; } -#endif // _di_f_conversion_character_is_decimal_ +#endif // _di_f_conversion_character_is_digit_ #ifndef _di_f_conversion_character_is_duodecimal_ f_status_t f_conversion_character_is_duodecimal(const f_char_t character) { diff --git a/level_0/f_conversion/c/conversion.h b/level_0/f_conversion/c/conversion.h index 2111006..813610c 100644 --- a/level_0/f_conversion/c/conversion.h +++ b/level_0/f_conversion/c/conversion.h @@ -61,9 +61,9 @@ extern "C" { * F_true if character is a decimal. * F_false if character is not a decimal. */ -#ifndef _di_f_conversion_character_is_decimal_ - extern f_status_t f_conversion_character_is_decimal(const f_char_t character); -#endif // _di_f_conversion_character_is_decimal_ +#ifndef _di_f_conversion_character_is_digit_ + extern f_status_t f_conversion_character_is_digit(const f_char_t character); +#endif // _di_f_conversion_character_is_digit_ /** * Identify whether or not the given 1-byte character represents a duodecimal digit. diff --git a/level_0/f_utf/c/private-utf.c b/level_0/f_utf/c/private-utf.c index 4d95c03..3245789 100644 --- a/level_0/f_utf/c/private-utf.c +++ b/level_0/f_utf/c/private-utf.c @@ -6,7 +6,7 @@ extern "C" { #endif -#if !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_decimal_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to) +#if !defined(_di_f_utf_char_to_character_) || !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_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to) f_status_t private_f_utf_char_to_character(const f_string_t sequence, const f_array_length_t width_max, f_utf_char_t *character_utf) { if (!macro_f_utf_byte_width_is(*sequence)) { @@ -45,7 +45,7 @@ extern "C" { return F_none; } -#endif // !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_decimal_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to) +#endif // !defined(_di_f_utf_char_to_character_) || !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_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to) #if !defined(_di_f_utf_unicode_to_) || !defined(_di_f_utf_character_unicode_to_) f_status_t private_f_utf_character_unicode_to(const f_utf_char_t sequence, uint32_t *codepoint) { diff --git a/level_0/f_utf/c/private-utf.h b/level_0/f_utf/c/private-utf.h index 4839420..60ef262 100644 --- a/level_0/f_utf/c/private-utf.h +++ b/level_0/f_utf/c/private-utf.h @@ -44,13 +44,12 @@ extern "C" { * @see f_utf_character_is_valid() * @see f_utf_is_valid() * @see f_utf_is_alphabetic() - * @see f_utf_is_alphabetic_decimal() + * @see f_utf_is_alphabetic_digit() * @see f_utf_is_alphabetic_numeric() * @see f_utf_is_ascii() * @see f_utf_is_combining() * @see f_utf_is_control() * @see f_utf_is_control_picture() - * @see f_utf_is_decimal() * @see f_utf_is_digit() * @see f_utf_is_emoji() * @see f_utf_is_graph() @@ -71,9 +70,9 @@ extern "C" { * @see f_utf_is_zero_width() * @see f_utf_unicode_to() */ -#if !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_decimal_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to) +#if !defined(_di_f_utf_char_to_character_) || !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_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to) extern f_status_t private_f_utf_char_to_character(const f_string_t character, const f_array_length_t width_max, f_utf_char_t *character_utf) F_attribute_visibility_internal_d; -#endif // !defined(_di_f_utf_char_to_character_) || !defined(_di_f_utf_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_numeric_) || !defined(_di_f_utf_is_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_decimal_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to) +#endif // !defined(_di_f_utf_char_to_character_) || !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_ascii_) || !defined(_di_f_utf_is_combining_) || !defined(_di_f_utf_is_control_) || !defined(_di_f_utf_is_control_picture_) || !defined(_di_f_utf_is_digit_) || !defined(_di_f_utf_is_emoji_) || !defined(_di_f_utf_is_graph_) || !defined(_di_f_utf_is_numeric_) || !defined(_di_f_utf_is_phonetic_) || !defined(_di_f_utf_is_private_) || !defined(_di_f_utf_is_punctuation_) || !defined(_di_f_utf_is_symbol_) || !defined(_di_f_utf_is_unassigned_) || !defined(_di_f_utf_is_valid_) || !defined(_di_f_utf_is_whitespace_) || !defined(_di_f_utf_is_whitespace_modifier_) || !defined(_di_f_utf_is_whitespace_other_) || !defined(_di_f_utf_is_wide_) || !defined(_di_f_utf_is_word_) || !defined(_di_f_utf_is_word_dash_) || !defined(_di_f_utf_is_word_dash_plus_) || !defined(_di_f_utf_is_zero_width_) || !defined(f_utf_unicode_to) /** * Private implementation of f_utf_character_is_zero_width(). diff --git a/level_0/f_utf/c/private-utf_alphabetic.c b/level_0/f_utf/c/private-utf_alphabetic.c index 83d6dfd..4464dc4 100644 --- a/level_0/f_utf/c/private-utf_alphabetic.c +++ b/level_0/f_utf/c/private-utf_alphabetic.c @@ -3,7 +3,6 @@ #include "private-utf_alphabetic.h" #include "private-utf_combining.h" #include "private-utf_control.h" -#include "private-utf_decimal.h" #include "private-utf_digit.h" #include "private-utf_numeric.h" #include "private-utf_phonetic.h" @@ -64,58 +63,10 @@ extern "C" { } #endif // !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_) -#if !defined(_di_f_utf_character_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_decimal_) - f_status_t private_f_utf_character_is_alphabetic_decimal(const f_utf_char_t sequence, uint32_t * const value) { - - if (private_f_utf_character_is_decimal(sequence, F_true, value)) { - return F_true; - } - - if (private_f_utf_character_is_zero_width(sequence)) { - return F_false; - } - - // The is_control() handles both is_control_code() and is_control_format(). - if (private_f_utf_character_is_control(sequence)) { - return F_false; - } - - if (private_f_utf_character_is_control_picture(sequence)) { - return F_false; - } - - if (private_f_utf_character_is_whitespace(sequence)) { - return F_false; - } - - if (private_f_utf_character_is_whitespace_modifier(sequence)) { - return F_false; - } - - if (private_f_utf_character_is_numeric(sequence)) { - return F_false; - } - - if (private_f_utf_character_is_punctuation(sequence)) { - return F_false; - } - - if (private_f_utf_character_is_symbol(sequence)) { - return F_false; - } - - if (private_f_utf_character_is_phonetic(sequence)) { - return F_false; - } - - return F_true; - } -#endif // !defined(_di_f_utf_character_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_decimal_) - #if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_digit_) - f_status_t private_f_utf_character_is_alphabetic_digit(const f_utf_char_t sequence) { + f_status_t private_f_utf_character_is_alphabetic_digit(const f_utf_char_t sequence, uint64_t * const value) { - if (private_f_utf_character_is_digit(sequence)) { + if (private_f_utf_character_is_digit(sequence, value)) { return F_true; } diff --git a/level_0/f_utf/c/private-utf_alphabetic.h b/level_0/f_utf/c/private-utf_alphabetic.h index 4cb7085..8cb3720 100644 --- a/level_0/f_utf/c/private-utf_alphabetic.h +++ b/level_0/f_utf/c/private-utf_alphabetic.h @@ -42,7 +42,7 @@ extern "C" { #endif // !defined(_di_f_utf_character_is_alphabetic_) || !defined(_di_f_utf_is_alphabetic_) /** - * Private implementation of f_utf_character_is_alphabetic_decimal(). + * Private implementation of f_utf_character_is_alphabetic_digit(). * * Intended to be shared to each of the different implementation variations. * @@ -51,12 +51,7 @@ extern "C" { * @param sequence * The byte sequence to validate as a character. * @param value - * (optional) The integer representation of the character if the character is a decimal. - * If specified, value is set to 0xffffffff (F_type_size_max_32_unsigned_d) to represent no known representation. - * If specified and is initially a value of 0, then this represents the operating normall has decimal (base-10). - * If specified and is initially a value from 1 to 16, then this represents operating as that base unit. - * For example, if value is 16, then this function will operate "is hexidecimal" rather than "is decimal". - * If specified and is initially a value of 0xffffffff (F_type_size_max_32_unsigned_d), then this will grab all known integer digits. + * (optional) The integer representation of the sequence if the sequence represents a decimal of any base type. * Set to NULL to not use. * * @return @@ -66,35 +61,11 @@ 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_decimal() - * @see f_utf_is_alphabetic_decimal() - */ -#if !defined(_di_f_utf_character_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_decimal_) - extern f_status_t private_f_utf_character_is_alphabetic_decimal(const f_utf_char_t sequence, uint32_t * const value) F_attribute_visibility_internal_d; -#endif // !defined(_di_f_utf_character_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_decimal_) - -/** - * Private implementation of f_utf_character_is_alphabetic_digit(). - * - * Intended to be shared to each of the different implementation variations. - * - * This expects the character width to be of at least size 2. - * - * @param sequence - * The byte sequence to validate as a character. - * - * @return - * F_true if a UTF-8 alphabetic or a digit character. - * F_false if not a UTF-8 alphabetic nor a digit character. - * - * 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_is_alphabetic_digit() */ #if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_digit_) - extern f_status_t private_f_utf_character_is_alphabetic_digit(const f_utf_char_t sequence) F_attribute_visibility_internal_d; + extern f_status_t private_f_utf_character_is_alphabetic_digit(const f_utf_char_t sequence, uint64_t * const value) F_attribute_visibility_internal_d; #endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_digit_) /** diff --git a/level_0/f_utf/c/private-utf_decimal.c b/level_0/f_utf/c/private-utf_decimal.c deleted file mode 100644 index 5f7d1ae..0000000 --- a/level_0/f_utf/c/private-utf_decimal.c +++ /dev/null @@ -1,913 +0,0 @@ -#include "utf.h" -#include "private-utf.h" -#include "private-utf_decimal.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Inline helper function to reduce amount of code typed. - * - * Given the value, this will conditionally convert the range into an appropriate base-10 integer. - * - * This does not handle non-decimal values (non-base-10). - * - * @param sequence - * The character sequence to process. - * @param always - * The always return F_true boolean. - * @param start - * An inclusive start range. - * The stop range is determined from this. - * @param value - * The value to update, if non-NULL. - * - * @return - * F_true for valid digit in the requested range. - * F_false, otherwise. - */ -static inline f_status_t private_inline_f_utf_character_handle_decimal(const f_utf_char_t sequence, const bool always, const f_utf_char_t start, uint32_t * const value) { - - if (value) { - f_char_t ascii = 0; - - if (macro_f_utf_char_t_width(sequence) == 2) { - ascii = (f_char_t) macro_f_utf_char_t_to_char_2(sequence - start); - } - else if (macro_f_utf_char_t_width(sequence) == 3) { - ascii = (f_char_t) macro_f_utf_char_t_to_char_3(sequence - start); - } - else if (macro_f_utf_char_t_width(sequence) == 4) { - ascii = (f_char_t) macro_f_utf_char_t_to_char_4(sequence - start); - } - - ascii += 0x30; - - return private_f_utf_character_is_decimal_for_ascii(ascii, always, value); - } - - return F_true; -} - -/** - * Inline helper function to reduce amount of code typed. - * - * Given the value, this will conditionally convert the range into an appropriate base-10 integer from 1 to 9. - * - * This does not handle non-decimal values (non-base-10). - * - * @param sequence - * The character sequence to process. - * @param always - * The always return F_true boolean. - * @param start - * An inclusive start range. - * The stop range is determined from this. - * @param value - * The value to update, if non-NULL. - * - * @return - * F_true for valid digit in the requested range. - * F_false, otherwise. - */ -static inline f_status_t private_inline_f_utf_character_handle_roman_numeral(const f_utf_char_t sequence, const bool always, const f_utf_char_t start, uint32_t * const value) { - - if (value) { - const f_char_t ascii = ((f_char_t) macro_f_utf_char_t_to_char_3(sequence - start)) + 0x31; - - return private_f_utf_character_is_decimal_for_ascii(ascii, always, value); - } - - return F_true; -} - -#if !defined(_di_f_utf_character_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_decimal_) || !defined(_di_f_utf_character_is_decimal_) || !defined(_di_f_utf_is_decimal_) - f_status_t private_f_utf_character_is_decimal(const f_utf_char_t sequence, const bool always, uint32_t * const value) { - - if (macro_f_utf_char_t_width_is(sequence) == 2) { - - // Arabic: U+0660 to U+0669. - if (sequence >= 0xd9a00000 && sequence <= 0xd9a90000) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xd9a00000, value); - } - - // Extended Arabic: U+06F0 to U+06F9. - if (sequence >= 0xdbb00000 && sequence <= 0xdbb90000) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xdbb00000, value); - } - - // NKo: U+07C0 to U+07C9. - if (sequence >= 0xdf800000 && sequence <= 0xdf890000) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xdf800000, value); - } - - return F_false; - } - - if (macro_f_utf_char_t_width_is(sequence) == 3) { - - if (macro_f_utf_char_t_to_char_1(sequence) == 0xe0) { - - // Devanagari: U+0966 to U+096F. - if (sequence >= 0xe0a5a600 && sequence <= 0xe0a5af00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0a5a600, value); - } - - // Bengali: U+09E6 to U+09EF. - if (sequence >= 0xe0a7a600 && sequence <= 0xe0a7af00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0a7a600, value); - } - - // Gurmukhi: U+0A66 to U+0A6F. - if (sequence >= 0xe0a9a600 && sequence <= 0xe0a9af00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0a9a600, value); - } - - // Gujarati: U+0AE6 to U+0AEF. - if (sequence >= 0xe0aba600 && sequence <= 0xe0abaf00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0aba600, value); - } - - // Oriya: U+0B66 to U+0B6F. - if (sequence >= 0xe0ada600 && sequence <= 0xe0adaf00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0ada600, value); - } - - // Tamil: U+0BE6 to U+0BEF. - if (sequence >= 0xe0afa600 && sequence <= 0xe0afaf00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0afa600, value); - } - - // Telugu: U+0C66 to U+0C6F. - if (sequence >= 0xe0b1a600 && sequence <= 0xe0b1af00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0b1a600, value); - } - - // Kannada: U+0CE6 to U+0CEF. - if (sequence >= 0xe0b3a600 && sequence <= 0xe0b3af00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0b3a600, value); - } - - // Malayalam: U+0D66 to U+0D6F. - if (sequence >= 0xe0b5a600 && sequence <= 0xe0b5af00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0b5a600, value); - } - - // Sinhala: U+0DE6 to U+0DEF. - if (sequence >= 0xe0b7a600 && sequence <= 0xe0b7af00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0b7a600, value); - } - - // Thai: U+0E50 to U+0E59. - if (sequence >= 0xe0b99000 && sequence <= 0xe0b99900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0b99000, value); - } - - // Lao: U+0ED0 to U+0ED9. - if (sequence >= 0xe0bb9000 && sequence <= 0xe0bb9900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0bb9000, value); - } - - // Tibetan: U+0F20 to U+0F29. - if (sequence >= 0xe0bca000 && sequence <= 0xe0bca900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe0bca000, value); - } - } - else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe1) { - - // Myanmar: U+1040 to U+1049. - if (sequence >= 0xe1818000 && sequence <= 0xe1818900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1818000, value); - } - - // Myanmar (Shan): U+1090 to U+1099. - if (sequence >= 0xe1829000 && sequence <= 0xe1829900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1829000, value); - } - - // Khmer: U+17E0 to U+17E9. - if (sequence >= 0xe19fa000 && sequence <= 0xe19fa900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe19fa000, value); - } - - // Mongolian: U+1810 to U+1819. - if (sequence >= 0xe1a09000 && sequence <= 0xe1a09900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1a09000, value); - } - - // Limbu: U+1946 to U+194F. - if (sequence >= 0xe1a58600 && sequence <= 0xe1a58f00) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1a58600, value); - } - - // New Tai Lue: U+19D0 to U+19D9. - if (sequence >= 0xe1a79000 && sequence <= 0xe1a79900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1a79000, value); - } - - // Tai Tham (Hora): U+1A80 to U+1A89. - if (sequence >= 0xe1aa8000 && sequence <= 0xe1aa8900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1aa8000, value); - } - - // Tai Tham (Tham): U+1A90 to U+1A99. - if (sequence >= 0xe1aa9000 && sequence <= 0xe1aa9900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1aa9000, value); - } - - // Balinese: U+1B50 to U+1B59. - if (sequence >= 0xe1ad9000 && sequence <= 0xe1ad9900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1ad9000, value); - } - - // Sundanese: U+1BB0 to U+1BB9. - if (sequence >= 0xe1aeb000 && sequence <= 0xe1aeb900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1aeb000, value); - } - - // Lepcha: U+1C40 to U+1C49. - if (sequence >= 0xe1b18000 && sequence <= 0xe1b18900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1b18000, value); - } - - // Ol Chiki: U+1C50 to U+1C59. - if (sequence >= 0xe1b19000 && sequence <= 0xe1b19900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xe1b19000, value); - } - } - else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe2) { - - // Number Forms (Roman Numerals): U+2160 to U+2188. - if (sequence >= 0xe285a000 && sequence <= 0xe2868800) { - - // Roman Numerals (large) for 1-9: U+2160 to U+2168. - if (sequence >= 0xe285a000 && sequence <= 0xe285a800) { - return private_inline_f_utf_character_handle_roman_numeral(sequence, always, 0xe285a000, value); - } - - // Roman Numerals (small) for 1-9: U+2170 to U+2178. - if (sequence >= 0xe285b000 && sequence <= 0xe285b800) { - return private_inline_f_utf_character_handle_roman_numeral(sequence, always, 0xe285b000, value); - } - - // Roman Numeral (late form) for 6: U+2185. - if (!value || *value > 5) { - if (sequence == 0xe2868500) { - *value = 6; - - return F_true; - } - } - - if (value) { - if (*value > 9) { - - // Roman Numeral: U+2169, U+2179. - if (sequence == 0xe285a900 || sequence == 0xe285b900) { - *value = 10; - - return F_true; - } - - if (*value > 10) { - - // Roman Numeral: U+216A, U+217A. - if (sequence == 0xe285aa00 || sequence == 0xe285ba00) { - *value = 11; - - return F_true; - } - - if (*value > 11) { - - // Roman Numeral: U+216B, U+217B. - if (sequence == 0xe285ab00 || sequence == 0xe285bb00) { - *value = 12; - - return F_true; - } - - // All remaining are out of the range 0-16 and value must be set to 0xffff for them to be processed. - if (*value == F_type_size_max_32_unsigned_d) { - - // Roman Numeral: U+216C, U+217C, U+2186. - if (sequence == 0xe285ac00 || sequence == 0xe285bc00 || sequence == 0xe2868600) { - *value = 50; - - return F_true; - } - - // Roman Numeral: U+216D, U+217D, U+2183 (reversed, large), U+2184 (reversed, small). - if (sequence == 0xe285ad00 || sequence == 0xe285bd00 || sequence == 0xe2868300 || sequence == 0xe2868400) { - *value = 100; - - return F_true; - } - - // Roman Numeral: U+216E, U+217E. - if (sequence == 0xe285ae00 || sequence == 0xe285be00) { - *value = 500; - - return F_true; - } - - // Roman Numeral: U+216F, U+217F, U+2180 (1000 "CD"). - if (sequence == 0xe285af00 || sequence == 0xe285bf00 || sequence == 0xe2868000) { - *value = 1000; - - return F_true; - } - - // Roman Numeral: U+2181. - if (sequence == 0xe2868100) { - *value = 5000; - - return F_true; - } - - // Roman Numeral: U+2182. - if (sequence == 0xe2868200) { - *value = 10000; - - return F_true; - } - - // Roman Numeral: U+2187. - if (sequence == 0xe2868700) { - *value = 50000; - - return F_true; - } - - // Roman Numeral: U+2188. - if (sequence == 0xe2868800) { - *value = 100000; - - return F_true; - } - } - } - } - } - - *value = F_type_size_max_32_unsigned_d; - } - - if (always) { - return F_true; - } - } - } - else if (macro_f_utf_char_t_to_char_1(sequence) == 0xea) { - - // Vai: U+A620 to U+A629. - if (sequence >= 0xea98a000 && sequence <= 0xea98a900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xea98a000, value); - } - - // Saurashtra: U+A8D0 to U+A8D9. - if (sequence >= 0xeaa39000 && sequence <= 0xeaa39900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xeaa39000, value); - } - - // Kayah Li: U+A900 to U+A909. - if (sequence >= 0xeaa48000 && sequence <= 0xeaa48900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xeaa48000, value); - } - - // Javanese: U+A9D0 to U+A9D9. - if (sequence >= 0xeaa79000 && sequence <= 0xeaa79900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xeaa79000, value); - } - - // Myanmar Extended-B: U+A9F0 to U+A9F9. - if (sequence >= 0xeaa7b000 && sequence <= 0xeaa7b900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xeaa7b000, value); - } - - // Cham: U+AA50 to U+AA59. - if (sequence >= 0xeaa99000 && sequence <= 0xeaa99900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xeaa99000, value); - } - - // Meetei Mayek: U+ABF0 to U+ABF9. - if (sequence >= 0xeaafb000 && sequence <= 0xeaafb900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xeaafb000, value); - } - } - else if (macro_f_utf_char_t_to_char_1(sequence) == 0xef) { - - // Halfwidth and Fullwidth Forms: U+FF10 to U+FF19. - if (sequence >= 0xefbc9000 && sequence <= 0xefbc9900) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xefbc9000, value); - } - } - - 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) { - - // Osmanya: U+104A0 to U+104A9. - if (sequence >= 0xf09092a0 && sequence <= 0xf09092a9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09092a0, value); - } - - // Hanifi Rohingya: U+10D30 to U+10D39. - if (sequence >= 0xf090b4b0 && sequence <= 0xf090b4b9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf090b4b0, value); - } - } - else if (macro_f_utf_char_t_to_char_2(sequence) == 0x91) { - - // Brahmi: U+11066 to U+1106F. - if (sequence >= 0xf09181a6 && sequence <= 0xf09181af) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09181a6, value); - } - - // Sora Sompeng: U+110F0 to U+110F9. - if (sequence >= 0xf09183b0 && sequence <= 0xf09183b9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09183b0, value); - } - - // Chakma: U+11136 to U+1113F. - if (sequence >= 0xf09184b6 && sequence <= 0xf09184bf) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09184b6, value); - } - - // Sharada: U+111D0 to U+111D9. - if (sequence >= 0xf0918790 && sequence <= 0xf0918799) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf0918790, value); - } - - // Khudawadi: U+112F0 to U+112F9. - if (sequence >= 0xf0918bb0 && sequence <= 0xf0918bb9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf0918bb0, value); - } - - // Newa: U+11450 to U+11459. - if (sequence >= 0xf0919190 && sequence <= 0xf0919199) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf0919190, value); - } - - // Tirhuta: U+114D0 to U+114D9. - if (sequence >= 0xf0919390 && sequence <= 0xf0919399) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf0919390, value); - } - - // Modi: U+11650 to U+11659. - if (sequence >= 0xf0919990 && sequence <= 0xf0919999) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf0919990, value); - } - - // Takri: U+116C0 to U+116C9. - if (sequence >= 0xf0919b80 && sequence <= 0xf0919b89) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf0919b80, value); - } - - // Ahom: U+11730 to U+11739. - if (sequence >= 0xf0919cb0 && sequence <= 0xf0919cb9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf0919cb0, value); - } - - // Warang Citi: U+118E0 to U+118E9. - if (sequence >= 0xf091a3a0 && sequence <= 0xf091a3a9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf091a3a0, value); - } - - // Dives Akuru: U+11950 to U+11959. - if (sequence >= 0xf091a590 && sequence <= 0xf091a599) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf091a590, value); - } - - // Bhaiksuki: U+11C50 to U+11C59. - if (sequence >= 0xf091b190 && sequence <= 0xf091b199) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf091b190, value); - } - - // Masaram Gondi: U+11D50 to U+11D59. - if (sequence >= 0xf091b590 && sequence <= 0xf091b599) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf091b590, value); - } - - // Gunjala Gondi: U+11DA0 to U+11DA9. - if (sequence >= 0xf091b6a0 && sequence <= 0xf091b6a9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf091b6a0, value); - } - } - else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) { - - // Mro: U+16A60 to U+16A69. - if (sequence >= 0xf096a9a0 && sequence <= 0xf096a9a9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf096a9a0, value); - } - - // Tangsa: U+16AC0 to U+16AC9. - if (sequence >= 0xf096ab80 && sequence <= 0xf096ab89) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf096ab80, value); - } - - // Pahawh Hmong: U+16B50 to U+16B59. - if (sequence >= 0xf096ad90 && sequence <= 0xf096ad99) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf096ad90, value); - } - } - else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) { - - // Mathematical Alphanumeric (Bold) Symbols: U+1D7CE to U+1D7D7. - if (sequence >= 0xf09d9f8e && sequence <= 0xf09d9f97) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09d9f8e, value); - } - - // Mathematical Alphanumeric (Double-Struck) Symbols: U+1D7D8 to U+1D7E1. - if (sequence >= 0xf09d9f98 && sequence <= 0xf09d9fa1) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09d9f98, value); - } - - // Mathematical Alphanumeric (Sans-Serif) Symbols: U+1D7E2 to U+1D7EB. - if (sequence >= 0xf09d9fa2 && sequence <= 0xf09d9fab) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09d9fa2, value); - } - - // Mathematical Alphanumeric (Sans-Serif Bold) Symbols: U+1D7EC to U+1D7F5. - if (sequence >= 0xf09d9fac && sequence <= 0xf09d9fb5) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09d9fac, value); - } - - // Mathematical Alphanumeric (Monospace) Symbols: U+1D7F6 to U+1D7FF. - if (sequence >= 0xf09d9fb6 && sequence <= 0xf09d9fbf) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09d9fb6, value); - } - } - else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9e) { - - // Nyiakeng Puachue Hmong: U+1E140 to U+1E149. - if (sequence >= 0xf09e8580 && sequence <= 0xf09e8589) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09e8580, value); - } - - // Wancho: U+1E2F0 to U+1E2F9. - if (sequence >= 0xf09e8bb0 && sequence <= 0xf09e8bb9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09e8bb0, value); - } - - // Adlam: U+1E950 to U+1E959. - if (sequence >= 0xf09ea590 && sequence <= 0xf09ea599) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09ea590, value); - } - } - else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9f) { - - // Symbols for Legacy Computing (Segmented): U+1FBF0 to U+1FBF9. - if (sequence >= 0xf09fafb0 && sequence <= 0xf09fafb9) { - return private_inline_f_utf_character_handle_decimal(sequence, always, 0xf09fafb0, value); - } - } - } - - if (value) { - *value = F_type_size_max_32_unsigned_d; - } - - return F_false; - } -#endif // !defined(_di_f_utf_character_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_decimal_) || !defined(_di_f_utf_character_is_decimal_) || !defined(_di_f_utf_is_decimal_) - -#if !defined(_di_f_utf_character_is_decimal_) || !defined(_di_f_utf_is_decimal_) - f_status_t private_f_utf_character_is_decimal_for_ascii(const f_char_t character, const bool always, uint32_t * const value) { - - if (always) { - if (isdigit(character)) { - if (value) { - if (character == f_string_ascii_0_s.string[0]) { - *value = 0; - - return F_true; - } - else if (character == f_string_ascii_1_s.string[0]) { - if (!*value || *value > 1) { - *value = 1; - } - else { - *value = F_type_size_max_32_unsigned_d; - } - - return F_true; - } - else if (character == f_string_ascii_2_s.string[0]) { - if (!*value || *value > 2) { - *value = 2; - } - else { - *value = F_type_size_max_32_unsigned_d; - } - - return F_true; - } - else if (character == f_string_ascii_3_s.string[0]) { - if (!*value || *value > 3) { - *value = 3; - } - else { - *value = F_type_size_max_32_unsigned_d; - } - - return F_true; - } - else if (character == f_string_ascii_4_s.string[0]) { - if (!*value || *value > 4) { - *value = 4; - } - else { - *value = F_type_size_max_32_unsigned_d; - } - - return F_true; - } - else if (character == f_string_ascii_5_s.string[0]) { - if (!*value || *value > 5) { - *value = 5; - } - else { - *value = F_type_size_max_32_unsigned_d; - } - - return F_true; - } - else if (character == f_string_ascii_6_s.string[0]) { - if (!*value || *value > 6) { - *value = 6; - - return F_true; - } - } - else if (character == f_string_ascii_7_s.string[0]) { - if (!*value || *value > 7) { - *value = 7; - } - else { - *value = F_type_size_max_32_unsigned_d; - } - - return F_true; - } - else if (character == f_string_ascii_8_s.string[0]) { - if (!*value || *value > 8) { - *value = 8; - } - else { - *value = F_type_size_max_32_unsigned_d; - } - - return F_true; - } - else if (character == f_string_ascii_9_s.string[0]) { - if (!*value || *value > 9) { - *value = 9; - } - else { - *value = F_type_size_max_32_unsigned_d; - } - - return F_true; - } - - if (*value > 10) { - if (character == f_string_ascii_a_s.string[0] || character == f_string_ascii_A_s.string[0]) { - *value = 10; - - return F_true; - } - - if (*value > 11) { - if (character == f_string_ascii_b_s.string[0] || character == f_string_ascii_B_s.string[0]) { - *value = 11; - - return F_true; - } - - if (*value > 12) { - if (character == f_string_ascii_c_s.string[0] || character == f_string_ascii_C_s.string[0]) { - *value = 12; - - return F_true; - } - - if (*value > 13) { - if (character == f_string_ascii_d_s.string[0] || character == f_string_ascii_D_s.string[0]) { - *value = 13; - - return F_true; - } - - if (*value > 14) { - if (character == f_string_ascii_e_s.string[0] || character == f_string_ascii_E_s.string[0]) { - *value = 14; - - return F_true; - } - - if (*value > 15) { - if (character == f_string_ascii_f_s.string[0] || character == f_string_ascii_F_s.string[0]) { - *value = 15; - - return F_true; - } - } - } - } - } - } - } - - *value = F_type_size_max_32_unsigned_d; - } - - return F_true; - } - - return F_false; - } - - if (isdigit(character)) { - if (value) { - if (character == f_string_ascii_0_s.string[0]) { - *value = 0; - - return F_true; - } - - if (character == f_string_ascii_1_s.string[0]) { - if (!*value || *value > 1) { - *value = 1; - - return F_true; - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - if (character == f_string_ascii_2_s.string[0]) { - if (!*value || *value > 2) { - *value = 2; - - return F_true; - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - if (character == f_string_ascii_3_s.string[0]) { - if (!*value || *value > 3) { - *value = 3; - - return F_true; - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - if (character == f_string_ascii_4_s.string[0]) { - if (!*value || *value > 4) { - *value = 4; - - return F_true; - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - if (character == f_string_ascii_5_s.string[0]) { - if (!*value || *value > 5) { - *value = 5; - - return F_true; - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - if (character == f_string_ascii_6_s.string[0]) { - if (!*value || *value > 6) { - *value = 6; - - return F_true; - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - if (character == f_string_ascii_7_s.string[0]) { - if (!*value || *value > 7) { - *value = 7; - - return F_true; - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - if (character == f_string_ascii_8_s.string[0]) { - if (!*value || *value > 8) { - *value = 8; - - return F_true; - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - if (character == f_string_ascii_9_s.string[0]) { - if (!*value || *value > 9) { - *value = 9; - - return F_true; - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - if (*value > 10) { - if (character == f_string_ascii_a_s.string[0] || character == f_string_ascii_A_s.string[0]) { - *value = 10; - - return F_true; - } - - if (*value > 11) { - if (character == f_string_ascii_b_s.string[0] || character == f_string_ascii_B_s.string[0]) { - *value = 11; - - return F_true; - } - - if (*value > 12) { - if (character == f_string_ascii_c_s.string[0] || character == f_string_ascii_C_s.string[0]) { - *value = 12; - - return F_true; - } - - if (*value > 13) { - if (character == f_string_ascii_d_s.string[0] || character == f_string_ascii_D_s.string[0]) { - *value = 13; - - return F_true; - } - - if (*value > 14) { - if (character == f_string_ascii_e_s.string[0] || character == f_string_ascii_E_s.string[0]) { - *value = 14; - - return F_true; - } - - if (*value > 15) { - if (character == f_string_ascii_f_s.string[0] || character == f_string_ascii_F_s.string[0]) { - *value = 15; - - return F_true; - } - } - } - } - } - } - } - - *value = F_type_size_max_32_unsigned_d; - - return F_false; - } - - return F_true; - } - - return F_false; - } -#endif // !defined(_di_f_utf_character_is_decimal_) || !defined(_di_f_utf_is_decimal_) - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_0/f_utf/c/private-utf_decimal.h b/level_0/f_utf/c/private-utf_decimal.h deleted file mode 100644 index 5e0f181..0000000 --- a/level_0/f_utf/c/private-utf_decimal.h +++ /dev/null @@ -1,91 +0,0 @@ -/** - * FLL - Level 0 - * - * Project: UTF - * API Version: 0.5 - * Licenses: lgpl-2.1-or-later - * - * Provides UTF-8 capabilities. - * - * These are provided for internal reduction in redundant code. - * These should not be exposed/used outside of this project. - */ -#ifndef _PRIVATE_F_utf_decimal_h -#define _PRIVATE_F_utf_decimal_h - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Private implementation of f_utf_character_is_decimal(). - * - * Intended to be shared to each of the different implementation variations. - * - * This expects the character width to be of at least size 2. - * - * @param sequence - * The byte sequence to validate as a character. - * @param always - * Set to F_true to always return F_true for valid digits even if the valid digit would be invalid because it is out of the requested base range. - * When F_false, this function returns F_true if the decimal digit is a valid decimal digit within the requested base range. - * @param value - * (optional) The integer representation of the character if the character is a decimal. - * If specified, value is set to 0xffff to represent no known representation. - * If specified and is initially a value of 0, then this represents the operating normall has decimal (base-10). - * If specified and is initially a value from 1 to 16, then this represents operating as that base unit. - * For example, if value is 16, then this function will operate "is hexidecimal" rather than "is decimal". - * If specified and is initially a value of 0xffff, then this will grab all known integer digits. - * Set to NULL to not use. - * - * @return - * F_true if a UTF-8 decimal character. - * F_false if not a UTF-8 decimal character. - * - * 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_decimal() - * @see f_utf_is_decimal() - */ -#if !defined(_di_f_utf_character_is_decimal_) || !defined(_di_f_utf_is_decimal_) - extern f_status_t private_f_utf_character_is_decimal(const f_utf_char_t sequence, const bool always, uint32_t * const value) F_attribute_visibility_internal_d; -#endif // !defined(_di_f_utf_character_is_decimal_) || !defined(_di_f_utf_is_decimal_) - -/** - * Helper function for handling ascii-only tests. - * - * The width is always assumed to be 1. - * - * @param character - * The ASCII character to validate. - * @param always - * Set to F_true to always return F_true for valid digits even if the valid digit would be invalid because it is out of the requested base range. - * When F_false, this function returns F_true if the decimal digit is a valid decimal digit within the requested base range. - * @param value - * (optional) The integer representation of the character if the character is a decimal. - * If specified, value is set to 0xffffffff (F_type_size_max_32_unsigned_d) to represent no known representation. - * If specified and is initially a value of 0, then this represents the operating normall has decimal (base-10). - * If specified and is initially a value from 1 to 16, then this represents operating as that base unit. - * For example, if value is 16, then this function will operate "is hexidecimal" rather than "is decimal". - * If specified and is initially a value of 0xffffffff (F_type_size_max_32_unsigned_d), then this will grab all known integer digits. - * Set to NULL to not use. - * - * @return - * F_true if a UTF-8 decimal character. - * F_false if not a UTF-8 decimal character. - * - * @see isdigit() - * - * @see f_utf_character_is_decimal() - * @see f_utf_is_decimal() - */ -#if !defined(_di_f_utf_character_is_decimal_) || !defined(_di_f_utf_is_decimal_) - extern f_status_t private_f_utf_character_is_decimal_for_ascii(const f_char_t character, const bool always, uint32_t * const value) F_attribute_visibility_internal_d; -#endif // !defined(_di_f_utf_character_is_decimal_) || !defined(_di_f_utf_is_decimal_) - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // _PRIVATE_F_utf_decimal_h diff --git a/level_0/f_utf/c/private-utf_digit.c b/level_0/f_utf/c/private-utf_digit.c index 3e18ece..4a8921c 100644 --- a/level_0/f_utf/c/private-utf_digit.c +++ b/level_0/f_utf/c/private-utf_digit.c @@ -6,24 +6,96 @@ extern "C" { #endif -#if !defined(_di_f_utf_character_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_decimal_) || !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) - f_status_t private_f_utf_character_is_digit(const f_utf_char_t sequence) { +/** + * Inline helper function to reduce amount of code typed. + * + * Given the value, this will conditionally convert the range into an appropriate base-10 integer. + * + * This does not handle non-decimal values (non-base-10). + * + * @param sequence + * The character sequence to process. + * @param start + * An inclusive start range. + * The base-10 stop range calculated from this. + * @param value + * The value to update, if non-NULL. + * + * @return + * F_true for valid digit in the requested range. + * F_false, otherwise. + */ +static inline f_status_t private_inline_f_utf_character_handle_digit(const f_utf_char_t sequence, const f_utf_char_t start, uint64_t * const value) { + + if (value) { + f_char_t ascii = 0; + + if (macro_f_utf_char_t_width(sequence) == 2) { + ascii = (f_char_t) macro_f_utf_char_t_to_char_2(sequence - start); + } + else if (macro_f_utf_char_t_width(sequence) == 3) { + ascii = (f_char_t) macro_f_utf_char_t_to_char_3(sequence - start); + } + else if (macro_f_utf_char_t_width(sequence) == 4) { + ascii = (f_char_t) macro_f_utf_char_t_to_char_4(sequence - start); + } + + ascii += 0x30; + + return private_f_utf_character_is_digit_for_ascii(ascii, value); + } + + return F_true; +} + +/** + * Inline helper function to reduce amount of code typed. + * + * Given the value, this will conditionally convert the range into an appropriate base-10 integer from 1 to 9. + * + * This does not handle non-decimal values (non-base-10). + * + * @param sequence + * The character sequence to process. + * @param start + * An inclusive start range. + * The base-10 stop range calculated from this. + * @param value + * The value to update, if non-NULL. + * + * @return + * F_true for valid digit in the requested range. + * F_false, otherwise. + */ +static inline f_status_t private_inline_f_utf_character_handle_digit_from_one(const f_utf_char_t sequence, const f_utf_char_t start, uint64_t * const value) { + + if (value) { + const f_char_t ascii = ((f_char_t) macro_f_utf_char_t_to_char_3(sequence - start)) + 0x31; + + return private_f_utf_character_is_digit_for_ascii(ascii, value); + } + + return F_true; +} + +#if !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) + f_status_t private_f_utf_character_is_digit(const f_utf_char_t sequence, uint64_t * const value) { if (macro_f_utf_char_t_width_is(sequence) == 2) { // Arabic: U+0660 to U+0669. if (sequence >= 0xd9a00000 && sequence <= 0xd9a90000) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xd9a00000, value); } // Extended Arabic: U+06F0 to U+06F9. if (sequence >= 0xdbb00000 && sequence <= 0xdbb90000) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xdbb00000, value); } // NKo: U+07C0 to U+07C9. if (sequence >= 0xdf800000 && sequence <= 0xdf890000) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xdf800000, value); } return F_false; @@ -35,135 +107,1346 @@ extern "C" { // Devanagari: U+0966 to U+096F. if (sequence >= 0xe0a5a600 && sequence <= 0xe0a5af00) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0a5a600, value); } // Bengali: U+09E6 to U+09EF. if (sequence >= 0xe0a7a600 && sequence <= 0xe0a7af00) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0a7a600, value); } // Gurmukhi: U+0A66 to U+0A6F. if (sequence >= 0xe0a9a600 && sequence <= 0xe0a9af00) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0a9a600, value); } // Gujarati: U+0AE6 to U+0AEF. if (sequence >= 0xe0aba600 && sequence <= 0xe0abaf00) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0aba600, value); } // Oriya: U+0B66 to U+0B6F. if (sequence >= 0xe0ada600 && sequence <= 0xe0adaf00) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0ada600, value); } - // Tamil: U+0BE6 to U+0BEF. - if (sequence >= 0xe0afa600 && sequence <= 0xe0afaf00) { + // Tamil: U+0BE6 to U+0BF2. + if (sequence >= 0xe0afa600 && sequence <= 0xe0afb200) { + + // Tamil: U+0BE6 to U+0BEF. + if (sequence <= 0xe0afaf00) { + return private_inline_f_utf_character_handle_digit(sequence, 0xe0afa600, value); + } + + // Tamil: U+0BF0. + if (sequence == 0xe0afb000) { + *value = 10; + + return F_true; + } + + // Tamil: U+0BF1. + if (sequence == 0xe0afb100) { + *value = 100; + + return F_true; + } + + // Tamil: U+0BF2. + *value = 1000; + return F_true; } - // Telugu: U+0C66 to U+0C6F. + // Telugu: U+0C66 to U+0C72. if (sequence >= 0xe0b1a600 && sequence <= 0xe0b1af00) { + + // Telugu: U+0C66 to U+0C6F. + if (sequence <= 0xe0b1af00) { + return private_inline_f_utf_character_handle_digit(sequence, 0xe0b1a600, value); + } + + // Telugu: U+0C70. + if (sequence == 0xe0afb000) { + *value = 10; + + return F_true; + } + + // Telugu: U+0C71. + if (sequence == 0xe0afb100) { + *value = 100; + + return F_true; + } + + // Telugu: U+0C72. + *value = 1000; + return F_true; } // Kannada: U+0CE6 to U+0CEF. if (sequence >= 0xe0b3a600 && sequence <= 0xe0b3af00) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0b3a600, value); } // Malayalam: U+0D66 to U+0D6F. if (sequence >= 0xe0b5a600 && sequence <= 0xe0b5af00) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0b5a600, value); } // Sinhala: U+0DE6 to U+0DEF. if (sequence >= 0xe0b7a600 && sequence <= 0xe0b7af00) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0b7a600, value); } // Thai: U+0E50 to U+0E59. if (sequence >= 0xe0b99000 && sequence <= 0xe0b99900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0b99000, value); } // Lao: U+0ED0 to U+0ED9. if (sequence >= 0xe0bb9000 && sequence <= 0xe0bb9900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0bb9000, value); } // Tibetan: U+0F20 to U+0F29. if (sequence >= 0xe0bca000 && sequence <= 0xe0bca900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe0bca000, value); } } else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe1) { // Myanmar: U+1040 to U+1049. if (sequence >= 0xe1818000 && sequence <= 0xe1818900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe1818000, value); } // Myanmar (Shan): U+1090 to U+1099. if (sequence >= 0xe1829000 && sequence <= 0xe1829900) { + return private_inline_f_utf_character_handle_digit(sequence, 0xe1829000, value); + } + + // Ethiopic: U+1369 to U+137C. + if (sequence >= 0xe18da900 && sequence <= 0xe18dbc00) { + + // Ethiopic: U+1369 to U+1371. + if (sequence <= 0xe18db100) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe18da900, value); + } + + // Ethiopic: U+1372. + if (sequence == 0xe18db200) { + *value = 10; + + return F_true; + } + + // Ethiopic: U+1373. + if (sequence == 0xe18db300) { + *value = 20; + + return F_true; + } + + // Ethiopic: U+1374. + if (sequence == 0xe18db400) { + *value = 30; + + return F_true; + } + + // Ethiopic: U+1375. + if (sequence == 0xe18db500) { + *value = 40; + + return F_true; + } + + // Ethiopic: U+1376. + if (sequence == 0xe18db600) { + *value = 50; + + return F_true; + } + + // Ethiopic: U+1377. + if (sequence == 0xe18db700) { + *value = 60; + + return F_true; + } + + // Ethiopic: U+1378. + if (sequence == 0xe18db800) { + *value = 70; + + return F_true; + } + + // Ethiopic: U+1379. + if (sequence == 0xe18db900) { + *value = 80; + + return F_true; + } + + // Ethiopic: U+137A. + if (sequence == 0xe18dba00) { + *value = 90; + + return F_true; + } + + // Ethiopic: U+137B. + if (sequence == 0xe18dbb00) { + *value = 100; + + return F_true; + } + + // Ethiopic: U+137C. + *value = 1000; + + return F_true; + } + + // Runic: U+16EE to U+16F0. + if (sequence >= 0xe19bae00 && sequence <= 0xe19bb000) { + + // Runic: U+16EE. + if (sequence == 0xe19bae00) { + *value = 17; + + return F_true; + } + + // Runic: U+16EF. + if (sequence == 0xe19baf00) { + *value = 18; + + return F_true; + } + + // Runic: U+16F0. + *value = 19; + return F_true; } // Khmer: U+17E0 to U+17E9. if (sequence >= 0xe19fa000 && sequence <= 0xe19fa900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe19fa000, value); + } + + // Khmer: U+17F0 to U+17F9. + if (sequence >= 0xe19fb000 && sequence <= 0xe19fb900) { + return private_inline_f_utf_character_handle_digit(sequence, 0xe19fb000, value); } // Mongolian: U+1810 to U+1819. if (sequence >= 0xe1a09000 && sequence <= 0xe1a09900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe1a09000, value); } // Limbu: U+1946 to U+194F. if (sequence >= 0xe1a58600 && sequence <= 0xe1a58f00) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe1a58600, value); } // New Tai Lue: U+19D0 to U+19D9. if (sequence >= 0xe1a79000 && sequence <= 0xe1a79900) { + return private_inline_f_utf_character_handle_digit(sequence, 0xe1a79000, value); + } + + // New Tai Lue: U+19DA. + if (sequence == 0xe1a79a00) { + *value = 1; + return F_true; } // Tai Tham (Hora): U+1A80 to U+1A89. if (sequence >= 0xe1aa8000 && sequence <= 0xe1aa8900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe1aa8000, value); } // Tai Tham (Tham): U+1A90 to U+1A99. if (sequence >= 0xe1aa9000 && sequence <= 0xe1aa9900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe1aa9000, value); } // Balinese: U+1B50 to U+1B59. if (sequence >= 0xe1ad9000 && sequence <= 0xe1ad9900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe1ad9000, value); } // Sundanese: U+1BB0 to U+1BB9. if (sequence >= 0xe1aeb000 && sequence <= 0xe1aeb900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe1aeb000, value); } // Lepcha: U+1C40 to U+1C49. if (sequence >= 0xe1b18000 && sequence <= 0xe1b18900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe1b18000, value); } // Ol Chiki: U+1C50 to U+1C59. if (sequence >= 0xe1b19000 && sequence <= 0xe1b19900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xe1b19000, value); } } else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe2) { - // Number Forms: U+2160 to U+2188 (Roman Numerals). + // Superscripts and Subscripts: U+2070 to U+2089. + if (sequence >= 0xe281b000 && sequence <= 0xe2828900) { + + // Superscripts and Subscripts: U+2070. + if (sequence == 0xe281b000) { + *value = 0; + + return F_true; + } + + // Superscripts and Subscripts: U+2074. + if (sequence == 0xe281b400) { + *value = 4; + + return F_true; + } + + // Superscripts and Subscripts: U+2075. + if (sequence == 0xe281b500) { + *value = 5; + + return F_true; + } + + // Superscripts and Subscripts: U+2076. + if (sequence == 0xe281b600) { + *value = 6; + + return F_true; + } + + // Superscripts and Subscripts: U+2077. + if (sequence == 0xe281b700) { + *value = 7; + + return F_true; + } + + // Superscripts and Subscripts: U+2078. + if (sequence == 0xe281b800) { + *value = 8; + + return F_true; + } + + // Superscripts and Subscripts: U+2079. + if (sequence == 0xe281b900) { + *value = 9; + + return F_true; + } + + // Superscripts and Subscripts: U+2080 to U+2089. + return private_inline_f_utf_character_handle_digit(sequence, 0xe2828000, value); + } + + // Number Forms: U+2160 to U+2188. if (sequence >= 0xe285a000 && sequence <= 0xe2868800) { + + // Number Forms: U+2160 to U+2168. + if (sequence <= 0xe285a800) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe285a000, value); + } + + // Number Forms: U+2170 to U+2178. + if (sequence >= 0xe285b000 && sequence <= 0xe285b800) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe285b000, value); + } + + // Number Forms: U+2185. + if (sequence == 0xe2868500) { + if (value) { + *value = 6; + } + + return F_true; + } + + // Number Forms: U+2169, U+2179. + if (sequence == 0xe285a900 || sequence == 0xe285b900) { + if (value) { + *value = 10; + } + + return F_true; + } + + // Number Forms: U+216A, U+217A. + else if (sequence == 0xe285aa00 || sequence == 0xe285ba00) { + if (value) { + *value = 11; + } + + return F_true; + } + + // Number Forms: U+216B, U+217B. + else if (sequence == 0xe285ab00 || sequence == 0xe285bb00) { + if (value) { + *value = 12; + } + + return F_true; + } + + // Number Forms: U+216C, U+217C, U+2186. + else if (sequence == 0xe285ac00 || sequence == 0xe285bc00 || sequence == 0xe2868600) { + if (value) { + *value = 50; + } + + return F_true; + } + + // Number Forms: U+216D, U+217D, U+2183 (reversed, large), U+2184 (reversed, small). + else if (sequence == 0xe285ad00 || sequence == 0xe285bd00 || sequence == 0xe2868300 || sequence == 0xe2868400) { + if (value) { + *value = 100; + } + + return F_true; + } + + // Number Forms: U+216E, U+217E. + else if (sequence == 0xe285ae00 || sequence == 0xe285be00) { + if (value) { + *value = 500; + } + + return F_true; + } + + // Number Forms: U+216F, U+217F, U+2180 (1000 "CD"). + else if (sequence == 0xe285af00 || sequence == 0xe285bf00 || sequence == 0xe2868000) { + if (value) { + *value = 1000; + } + + return F_true; + } + + // Number Forms: U+2181. + else if (sequence == 0xe2868100) { + if (value) { + *value = 5000; + } + + return F_true; + } + + // Number Forms: U+2182. + else if (sequence == 0xe2868200) { + if (value) { + *value = 10000; + } + + return F_true; + } + + // Number Forms: U+2187. + else if (sequence == 0xe2868700) { + if (value) { + *value = 50000; + } + + return F_true; + } + + // Number Forms: U+2188. + else if (sequence == 0xe2868800) { + if (value) { + *value = 100000; + } + + return F_true; + } + } + + // Enclosed Alphanumerics: U+2460 to U+249B. + if (sequence >= 0xe291a000 && sequence <= 0xe2929b00) { + + // Enclosed Alphanumerics: U+2460 to U+2468. + if (sequence <= 0xe291a800) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe291a000, value); + } + + // Enclosed Alphanumerics: U+2469. + if (sequence == 0xe291a900) { + if (value) { + *value = 10; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+246A. + if (sequence == 0xe291aa00) { + if (value) { + *value = 11; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+246B. + if (sequence == 0xe291ab00) { + if (value) { + *value = 12; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+246C. + if (sequence == 0xe291ac00) { + if (value) { + *value = 13; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+246D. + if (sequence == 0xe291ad00) { + if (value) { + *value = 14; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+246E. + if (sequence == 0xe291ae00) { + if (value) { + *value = 15; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+246F. + if (sequence == 0xe291af00) { + if (value) { + *value = 16; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2470. + if (sequence == 0xe291b000) { + if (value) { + *value = 17; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2471. + if (sequence == 0xe291b100) { + if (value) { + *value = 18; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2472. + if (sequence == 0xe291b200) { + if (value) { + *value = 19; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2473. + if (sequence == 0xe291b300) { + if (value) { + *value = 20; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2474 to U+247C. + if (sequence <= 0xe291b400) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe291b400, value); + } + + // Enclosed Alphanumerics: U+247D. + if (sequence == 0xe291bd00) { + if (value) { + *value = 10; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+247E. + if (sequence == 0xe291be00) { + if (value) { + *value = 11; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+247F. + if (sequence == 0xe291bf00) { + if (value) { + *value = 12; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2480. + if (sequence == 0xe291c000) { + if (value) { + *value = 13; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2481. + if (sequence == 0xe291c100) { + if (value) { + *value = 14; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2482. + if (sequence == 0xe291c200) { + if (value) { + *value = 15; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2483. + if (sequence == 0xe291c300) { + if (value) { + *value = 16; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2484. + if (sequence == 0xe291c400) { + if (value) { + *value = 17; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2485. + if (sequence == 0xe291c500) { + if (value) { + *value = 18; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2486. + if (sequence == 0xe291c600) { + if (value) { + *value = 19; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2487. + if (sequence == 0xe291c700) { + if (value) { + *value = 20; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2488 to U+2490. + if (sequence <= 0xe2929000) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe2928800, value); + } + + // Enclosed Alphanumerics: U+2491. + if (sequence == 0xe2929100) { + if (value) { + *value = 10; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2492. + if (sequence == 0xe2929200) { + if (value) { + *value = 11; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2493. + if (sequence == 0xe2929300) { + if (value) { + *value = 12; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2494. + if (sequence == 0xe2929400) { + if (value) { + *value = 13; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2495. + if (sequence == 0xe2929500) { + if (value) { + *value = 14; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2496. + if (sequence == 0xe2929600) { + if (value) { + *value = 15; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2497. + if (sequence == 0xe2929700) { + if (value) { + *value = 16; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2498. + if (sequence == 0xe2929800) { + if (value) { + *value = 17; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+2499. + if (sequence == 0xe2929900) { + if (value) { + *value = 18; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+249A. + if (sequence == 0xe2929a00) { + if (value) { + *value = 19; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+249B. + if (value) { + *value = 20; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24EA to U+24FF. + if (sequence >= 0xe293aa00 && sequence <= 0xe293bf00) { + + // Enclosed Alphanumerics: U+24EA. + if (sequence == 0xe293aa00) { + if (value) { + *value = 0; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24EB. + if (sequence == 0xe293ab00) { + if (value) { + *value = 11; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24EC. + if (sequence == 0xe293ac00) { + if (value) { + *value = 12; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24ED. + if (sequence == 0xe293ad00) { + if (value) { + *value = 13; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24EE. + if (sequence == 0xe293ae00) { + if (value) { + *value = 14; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24EF. + if (sequence == 0xe293af00) { + if (value) { + *value = 15; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24F0. + if (sequence == 0xe293b000) { + if (value) { + *value = 16; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24F1. + if (sequence == 0xe293b100) { + if (value) { + *value = 17; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24F2. + if (sequence == 0xe293b200) { + if (value) { + *value = 18; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24F3. + if (sequence == 0xe293b300) { + if (value) { + *value = 19; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24F4. + if (sequence == 0xe293b400) { + if (value) { + *value = 20; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24F5 to U+24FD. + if (sequence <= 0xe293bd00) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe293b500, value); + } + + // Enclosed Alphanumerics: U+24FE. + if (sequence == 0xe293be00) { + if (value) { + *value = 10; + } + + return F_true; + } + + // Enclosed Alphanumerics: U+24FF. + if (sequence == 0xe293bf00) { + if (value) { + *value = 0; + } + + return F_true; + } + } + + // Dingbats: U+2776 to U+2793. + if (sequence >= 0xe29db600 && sequence <= 0xe29e9300) { + + // Dingbats: U+2776 to U+277E. + if (sequence <= 0xe29dbe00) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe29db600, value); + } + + // Dingbats: U+277F. + if (sequence == 0xe29dbf00) { + if (value) { + *value = 10; + } + + return F_true; + } + + // Dingbats: U+2780 to U+2789. + if (sequence <= 0xe29e8900) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe29e8000, value); + } + + // Dingbats: U+2789. + if (sequence == 0xe29e8900) { + if (value) { + *value = 10; + } + + return F_true; + } + + // Dingbats: U+278A to U+2792. + if (sequence <= 0xe29e9200) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe29e8a00, value); + } + + // Dingbats: U+2793. + if (value) { + *value = 10; + } + + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe3) { + + // Kanbun: U+3192 to U+3195. + if (sequence >= 0xe3869200 && sequence <= 0xe3869200) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe3869200, value); + } + + // Enclosed CJK Letters and Months: U+3220 to U+3229. + if (sequence >= 0xe388a000 && sequence <= 0xe388a900) { + + // Enclosed CJK Letters and Months: U+3220 to U+3228. + if (sequence <= 0xe388a800) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe388a000, value); + } + + // Enclosed CJK Letters and Months: U+3229. + if (value) { + *value = 10; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3248 to U+324F. + if (sequence >= 0xe3898800 && sequence <= 0xe3898f00) { + + // Enclosed CJK Letters and Months: U+3248. + if (sequence == 0xe3898800) { + if (value) { + *value = 10; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3249. + if (sequence == 0xe3898900) { + if (value) { + *value = 20; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+324A. + if (sequence == 0xe3898a00) { + if (value) { + *value = 30; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+324B. + if (sequence == 0xe3898b00) { + if (value) { + *value = 40; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+324C. + if (sequence == 0xe3898c00) { + if (value) { + *value = 50; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+324D. + if (sequence == 0xe3898d00) { + if (value) { + *value = 60; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+324E. + if (sequence == 0xe3898e00) { + if (value) { + *value = 70; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+324F. + if (value) { + *value = 80; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3251 to U+325F. + if (sequence >= 0xe3899100 && sequence <= 0xe3899f00) { + + // Enclosed CJK Letters and Months: U+3251. + if (sequence == 0xe3899100) { + if (value) { + *value = 21; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3252. + if (sequence == 0xe3899200) { + if (value) { + *value = 22; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3253. + if (sequence == 0xe3899300) { + if (value) { + *value = 23; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3254. + if (sequence == 0xe3899400) { + if (value) { + *value = 24; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3255. + if (sequence == 0xe3899500) { + if (value) { + *value = 25; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3256. + if (sequence == 0xe3899600) { + if (value) { + *value = 26; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3257. + if (sequence == 0xe3899700) { + if (value) { + *value = 27; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3258. + if (sequence == 0xe3899800) { + if (value) { + *value = 28; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+3259. + if (sequence == 0xe3899900) { + if (value) { + *value = 29; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+325A. + if (sequence == 0xe3899a00) { + if (value) { + *value = 30; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+325B. + if (sequence == 0xe3899b00) { + if (value) { + *value = 31; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+325C. + if (sequence == 0xe3899c00) { + if (value) { + *value = 32; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+325D. + if (sequence == 0xe3899d00) { + if (value) { + *value = 33; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+325E. + if (sequence == 0xe3899e00) { + if (value) { + *value = 34; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+325F. + if (sequence == 0xe3899f00) { + if (value) { + *value = 35; + } + + return F_true; + } + } + + // Enclosed CJK Letters and Months: U+3280 to U+3289. + if (sequence >= 0xe38a8000 && sequence <= 0xe38a8900) { + + // Enclosed CJK Letters and Months: U+3280 to U+3288. + if (sequence <= 0xe38a8800) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xe38a8000, value); + } + + // Enclosed CJK Letters and Months: U+3289. + if (value) { + *value = 10; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B1 to U+32BF. + if (sequence >= 0xe38ab100 && sequence <= 0xe38abf00) { + + // Enclosed CJK Letters and Months: U+32B1. + if (sequence == 0xe38ab100) { + if (value) { + *value = 36; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B2. + if (sequence == 0xe38ab200) { + if (value) { + *value = 37; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B3. + if (sequence == 0xe38ab300) { + if (value) { + *value = 38; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B4. + if (sequence == 0xe38ab400) { + if (value) { + *value = 39; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B5. + if (sequence == 0xe38ab500) { + if (value) { + *value = 40; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B6. + if (sequence == 0xe38ab600) { + if (value) { + *value = 41; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B7. + if (sequence == 0xe38ab700) { + if (value) { + *value = 42; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B8. + if (sequence == 0xe38ab800) { + if (value) { + *value = 43; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B9. + if (sequence == 0xe38ab900) { + if (value) { + *value = 44; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32BA. + if (sequence == 0xe38aba00) { + if (value) { + *value = 45; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32BB. + if (sequence == 0xe38abb00) { + if (value) { + *value = 46; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32BC. + if (sequence == 0xe38abc00) { + if (value) { + *value = 47; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32BD. + if (sequence == 0xe38abd00) { + if (value) { + *value = 48; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32BE. + if (sequence == 0xe38abe00) { + if (value) { + *value = 49; + } + + return F_true; + } + + // Enclosed CJK Letters and Months: U+32BF. + if (value) { + *value = 50; + } + return F_true; } } @@ -171,44 +1454,44 @@ extern "C" { // Vai: U+A620 to U+A629. if (sequence >= 0xea98a000 && sequence <= 0xea98a900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xea98a000, value); } // Saurashtra: U+A8D0 to U+A8D9. if (sequence >= 0xeaa39000 && sequence <= 0xeaa39900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xeaa39000, value); } // Kayah Li: U+A900 to U+A909. if (sequence >= 0xeaa48000 && sequence <= 0xeaa48900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xeaa48000, value); } // Javanese: U+A9D0 to U+A9D9. if (sequence >= 0xeaa79000 && sequence <= 0xeaa79900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xeaa79000, value); } // Myanmar Extended-B: U+A9F0 to U+A9F9. if (sequence >= 0xeaa7b000 && sequence <= 0xeaa7b900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xeaa7b000, value); } // Cham: U+AA50 to U+AA59. if (sequence >= 0xeaa99000 && sequence <= 0xeaa99900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xeaa99000, value); } // Meetei Mayek: U+ABF0 to U+ABF9. if (sequence >= 0xeaafb000 && sequence <= 0xeaafb900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xeaafb000, value); } } else if (macro_f_utf_char_t_to_char_1(sequence) == 0xef) { // Halfwidth and Fullwidth Forms: U+FF10 to U+FF19. if (sequence >= 0xefbc9000 && sequence <= 0xefbc9900) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xefbc9000, value); } } @@ -219,166 +1502,572 @@ extern "C" { if (macro_f_utf_char_t_to_char_2(sequence) == 0x90) { + // Aegean Numbers: U+10107 to U+10133. + if (sequence >= 0xf0908487 && sequence <= 0xf09084b3) { + + // Aegean Numbers: U+10107 to U+1010F. + if (sequence <= 0xf090848f) { + return private_inline_f_utf_character_handle_digit_from_one(sequence, 0xf0908487, value); + } + + // Aegean Numbers: U+10110. + if (sequence == 0xf0908490) { + if (value) { + *value = 10; + } + + return F_true; + } + + // Aegean Numbers: U+10111. + if (sequence == 0xf0908491) { + if (value) { + *value = 20; + } + + return F_true; + } + + // Aegean Numbers: U+10112. + if (sequence == 0xf0908492) { + if (value) { + *value = 30; + } + + return F_true; + } + + // Aegean Numbers: U+10113. + if (sequence == 0xf0908493) { + if (value) { + *value = 40; + } + + return F_true; + } + + // Aegean Numbers: U+10114. + if (sequence == 0xf0908494) { + if (value) { + *value = 50; + } + + return F_true; + } + + // Aegean Numbers: U+10115. + if (sequence == 0xf0908495) { + if (value) { + *value = 60; + } + + return F_true; + } + + // Aegean Numbers: U+10116. + if (sequence == 0xf0908496) { + if (value) { + *value = 70; + } + + return F_true; + } + + // Aegean Numbers: U+10117. + if (sequence == 0xf0908497) { + if (value) { + *value = 80; + } + + return F_true; + } + + // Aegean Numbers: U+10118. + if (sequence == 0xf0908498) { + if (value) { + *value = 90; + } + + return F_true; + } + + // Aegean Numbers: U+10119. + if (sequence == 0xf0908499) { + if (value) { + *value = 100; + } + + return F_true; + } + + // Aegean Numbers: U+1011A. + if (sequence == 0xf090849a) { + if (value) { + *value = 200; + } + + return F_true; + } + + // Aegean Numbers: U+1011B. + if (sequence == 0xf090849b) { + if (value) { + *value = 300; + } + + return F_true; + } + + // Aegean Numbers: U+1011C. + if (sequence == 0xf090849c) { + if (value) { + *value = 400; + } + + return F_true; + } + + // Aegean Numbers: U+1011D. + if (sequence == 0xf090849d) { + if (value) { + *value = 500; + } + + return F_true; + } + + // Aegean Numbers: U+1011E. + if (sequence == 0xf090849e) { + if (value) { + *value = 600; + } + + return F_true; + } + + // Aegean Numbers: U+1011F. + if (sequence == 0xf090849f) { + if (value) { + *value = 700; + } + + return F_true; + } + + // Aegean Numbers: U+10120. + if (sequence == 0xf09084a0) { + if (value) { + *value = 800; + } + + return F_true; + } + + // Aegean Numbers: U+10121. + if (sequence == 0xf09084a1) { + if (value) { + *value = 900; + } + + return F_true; + } + + // Aegean Numbers: U+10122. + if (sequence == 0xf09084a2) { + if (value) { + *value = 1000; + } + + return F_true; + } + + // Aegean Numbers: U+10123. + if (sequence == 0xf09084a3) { + if (value) { + *value = 2000; + } + + return F_true; + } + + // Aegean Numbers: U+10124. + if (sequence == 0xf09084a4) { + if (value) { + *value = 3000; + } + + return F_true; + } + + // Aegean Numbers: U+10125. + if (sequence == 0xf09084a5) { + if (value) { + *value = 4000; + } + + return F_true; + } + + // Aegean Numbers: U+10126. + if (sequence == 0xf09084a6) { + if (value) { + *value = 5000; + } + + return F_true; + } + + // Aegean Numbers: U+10127. + if (sequence == 0xf09084a7) { + if (value) { + *value = 6000; + } + + return F_true; + } + + // Aegean Numbers: U+10128. + if (sequence == 0xf09084a8) { + if (value) { + *value = 7000; + } + + return F_true; + } + + // Aegean Numbers: U+10129. + if (sequence == 0xf09084a9) { + if (value) { + *value = 8000; + } + + return F_true; + } + + // Aegean Numbers: U+1012a. + if (sequence == 0xf09084aa) { + if (value) { + *value = 9000; + } + + return F_true; + } + + // Aegean Numbers: U+1012b. + if (sequence == 0xf09084ab) { + if (value) { + *value = 10000; + } + + return F_true; + } + + // Aegean Numbers: U+1012c. + if (sequence == 0xf09084ac) { + if (value) { + *value = 20000; + } + + return F_true; + } + + // Aegean Numbers: U+1012d. + if (sequence == 0xf09084ad) { + if (value) { + *value = 30000; + } + + return F_true; + } + + // Aegean Numbers: U+1012e. + if (sequence == 0xf09084ae) { + if (value) { + *value = 40000; + } + + return F_true; + } + + // Aegean Numbers: U+1012f. + if (sequence == 0xf09084af) { + if (value) { + *value = 50000; + } + + return F_true; + } + + // Aegean Numbers: U+10130. + if (sequence == 0xf09084b0) { + if (value) { + *value = 60000; + } + + return F_true; + } + + // Aegean Numbers: U+10131. + if (sequence == 0xf09084b1) { + if (value) { + *value = 70000; + } + + return F_true; + } + + // Aegean Numbers: U+10132. + if (sequence == 0xf09084b2) { + if (value) { + *value = 80000; + } + + return F_true; + } + + // Aegean Numbers: U+10133. + if (value) { + *value = 90000; + } + + return F_true; + } + + // @todo U+102E1 and so on.. + // Osmanya: U+104A0 to U+104A9. if (sequence >= 0xf09092a0 && sequence <= 0xf09092a9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09092a0, value); } // Hanifi Rohingya: U+10D30 to U+10D39. if (sequence >= 0xf090b4b0 && sequence <= 0xf090b4b9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf090b4b0, value); } } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x91) { // Brahmi: U+11066 to U+1106F. if (sequence >= 0xf09181a6 && sequence <= 0xf09181af) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09181a6, value); } // Sora Sompeng: U+110F0 to U+110F9. if (sequence >= 0xf09183b0 && sequence <= 0xf09183b9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09183b0, value); } // Chakma: U+11136 to U+1113F. if (sequence >= 0xf09184b6 && sequence <= 0xf09184bf) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09184b6, value); } // Sharada: U+111D0 to U+111D9. if (sequence >= 0xf0918790 && sequence <= 0xf0918799) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf0918790, value); } // Khudawadi: U+112F0 to U+112F9. if (sequence >= 0xf0918bb0 && sequence <= 0xf0918bb9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf0918bb0, value); } // Newa: U+11450 to U+11459. if (sequence >= 0xf0919190 && sequence <= 0xf0919199) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf0919190, value); } // Tirhuta: U+114D0 to U+114D9. if (sequence >= 0xf0919390 && sequence <= 0xf0919399) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf0919390, value); } // Modi: U+11650 to U+11659. if (sequence >= 0xf0919990 && sequence <= 0xf0919999) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf0919990, value); } // Takri: U+116C0 to U+116C9. if (sequence >= 0xf0919b80 && sequence <= 0xf0919b89) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf0919b80, value); } // Ahom: U+11730 to U+11739. if (sequence >= 0xf0919cb0 && sequence <= 0xf0919cb9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf0919cb0, value); } // Warang Citi: U+118E0 to U+118E9. if (sequence >= 0xf091a3a0 && sequence <= 0xf091a3a9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf091a3a0, value); } // Dives Akuru: U+11950 to U+11959. if (sequence >= 0xf091a590 && sequence <= 0xf091a599) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf091a590, value); } // Bhaiksuki: U+11C50 to U+11C59. if (sequence >= 0xf091b190 && sequence <= 0xf091b199) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf091b190, value); } // Masaram Gondi: U+11D50 to U+11D59. if (sequence >= 0xf091b590 && sequence <= 0xf091b599) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf091b590, value); } // Gunjala Gondi: U+11DA0 to U+11DA9. if (sequence >= 0xf091b6a0 && sequence <= 0xf091b6a9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf091b6a0, value); } } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) { // Mro: U+16A60 to U+16A69. if (sequence >= 0xf096a9a0 && sequence <= 0xf096a9a9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf096a9a0, value); } // Tangsa: U+16AC0 to U+16AC9. if (sequence >= 0xf096ab80 && sequence <= 0xf096ab89) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf096ab80, value); } // Pahawh Hmong: U+16B50 to U+16B59. if (sequence >= 0xf096ad90 && sequence <= 0xf096ad99) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf096ad90, value); } } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9d) { // Mathematical Alphanumeric (Bold) Symbols: U+1D7CE to U+1D7D7. if (sequence >= 0xf09d9f8e && sequence <= 0xf09d9f97) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09d9f8e, value); } // Mathematical Alphanumeric (Double-Struck) Symbols: U+1D7D8 to U+1D7E1. if (sequence >= 0xf09d9f98 && sequence <= 0xf09d9fa1) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09d9f98, value); } // Mathematical Alphanumeric (Sans-Serif) Symbols: U+1D7E2 to U+1D7EB. if (sequence >= 0xf09d9fa2 && sequence <= 0xf09d9fab) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09d9fa2, value); } // Mathematical Alphanumeric (Sans-Serif Bold) Symbols: U+1D7EC to U+1D7F5. if (sequence >= 0xf09d9fac && sequence <= 0xf09d9fb5) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09d9fac, value); } // Mathematical Alphanumeric (Monospace) Symbols: U+1D7F6 to U+1D7FF. if (sequence >= 0xf09d9fb6 && sequence <= 0xf09d9fbf) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09d9fb6, value); } } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9e) { // Nyiakeng Puachue Hmong: U+1E140 to U+1E149. if (sequence >= 0xf09e8580 && sequence <= 0xf09e8589) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09e8580, value); } // Wancho: U+1E2F0 to U+1E2F9. if (sequence >= 0xf09e8bb0 && sequence <= 0xf09e8bb9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09e8bb0, value); } // Adlam: U+1E950 to U+1E959. if (sequence >= 0xf09ea590 && sequence <= 0xf09ea599) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09ea590, value); } } else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9f) { // Symbols for Legacy Computing (Segmented): U+1FBF0 to U+1FBF9. if (sequence >= 0xf09fafb0 && sequence <= 0xf09fafb9) { - return F_true; + return private_inline_f_utf_character_handle_digit(sequence, 0xf09fafb0, value); } } } + if (value) { + *value = F_type_size_max_64_unsigned_d; + } + + return F_false; + } +#endif // !defined(_di_f_utf_character_is_alphabetic_digit_) || !defined(_di_f_utf_is_alphabetic_digit_) || !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) + +#if !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) + f_status_t private_f_utf_character_is_digit_for_ascii(const f_char_t character, uint64_t * const value) { + + if (isdigit(character)) { + if (value) { + if (character == f_string_ascii_0_s.string[0]) { + *value = 0; + } + else if (character == f_string_ascii_1_s.string[0]) { + *value = 1; + } + else if (character == f_string_ascii_2_s.string[0]) { + *value = 2; + } + else if (character == f_string_ascii_3_s.string[0]) { + *value = 3; + } + else if (character == f_string_ascii_4_s.string[0]) { + *value = 4; + } + else if (character == f_string_ascii_5_s.string[0]) { + *value = 5; + } + else if (character == f_string_ascii_6_s.string[0]) { + *value = 6; + } + else if (character == f_string_ascii_7_s.string[0]) { + *value = 7; + } + else if (character == f_string_ascii_8_s.string[0]) { + *value = 8; + } + else if (character == f_string_ascii_9_s.string[0]) { + *value = 9; + } + else if (character == f_string_ascii_a_s.string[0] || character == f_string_ascii_A_s.string[0]) { + *value = 10; + } + else if (character == f_string_ascii_b_s.string[0] || character == f_string_ascii_B_s.string[0]) { + *value = 11; + } + else if (character == f_string_ascii_c_s.string[0] || character == f_string_ascii_C_s.string[0]) { + *value = 12; + } + else if (character == f_string_ascii_d_s.string[0] || character == f_string_ascii_D_s.string[0]) { + *value = 13; + } + else if (character == f_string_ascii_e_s.string[0] || character == f_string_ascii_E_s.string[0]) { + *value = 14; + } + else if (character == f_string_ascii_f_s.string[0] || character == f_string_ascii_F_s.string[0]) { + *value = 15; + } + else { + *value = F_type_size_max_64_unsigned_d; + } + } + + return F_true; + } + + if (value) { + *value = F_type_size_max_64_unsigned_d; + } + return F_false; } -#endif // !defined(_di_f_utf_character_is_alphabetic_decimal_) || !defined(_di_f_utf_is_alphabetic_decimal_) || !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) +#endif // !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) #ifdef __cplusplus } // extern "C" diff --git a/level_0/f_utf/c/private-utf_digit.h b/level_0/f_utf/c/private-utf_digit.h index 8ceddc6..6f57c7f 100644 --- a/level_0/f_utf/c/private-utf_digit.h +++ b/level_0/f_utf/c/private-utf_digit.h @@ -26,10 +26,13 @@ extern "C" { * * @param sequence * The byte sequence to validate as a character. + * @param value + * (optional) The integer representation of the sequence if the sequence represents a decimal of any base type. + * Set to NULL to not use. * * @return - * F_true if a UTF-8 digit character. - * F_false if not a UTF-8 digit character. + * F_true if a UTF-8 decimal character. + * F_false if not a UTF-8 decimal character. * * 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. @@ -38,7 +41,31 @@ extern "C" { * @see f_utf_is_digit() */ #if !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) - extern f_status_t private_f_utf_character_is_digit(const f_utf_char_t sequence) F_attribute_visibility_internal_d; + extern f_status_t private_f_utf_character_is_digit(const f_utf_char_t sequence, uint64_t * const value) F_attribute_visibility_internal_d; +#endif // !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) + +/** + * Helper function for handling ascii-only tests. + * + * The width is always assumed to be 1. + * + * @param character + * The ASCII character to validate. + * @param value + * (optional) The integer representation of the sequence if the sequence represents a decimal of any base type. + * Set to NULL to not use. + * + * @return + * F_true if a UTF-8 decimal character. + * F_false if not a UTF-8 decimal character. + * + * @see isdigit() + * + * @see f_utf_character_is_digit() + * @see f_utf_is_digit() + */ +#if !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) + extern f_status_t private_f_utf_character_is_digit_for_ascii(const f_char_t character, uint64_t * const value) F_attribute_visibility_internal_d; #endif // !defined(_di_f_utf_character_is_digit_) || !defined(_di_f_utf_is_digit_) #ifdef __cplusplus diff --git a/level_0/f_utf/c/private-utf_numeric.c b/level_0/f_utf/c/private-utf_numeric.c index 36926be..60b6620 100644 --- a/level_0/f_utf/c/private-utf_numeric.c +++ b/level_0/f_utf/c/private-utf_numeric.c @@ -10,27 +10,665 @@ extern "C" { #if !defined(_di_f_utf_character_is_numeric_) || !defined(_di_f_utf_is_numeric_) f_status_t private_f_utf_character_is_numeric(const f_utf_char_t sequence) { - if (private_f_utf_character_is_digit(sequence)) { - return F_true; - } + if (macro_f_utf_char_t_width_is(sequence) == 2) { - // @todo add letter UTF-8 numbers. - // @todo add other UTF-8 numbers. - // @todo provide functions to identify each number. + // Latin-1 Supplement: U+00B2, U+00B3, U+00B9. + if (sequence == 0xc2b20000 || sequence == 0xc2b30000 || sequence == 0xc2b90000) { + return F_true; + } - if (macro_f_utf_char_t_width_is(sequence) == 3) { + // Latin-1 Supplement: U+00BC to U+00BE. + if (sequence >= 0xc2bc0000 && sequence <= 0xc2be0000) { + return F_true; + } - // Number Forms: U+2150 to U+218B. - if (sequence >= 0xe2859000 && sequence <= 0xe2868b00) { + // Arabic: U+0660 to U+0669. + if (sequence >= 0xd9a00000 && sequence <= 0xd9a90000) { + return F_true; + } + + // Extended Arabic: U+06F0 to U+06F9. + if (sequence >= 0xdbb00000 && sequence <= 0xdbb90000) { return F_true; } - } - else if (macro_f_utf_char_t_width_is(sequence) == 4) { - // Coptic Epact Numbers: U+102E1 to U+102FB. - if (sequence >= 0xf0908ba1 && sequence <= 0xf0908bbb) { + // NKo: U+07C0 to U+07C9. + if (sequence >= 0xdf800000 && sequence <= 0xdf890000) { return F_true; } + + return F_false; + } + + if (macro_f_utf_char_t_width_is(sequence) == 3) { + + if (macro_f_utf_char_t_to_char_1(sequence) == 0xe0) { + + // Devanagari: U+0966 to U+096F. + if (sequence >= 0xe0a5a600 && sequence <= 0xe0a5af00) { + return F_true; + } + + // Bengali: U+09E6 to U+09EF. + if (sequence >= 0xe0a7a600 && sequence <= 0xe0a7af00) { + return F_true; + } + + // Bengali: U+09F4 to U+09F9. + if (sequence >= 0xe0a7b400 && sequence <= 0xe0a7b900) { + return F_true; + } + + // Gurmukhi: U+0A66 to U+0A6F. + if (sequence >= 0xe0a9a600 && sequence <= 0xe0a9af00) { + return F_true; + } + + // Gujarati: U+0AE6 to U+0AEF. + if (sequence >= 0xe0aba600 && sequence <= 0xe0abaf00) { + return F_true; + } + + // Oriya: U+0B66 to U+0B6F. + if (sequence >= 0xe0ada600 && sequence <= 0xe0adaf00) { + return F_true; + } + + // Oriya: U+0B72 to U+0B77. + if (sequence >= 0xe0adb200 && sequence <= 0xe0adb700) { + return F_true; + } + + // Tamil: U+0BE6 to U+0BF2. + if (sequence >= 0xe0afa600 && sequence <= 0xe0afb200) { + return F_true; + } + + // Telugu: U+0C66 to U+0C6F. + if (sequence >= 0xe0b1a600 && sequence <= 0xe0b1af00) { + return F_true; + } + + // Telugu: U+0C78 to U+0C7E. + if (sequence >= 0xe0b1b800 && sequence <= 0xe0b1be00) { + return F_true; + } + + // Kannada: U+0CE6 to U+0CEF. + if (sequence >= 0xe0b3a600 && sequence <= 0xe0b3af00) { + return F_true; + } + + // Malayalam: U+0D58 to U+0D5E. + if (sequence >= 0xe0b59800 && sequence <= 0xe0b59e00) { + return F_true; + } + + // Malayalam: U+0D66 to U+0D78. + if (sequence >= 0xe0b5a600 && sequence <= 0xe0b5b800) { + return F_true; + } + + // Sinhala: U+0DE6 to U+0DEF. + if (sequence >= 0xe0b7a600 && sequence <= 0xe0b7af00) { + return F_true; + } + + // Thai: U+0E50 to U+0E59. + if (sequence >= 0xe0b99000 && sequence <= 0xe0b99900) { + return F_true; + } + + // Lao: U+0ED0 to U+0ED9. + if (sequence >= 0xe0bb9000 && sequence <= 0xe0bb9900) { + return F_true; + } + + // Tibetan: U+0F20 to U+0F33. + if (sequence >= 0xe0bca000 && sequence <= 0xe0bcb300) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe1) { + + // Myanmar: U+1040 to U+1049. + if (sequence >= 0xe1818000 && sequence <= 0xe1818900) { + return F_true; + } + + // Myanmar (Shan): U+1090 to U+1099. + if (sequence >= 0xe1829000 && sequence <= 0xe1829900) { + return F_true; + } + + // Ethiopic: U+1369 to U+137C. + if (sequence >= 0xe18da900 && sequence <= 0xe18dbc00) { + return F_true; + } + + // Runic: U+16EE to U+16F0. + if (sequence >= 0xe19bae00 && sequence <= 0xe19bb000) { + return F_true; + } + + // Khmer: U+17E0 to U+17E9. + if (sequence >= 0xe19fa000 && sequence <= 0xe19fa900) { + return F_true; + } + + // Khmer: U+17F0 to U+17F9. + if (sequence >= 0xe19fb000 && sequence <= 0xe19fb900) { + return F_true; + } + + // Mongolian: U+1810 to U+1819. + if (sequence >= 0xe1a09000 && sequence <= 0xe1a09900) { + return F_true; + } + + // Limbu: U+1946 to U+194F. + if (sequence >= 0xe1a58600 && sequence <= 0xe1a58f00) { + return F_true; + } + + // New Tai Lue: U+19D0 to U+19DA. + if (sequence >= 0xe1a79000 && sequence <= 0xe1a79a00) { + return F_true; + } + + // Tai Tham (Hora): U+1A80 to U+1A89. + if (sequence >= 0xe1aa8000 && sequence <= 0xe1aa8900) { + return F_true; + } + + // Tai Tham (Tham): U+1A90 to U+1A99. + if (sequence >= 0xe1aa9000 && sequence <= 0xe1aa9900) { + return F_true; + } + + // Balinese: U+1B50 to U+1B59. + if (sequence >= 0xe1ad9000 && sequence <= 0xe1ad9900) { + return F_true; + } + + // Sundanese: U+1BB0 to U+1BB9. + if (sequence >= 0xe1aeb000 && sequence <= 0xe1aeb900) { + return F_true; + } + + // Lepcha: U+1C40 to U+1C49. + if (sequence >= 0xe1b18000 && sequence <= 0xe1b18900) { + return F_true; + } + + // Ol Chiki: U+1C50 to U+1C59. + if (sequence >= 0xe1b19000 && sequence <= 0xe1b19900) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe2) { + + // Superscripts and Subscripts: U+2070. + if (sequence == 0xe281b000) { + return F_true; + } + + // Superscripts and Subscripts: U+2074 to U+2089. + if (sequence >= 0xe281b400 && sequence <= 0xe2828900) { + return F_true; + } + + // Number Forms: U+2150 to U+2189. + if (sequence >= 0xe2859000 && sequence <= 0xe2868900) { + return F_true; + } + + // Enclosed Alphanumerics: U+2460 to U+249B. + if (sequence >= 0xe291a000 && sequence <= 0xe2929b00) { + return F_true; + } + + // Enclosed Alphanumerics: U+24EB to U+24FF. + if (sequence >= 0xe293ab00 && sequence <= 0xe293bf00) { + return F_true; + } + + // Dingbats: U+2776 to U+2793. + if (sequence >= 0xe29db600 && sequence <= 0xe29e9300) { + return F_true; + } + + // Coptic: U+2CFD. + if (sequence == 0xe2b3bd00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xe3) { + + // CJK Symbols and Punctuation: U+3007. + if (sequence == 0xe3808700) { + return F_true; + } + + // CJK Symbols and Punctuation: U+3021 to U+3029. + if (sequence >= 0xe380a100 && sequence <= 0xe380a900) { + return F_true; + } + + // CJK Symbols and Punctuation: U+3038 to U+303A. + if (sequence >= 0xe380b800 && sequence <= 0xe380ba00) { + return F_true; + } + + // Kanbun: U+3192 to U+3195. + if (sequence >= 0xea98a000 && sequence <= 0xea98a900) { + return F_true; + } + + // Enclosed CJK Letters and Months: U+3220 to U+3229. + if (sequence >= 0xe388a000 && sequence <= 0xe388a900) { + return F_true; + } + + // Enclosed CJK Letters and Months: U+3248 to U+324F. + if (sequence >= 0xe3898800 && sequence <= 0xe3898f00) { + return F_true; + } + + // Enclosed CJK Letters and Months: U+3251 to U+3289. + if (sequence >= 0xe3899100 && sequence <= 0xe38a8900) { + return F_true; + } + + // Enclosed CJK Letters and Months: U+32B1 to U+32BF. + if (sequence >= 0xe38ab100 && sequence <= 0xe38abf00) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xea) { + + // Vai: U+A620 to U+A629. + if (sequence >= 0xea98a000 && sequence <= 0xea98a900) { + return F_true; + } + + // Common Indic Number Forms: U+A830 to U+A835. + if (sequence >= 0xeaa0b000 && sequence <= 0xeaa0b500) { + return F_true; + } + + // Saurashtra: U+A8D0 to U+A8D9. + if (sequence >= 0xeaa39000 && sequence <= 0xeaa39900) { + return F_true; + } + + // Kayah Li: U+A900 to U+A909. + if (sequence >= 0xeaa48000 && sequence <= 0xeaa48900) { + return F_true; + } + + // Javanese: U+A9D0 to U+A9D9. + if (sequence >= 0xeaa79000 && sequence <= 0xeaa79900) { + return F_true; + } + + // Myanmar Extended-B: U+A9F0 to U+A9F9. + if (sequence >= 0xeaa7b000 && sequence <= 0xeaa7b900) { + return F_true; + } + + // Cham: U+AA50 to U+AA59. + if (sequence >= 0xeaa99000 && sequence <= 0xeaa99900) { + return F_true; + } + + // Meetei Mayek: U+ABF0 to U+ABF9. + if (sequence >= 0xeaafb000 && sequence <= 0xeaafb900) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_1(sequence) == 0xef) { + + // Halfwidth and Fullwidth Forms: U+FF10 to U+FF19. + if (sequence >= 0xefbc9000 && sequence <= 0xefbc9900) { + return F_true; + } + } + + 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) { + + // Aegean Numbers: U+10107 to U+10133. + if (sequence >= 0xf0908487 && sequence <= 0xf09084b3) { + return F_true; + } + + // Ancient Greek Numbers: U+10140 to U+10178. + if (sequence >= 0xf0908580 && sequence <= 0xf09085b8) { + return F_true; + } + + // Ancient Greek Numbers: U+1018A to U+1018B. + if (sequence >= 0xf090868a && sequence <= 0xf090868b) { + return F_true; + } + + // Coptic Epact Numbers: U+102E1 to U+102FB. + if (sequence >= 0xf0908ba1 && sequence <= 0xf0908bbb) { + return F_true; + } + + // Old Italic: U+10320 to U+10323. + if (sequence >= 0xf0908ca0 && sequence <= 0xf0908ca3) { + return F_true; + } + + // Gothic: U+10341 to U+1034A. + if (sequence >= 0xf0908d81 && sequence <= 0xf0908d8a) { + return F_true; + } + + // Old Persian: U+103D1 to U+103D5. + if (sequence >= 0xf0908f91 && sequence <= 0xf0908f95) { + return F_true; + } + + // Osmanya: U+104A0 to U+104A9. + if (sequence >= 0xf09092a0 && sequence <= 0xf09092a9) { + return F_true; + } + + // Imperial Aramaic: U+10858 to U+1085F. + if (sequence >= 0xf090a198 && sequence <= 0xf090a19f) { + return F_true; + } + + // Palmyrene: U+10879 to U+1087F. + if (sequence >= 0xf090a198 && sequence <= 0xf090a1bf) { + return F_true; + } + + // Nabataean: U+108A7 to U+108AF. + if (sequence >= 0xf090a2a7 && sequence <= 0xf090a2af) { + return F_true; + } + + // Hatran: U+108FB to U+108FF. + if (sequence >= 0xf090a3bb && sequence <= 0xf090a3bf) { + return F_true; + } + + // Phoenician to Meroitic Cursive: U+10916 to U+109BD. + if (sequence >= 0xf090a496 && sequence <= 0xf090a6bd) { + return F_true; + } + + // Meroitic Cursive: U+109C0 to U+109CF. + if (sequence >= 0xf090a780 && sequence <= 0xf090a78f) { + return F_true; + } + + // Meroitic Cursive: U+109D2 to U+109FF. + if (sequence >= 0xf090a792 && sequence <= 0xf090a7bf) { + return F_true; + } + + // Kharoshthi: U+10A40 to U+10A48. + if (sequence >= 0xf090a980 && sequence <= 0xf090a988) { + return F_true; + } + + // Old South Arabian: U+10A7D to U+10A7E. + if (sequence >= 0xf090a9bd && sequence <= 0xf090a9be) { + return F_true; + } + + // Old North Arabian: U+10A9D to U+10A9F. + if (sequence >= 0xf090aa9d && sequence <= 0xf090aa9f) { + return F_true; + } + + // Manichaean: U+10AEB to U+10AEF. + if (sequence >= 0xf090abab && sequence <= 0xf090abaf) { + return F_true; + } + + // Hanifi Rohingya: U+10D30 to U+10D39. + if (sequence >= 0xf090b4b0 && sequence <= 0xf090b4b9) { + return F_true; + } + + // Rumi Numeral Symbols: U+10E60 to U+10E7E. + if (sequence >= 0xf090b9a0 && sequence <= 0xf090b9be) { + return F_true; + } + + // Old Sogdian: U+10F1D to U+10F26. + if (sequence >= 0xf090bc9d && sequence <= 0xf090bca6) { + return F_true; + } + + // Sogdian: U+10F51 to U+10F54. + if (sequence >= 0xf090bd91 && sequence <= 0xf090bd94) { + return F_true; + } + + // Chorasmian: U+10FC5 to U+10FCB. + if (sequence >= 0xf090bf85 && sequence <= 0xf090bf8b) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x91) { + + // Brahmi: U+11052 to U+1106F. + if (sequence >= 0xf0918192 && sequence <= 0xf09181af) { + return F_true; + } + + // Sora Sompeng: U+110F0 to U+110F9. + if (sequence >= 0xf09183b0 && sequence <= 0xf09183b9) { + return F_true; + } + + // Chakma: U+11136 to U+1113F. + if (sequence >= 0xf09184b6 && sequence <= 0xf09184bf) { + return F_true; + } + + // Sharada: U+111D0 to U+111D9. + if (sequence >= 0xf0918790 && sequence <= 0xf0918799) { + return F_true; + } + + // Sinhala Archaic Numbers: U+111E1 to U+111F4. + if (sequence >= 0xf09187a1 && sequence <= 0xf09187b4) { + return F_true; + } + + // Khudawadi: U+112F0 to U+112F9. + if (sequence >= 0xf0918bb0 && sequence <= 0xf0918bb9) { + return F_true; + } + + // Newa: U+11450 to U+11459. + if (sequence >= 0xf0919190 && sequence <= 0xf0919199) { + return F_true; + } + + // Tirhuta: U+114D0 to U+114D9. + if (sequence >= 0xf0919390 && sequence <= 0xf0919399) { + return F_true; + } + + // Modi: U+11650 to U+11659. + if (sequence >= 0xf0919990 && sequence <= 0xf0919999) { + return F_true; + } + + // Takri: U+116C0 to U+116C9. + if (sequence >= 0xf0919b80 && sequence <= 0xf0919b89) { + return F_true; + } + + // Ahom: U+11730 to U+1173B. + if (sequence >= 0xf0919cb0 && sequence <= 0xf0919cbb) { + return F_true; + } + + // Warang Citi: U+118E0 to U+118F2. + if (sequence >= 0xf091a3a0 && sequence <= 0xf091a3b2) { + return F_true; + } + + // Dives Akuru: U+11950 to U+11959. + if (sequence >= 0xf091a590 && sequence <= 0xf091a599) { + return F_true; + } + + // Bhaiksuki: U+11C50 to U+11C6C. + if (sequence >= 0xf091b190 && sequence <= 0xf091b1ac) { + return F_true; + } + + // Masaram Gondi: U+11D50 to U+11D59. + if (sequence >= 0xf091b590 && sequence <= 0xf091b599) { + return F_true; + } + + // Gunjala Gondi: U+11DA0 to U+11DA9. + if (sequence >= 0xf091b6a0 && sequence <= 0xf091b6a9) { + return F_true; + } + + // Tamil Supplement: U+11FC0 to U+11FD4. + if (sequence >= 0xf091bf80 && sequence <= 0xf091bf94) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x92) { + + // Cuneiform Numbers and Punctuation: U+12400 to U+1246E. + if (sequence >= 0xf0929080 && sequence <= 0xf09291ae) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x96) { + + // Mro: U+16A60 to U+16A69. + if (sequence >= 0xf096a9a0 && sequence <= 0xf096a9a9) { + return F_true; + } + + // Tangsa: U+16AC0 to U+16AC9. + if (sequence >= 0xf096ab80 && sequence <= 0xf096ab89) { + return F_true; + } + + // Pahawh Hmong: U+16B50 to U+16B59. + if (sequence >= 0xf096ad90 && sequence <= 0xf096ad99) { + return F_true; + } + + // Pahawh Hmong: U+16B5B to U+16B61. + if (sequence >= 0xf096ad9b && sequence <= 0xf096ada1) { + 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) == 0x9d) { + + // Mayan Numerals: U+1D2E0 to U+1D2F3. + if (sequence >= 0xf09d8ba0 && sequence <= 0xf09d8bb3) { + return F_true; + } + + // Counting Rod Numerals: U+1D360 to U+1D378. + if (sequence >= 0xf09d8da0 && sequence <= 0xf09d8db8) { + return F_true; + } + + // Mathematical Alphanumeric (Bold) Symbols: U+1D7CE to U+1D7D7. + if (sequence >= 0xf09d9f8e && sequence <= 0xf09d9f97) { + return F_true; + } + + // Mathematical Alphanumeric (Double-Struck) Symbols: U+1D7D8 to U+1D7E1. + if (sequence >= 0xf09d9f98 && sequence <= 0xf09d9fa1) { + return F_true; + } + + // Mathematical Alphanumeric (Sans-Serif) Symbols: U+1D7E2 to U+1D7EB. + if (sequence >= 0xf09d9fa2 && sequence <= 0xf09d9fab) { + return F_true; + } + + // Mathematical Alphanumeric (Sans-Serif Bold) Symbols: U+1D7EC to U+1D7F5. + if (sequence >= 0xf09d9fac && sequence <= 0xf09d9fb5) { + return F_true; + } + + // Mathematical Alphanumeric (Monospace) Symbols: U+1D7F6 to U+1D7FF. + if (sequence >= 0xf09d9fb6 && sequence <= 0xf09d9fbf) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9e) { + + // Nyiakeng Puachue Hmong: U+1E140 to U+1E149. + if (sequence >= 0xf09e8580 && sequence <= 0xf09e8589) { + return F_true; + } + + // Wancho: U+1E2F0 to U+1E2F9. + if (sequence >= 0xf09e8bb0 && sequence <= 0xf09e8bb9) { + return F_true; + } + + // Mende Kikakui: U+1E8C7 to U+1E8CF. + if (sequence >= 0xf09ea387 && sequence <= 0xf09ea38f) { + return F_true; + } + + // Adlam: U+1E950 to U+1E959. + if (sequence >= 0xf09ea590 && sequence <= 0xf09ea599) { + return F_true; + } + + // Indic Siyaq Numbers: U+1EC71 to U+1ECAF. + if (sequence >= 0xf09eb1b1 && sequence <= 0xf09eb2af) { + return F_true; + } + + // Indic Siyaq Numbers: U+1ECB1 to U+1ECB4. + if (sequence >= 0xf09eb2b1 && sequence <= 0xf09eb2b4) { + return F_true; + } + + // Ottoman Siyaq Numbers: U+1ED01 to U+1ED3D. + if (sequence >= 0xf09eb481 && sequence <= 0xf09eb4bd) { + return F_true; + } + } + else if (macro_f_utf_char_t_to_char_2(sequence) == 0x9f) { + + // Enclosed Alphanumeric Supplement: U+1F100 to U+1F10C. + if (sequence >= 0xf09f8480 && sequence <= 0xf09f848c) { + return F_true; + } + + // Symbols for Legacy Computing (Segmented): U+1FBF0 to U+1FBF9. + if (sequence >= 0xf09fafb0 && sequence <= 0xf09fafb9) { + return F_true; + } + } } return F_false; diff --git a/level_0/f_utf/c/private-utf_word.c b/level_0/f_utf/c/private-utf_word.c index 0c77bd0..58cdb62 100644 --- a/level_0/f_utf/c/private-utf_word.c +++ b/level_0/f_utf/c/private-utf_word.c @@ -10,7 +10,7 @@ extern "C" { #if !defined(_di_f_utf_character_is_word_) || !defined(_di_f_utf_is_word_) f_status_t private_f_utf_character_is_word(const f_utf_char_t sequence, const bool strict) { - if (private_f_utf_character_is_alphabetic_decimal(sequence, 0)) { + if (private_f_utf_character_is_alphabetic_digit(sequence, 0)) { return F_true; } diff --git a/level_0/f_utf/c/utf/is.c b/level_0/f_utf/c/utf/is.c index 8239e44..d5d238a 100644 --- a/level_0/f_utf/c/utf/is.c +++ b/level_0/f_utf/c/utf/is.c @@ -3,7 +3,6 @@ #include "../private-utf_alphabetic.h" #include "../private-utf_combining.h" #include "../private-utf_control.h" -#include "../private-utf_decimal.h" #include "../private-utf_digit.h" #include "../private-utf_emoji.h" #include "../private-utf_numeric.h" @@ -62,43 +61,8 @@ extern "C" { } #endif // _di_f_utf_is_alphabetic_ -#ifndef _di_f_utf_is_alphabetic_decimal_ - f_status_t f_utf_is_alphabetic_decimal(const f_string_t sequence, const f_array_length_t width_max, uint32_t * const value) { - #ifndef _di_level_0_parameter_checking_ - if (width_max < 1) return F_status_set_error(F_parameter); - #endif // _di_level_0_parameter_checking_ - - if (macro_f_utf_byte_width_is(*sequence)) { - if (macro_f_utf_byte_width_is(*sequence) > width_max) { - return F_status_set_error(F_complete_not_utf); - } - - if (macro_f_utf_byte_width_is(*sequence) == 1) { - return F_status_set_error(F_utf_fragment); - } - - f_utf_char_t utf = 0; - - { - const f_status_t status = private_f_utf_char_to_character(sequence, width_max, &utf); - if (F_status_is_error(status)) return status; - } - - return private_f_utf_character_is_alphabetic_decimal(utf, value); - } - - if (isalpha(*sequence)) return F_true; - - if (private_f_utf_character_is_decimal_for_ascii(*sequence, F_true, value) == F_true) { - return F_true; - } - - return F_false; - } -#endif // _di_f_utf_is_alphabetic_decimal_ - #ifndef _di_f_utf_is_alphabetic_digit_ - f_status_t f_utf_is_alphabetic_digit(const f_string_t sequence, const f_array_length_t width_max) { + f_status_t f_utf_is_alphabetic_digit(const f_string_t sequence, const f_array_length_t width_max, uint64_t * const value) { #ifndef _di_level_0_parameter_checking_ if (width_max < 1) return F_status_set_error(F_parameter); #endif // _di_level_0_parameter_checking_ @@ -119,12 +83,12 @@ extern "C" { if (F_status_is_error(status)) return status; } - return private_f_utf_character_is_alphabetic_digit(utf); + return private_f_utf_character_is_alphabetic_digit(utf, value); } - if (isalnum(*sequence)) return F_true; + if (isalpha(*sequence)) return F_true; - return F_false; + return private_f_utf_character_is_digit_for_ascii(*sequence, value); } #endif // _di_f_utf_is_alphabetic_digit_ @@ -337,37 +301,8 @@ extern "C" { } #endif // _di_f_utf_is_control_picture_ -#ifndef _di_f_utf_is_decimal_ - f_status_t f_utf_is_decimal(const f_string_t sequence, const f_array_length_t width_max, uint32_t * const value) { - #ifndef _di_level_0_parameter_checking_ - if (width_max < 1) return F_status_set_error(F_parameter); - #endif // _di_level_0_parameter_checking_ - - if (macro_f_utf_byte_width_is(*sequence)) { - if (macro_f_utf_byte_width_is(*sequence) > width_max) { - return F_status_set_error(F_complete_not_utf); - } - - if (macro_f_utf_byte_width_is(*sequence) == 1) { - return F_status_set_error(F_utf_fragment); - } - - f_utf_char_t utf = 0; - - { - const f_status_t status = private_f_utf_char_to_character(sequence, width_max, &utf); - if (F_status_is_error(status)) return status; - } - - return private_f_utf_character_is_decimal(utf, F_true, value); - } - - return private_f_utf_character_is_decimal_for_ascii(*sequence, F_false, value); - } -#endif // _di_f_utf_is_decimal_ - #ifndef _di_f_utf_is_digit_ - f_status_t f_utf_is_digit(const f_string_t sequence, const f_array_length_t width_max) { + f_status_t f_utf_is_digit(const f_string_t sequence, const f_array_length_t width_max, uint64_t * const value) { #ifndef _di_level_0_parameter_checking_ if (width_max < 1) return F_status_set_error(F_parameter); #endif // _di_level_0_parameter_checking_ @@ -388,12 +323,10 @@ extern "C" { if (F_status_is_error(status)) return status; } - return private_f_utf_character_is_digit(utf); + return private_f_utf_character_is_digit(utf, value); } - if (isdigit(*sequence)) return F_true; - - return F_false; + return private_f_utf_character_is_digit_for_ascii(*sequence, value); } #endif // _di_f_utf_is_digit_ diff --git a/level_0/f_utf/c/utf/is.h b/level_0/f_utf/c/utf/is.h index 3c85099..0f6394c 100644 --- a/level_0/f_utf/c/utf/is.h +++ b/level_0/f_utf/c/utf/is.h @@ -60,24 +60,14 @@ extern "C" { /** * Check to see if the entire byte block of the character is an ASCII or UTF-8 alphabet or digit character. * - * Decimal characters are decimal digits. - * - * This does not include number-like, such as 1/2 (½) or superscript 2 (²). - * - * Decimal refers to a unit of base-10. - * To simplify the necessary code, this function automatically handles different base units if the number can be converted into a integer whose value is less than 2^16. - * If base-10 is desired, then simply ignore values greater than 9. - * For example, a base-16 character 'a' would result in the integer 10. - * Just ignore the value. - * This also processes large values such as roman numerals. - * Roman Numerals, however conflict with the natural hexidecimal numbers. - * To avoid this only Unicode Roman Numerals found in range U+2160 to U+2188 are treated as their respective numerals. - * For example, the Roman Numeral 'Ⅿ' (U+216F) represents 1000 rather than having 'M' (U+004D) representing 1000. + * Digit characters are digit of any base, such as decimal (base-10) or hexidecimal (base-16). + * + * This does not include fractions such as 1/2 (½) (U+00BD). * - * This function always returns F_true for valid decimal digits to avoid confusion between alphabetic and digits in regards to the base unit. - * The 'F' is a character and a base-16 digit. - * If this were to return F_false because it is greater than the requested base-12 then there would be confusion on whether or not 'F' is alphabetic. - * If the determined digit is greater than the requested base, the 0xffff is assigned to value. + * This also processes large values such as Roman Numerals. + * Roman Numerals, however, conflict with traditional alphabetic characters. + * To avoid this only Unicode Roman Numerals found in range U+2160 to U+2188 are treated as their respective digits. + * For example, the Roman Numeral 'Ⅿ' (U+216F) represents 1000 rather than having 'M' (U+004D) representing 1000. * * @param sequence * The byte sequence to validate as a character. @@ -86,12 +76,7 @@ extern "C" { * The maximum width available for checking. * Can be anything greater than 0. * @param value - * (optional) The integer representation of the character if the character is a decimal. - * If specified, value is set to 0xffff to represent no known representation. - * If specified and is initially a value of 0, then this represents the operating normall has decimal (base-10). - * If specified and is initially a value from 1 to 16, then this represents operating as that base unit. - * For example, if value is 16, then this function will operate "is hexidecimal" rather than "is decimal". - * If specified and is initially a value of 0xffff, then this will grab all known integer digits. + * (optional) The integer representation of the sequence if the sequence represents a decimal of any base type. * Set to NULL to not use. * * @return @@ -105,37 +90,14 @@ extern "C" { * @see isalpha() * @see isdigit() */ -#ifndef _di_f_utf_is_alphabetic_decimal_ - extern f_status_t f_utf_is_alphabetic_decimal(const f_string_t sequence, const f_array_length_t width_max, uint32_t * const value); -#endif // _di_f_utf_is_alphabetic_decimal_ - -/** - * Check to see if the entire byte block of the character is an ASCII or UTF-8 alphabetic or digit character. - * - * Digit characters are decimal digits. - * - * This does not include number-like, such as 1/2 (½) or superscript 2 (²). - * - * @param sequence - * The byte sequence to validate as a character. - * - * @return - * F_true if a UTF-8 alphabetic-digit character. - * F_false if not a UTF-8 alphabetic-digit character. - * - * 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 isalnum() - */ #ifndef _di_f_utf_is_alphabetic_digit_ - extern f_status_t f_utf_is_alphabetic_digit(const f_string_t sequence, const f_array_length_t width_max); + extern f_status_t f_utf_is_alphabetic_digit(const f_string_t sequence, const f_array_length_t width_max, uint64_t * const value); #endif // _di_f_utf_is_alphabetic_digit_ /** * Check to see if the entire byte block of the character is an ASCII or UTF-8 alphabetic or numeric character. * - * Numeric characters are decimal digits, letter numbers, and number-like, such as 1/2 (½) or superscript 2 (²). + * Numeric characters are decimal digits, letter numbers, and number-like, such as 1/2 (½) (U+00BD) or superscript 2 (²) (U+00B2). * * @param sequence * The byte sequence to validate as a character. @@ -304,70 +266,26 @@ extern "C" { /** * Check to see if the entire byte block of the character is an ASCII or UTF-8 decimal character. * - * Decimal characters are decimal digits. + * Digit characters are digit of any base, such as decimal (base-10) or hexidecimal (base-16). * - * This does not include number-like, such as 1/2 (½) or superscript 2 (²). + * This does not include fractions such as 1/2 (½) (U+00BD). * - * Decimal refers to a unit of base-10. - * To simplify the necessary code, this function automatically handles different base units if the number can be converted into a integer whose value is less than 2^16. - * If base-10 is desired, then simply ignore values greater than 9. - * For example, a base-16 character 'a' would result in the integer 10. - * Just ignore the value. - * This also processes large values such as roman numerals. - * Roman Numerals, however conflict with the natural hexidecimal numbers. - * To avoid this only Unicode Roman Numerals found in range U+2160 to U+2188 are treated as their respective numerals. + * This also processes large values such as Roman Numerals. + * Roman Numerals, however, conflict with traditional alphabetic characters. + * To avoid this only Unicode Roman Numerals found in range U+2160 to U+2188 are treated as their respective digits. * For example, the Roman Numeral 'Ⅿ' (U+216F) represents 1000 rather than having 'M' (U+004D) representing 1000. * - * This function only returns F_true for valid decimal digits within the requested base. - * * @param sequence * The byte sequence to validate as a character. * There must be enough space allocated to compare against, as limited by width_max. * @param width_max * The maximum width available for checking. * Can be anything greater than 0. - * @param base - * (optional) The base digit to specify (up to base 16). - * Set to 0 to not use. - * This is ignored when value is NULL. * @param value - * (optional) The integer representation of the character if the character is a decimal. - * If specified, value is set to 0xffff to represent no known representation. - * If specified and is initially a value of 0, then this represents the operating normall has decimal (base-10). - * If specified and is initially a value from 1 to 16, then this represents operating as that base unit. - * For example, if value is 16, then this function will operate "is hexidecimal" rather than "is decimal". - * If specified and is initially a value of 0xffff, then this will grab all known integer digits. + * (optional) The integer representation of the sequence if the sequence represents a decimal of any base type. * Set to NULL to not use. * * @return - * F_true if a UTF-8 decimal character. - * F_false if not a UTF-8 decimal character. - * - * F_complete_not_utf (with error bit set) if character is an incomplete UTF-8 sequence. - * 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 isdigit() - */ -#ifndef _di_f_utf_is_decimal_ - extern f_status_t f_utf_is_decimal(const f_string_t sequence, const f_array_length_t width_max, uint32_t * const value); -#endif // _di_f_utf_is_decimal_ - -/** - * Check to see if the entire byte block of the character is an ASCII or UTF-8 digit character. - * - * Digit characters are decimal digits. - * - * This does not include number-like, such as 1/2 (½) or superscript 2 (²). - * - * @param sequence - * The byte sequence to validate as a character. - * There must be enough space allocated to compare against, as limited by width_max. - * @param width_max - * The maximum width available for checking. - * Can be anything greater than 0. - * - * @return * F_true if a UTF-8 digit character. * F_false if not a UTF-8 digit character. * @@ -378,7 +296,7 @@ extern "C" { * @see isdigit() */ #ifndef _di_f_utf_is_digit_ - extern f_status_t f_utf_is_digit(const f_string_t sequence, const f_array_length_t width_max); + extern f_status_t f_utf_is_digit(const f_string_t sequence, const f_array_length_t width_max, uint64_t * const value); #endif // _di_f_utf_is_digit_ /** diff --git a/level_0/f_utf/c/utf/is_character.c b/level_0/f_utf/c/utf/is_character.c index 381260b..ae1dfc7 100644 --- a/level_0/f_utf/c/utf/is_character.c +++ b/level_0/f_utf/c/utf/is_character.c @@ -3,7 +3,6 @@ #include "../private-utf_alphabetic.h" #include "../private-utf_combining.h" #include "../private-utf_control.h" -#include "../private-utf_decimal.h" #include "../private-utf_digit.h" #include "../private-utf_emoji.h" #include "../private-utf_numeric.h" @@ -58,65 +57,23 @@ extern "C" { } #endif // _di_f_utf_character_is_alphabetic_ -#ifndef _di_f_utf_character_is_alphabetic_decimal_ - f_status_t f_utf_character_is_alphabetic_decimal(const f_utf_char_t sequence, uint32_t * const value) { - - if (macro_f_utf_char_t_width_is(sequence)) { - if (macro_f_utf_char_t_width_is(sequence) == 1) { - return F_status_set_error(F_utf_fragment); - } - - return private_f_utf_character_is_alphabetic_decimal(sequence, value); - } - - if (isalpha(macro_f_utf_char_t_to_char_1(sequence))) return F_true; - - if (private_f_utf_character_is_decimal_for_ascii(macro_f_utf_char_t_to_char_1(sequence), F_true, value) == F_true) { - return F_true; - } - - return F_false; - } -#endif // _di_f_utf_character_is_alphabetic_decimal_ - #ifndef _di_f_utf_character_is_alphabetic_digit_ - f_status_t f_utf_character_is_alphabetic_digit(const f_utf_char_t sequence) { + f_status_t f_utf_character_is_alphabetic_digit(const f_utf_char_t sequence, uint64_t * const value) { if (macro_f_utf_char_t_width_is(sequence)) { if (macro_f_utf_char_t_width_is(sequence) == 1) { return F_status_set_error(F_utf_fragment); } - return private_f_utf_character_is_alphabetic_digit(sequence); + return private_f_utf_character_is_alphabetic_digit(sequence, value); } - if (isalnum(macro_f_utf_char_t_to_char_1(sequence))) { - return F_true; - } + if (isalpha(macro_f_utf_char_t_to_char_1(sequence))) return F_true; - return F_false; + return private_f_utf_character_is_digit_for_ascii(macro_f_utf_char_t_to_char_1(sequence), value); } #endif // _di_f_utf_character_is_alphabetic_digit_ -#ifndef _di_f_utf_character_is_alphabetic_numeric_ - f_status_t f_utf_character_is_alphabetic_numeric(const f_utf_char_t sequence) { - - if (macro_f_utf_char_t_width_is(sequence)) { - if (macro_f_utf_char_t_width_is(sequence) == 1) { - return F_status_set_error(F_utf_fragment); - } - - return private_f_utf_character_is_alphabetic_numeric(sequence); - } - - if (isalnum(macro_f_utf_char_t_to_char_1(sequence))) { - return F_true; - } - - return F_false; - } -#endif // _di_f_utf_character_is_alphabetic_numeric_ - #ifndef _di_f_utf_character_is_ascii_ f_status_t f_utf_character_is_ascii(const f_utf_char_t sequence) { @@ -214,37 +171,18 @@ extern "C" { } #endif // _di_f_utf_character_is_control_picture_ -#ifndef _di_f_utf_character_is_decimal_ - f_status_t f_utf_character_is_decimal(const f_utf_char_t sequence, uint32_t * const value) { - - if (macro_f_utf_char_t_width_is(sequence)) { - if (macro_f_utf_char_t_width_is(sequence) == 1) { - return F_status_set_error(F_utf_fragment); - } - - return private_f_utf_character_is_decimal(sequence, F_false, value); - } - - return private_f_utf_character_is_decimal_for_ascii(macro_f_utf_char_t_to_char_1(sequence), F_false, value); - } -#endif // _di_f_utf_character_is_decimal_ - #ifndef _di_f_utf_character_is_digit_ - f_status_t f_utf_character_is_digit(const f_utf_char_t sequence) { + f_status_t f_utf_character_is_digit(const f_utf_char_t sequence, uint64_t * const value) { if (macro_f_utf_char_t_width_is(sequence)) { if (macro_f_utf_char_t_width_is(sequence) == 1) { return F_status_set_error(F_utf_fragment); } - return private_f_utf_character_is_digit(sequence); - } - - if (isdigit(macro_f_utf_char_t_to_char_1(sequence))) { - return F_true; + return private_f_utf_character_is_digit(sequence, value); } - return F_false; + return private_f_utf_character_is_digit_for_ascii(macro_f_utf_char_t_to_char_1(sequence), value); } #endif // _di_f_utf_character_is_digit_ diff --git a/level_0/f_utf/c/utf/is_character.h b/level_0/f_utf/c/utf/is_character.h index 9c85072..c631c83 100644 --- a/level_0/f_utf/c/utf/is_character.h +++ b/level_0/f_utf/c/utf/is_character.h @@ -55,36 +55,21 @@ extern "C" { #endif // _di_f_utf_character_is_alphabetic_ /** - * Check to see if the entire byte block of the character is an ASCII or UTF-8 alphabetic or digit character. + * Check to see if the entire byte block of the character is an ASCII or UTF-8 alphabet or digit character. * - * Decimal characters are decimal digits. + * Digit characters are digit of any base, such as decimal (base-10) or hexidecimal (base-16). * - * This does not include number-like, such as 1/2 (½) or superscript 2 (²). + * This does not include fractions such as 1/2 (½) (U+00BD). * - * Decimal refers to a unit of base-10. - * To simplify the necessary code, this function automatically handles different base units if the number can be converted into a integer whose value is less than 2^16. - * If base-10 is desired, then simply ignore values greater than 9. - * For example, a base-16 character 'a' would result in the integer 10. - * Just ignore the value. - * This also processes large values such as roman numerals. - * Roman Numerals, however conflict with the natural hexidecimal numbers. - * To avoid this only Unicode Roman Numerals found in range U+2160 to U+2188 are treated as their respective numerals. + * This also processes large values such as Roman Numerals. + * Roman Numerals, however, conflict with traditional alphabetic characters. + * To avoid this only Unicode Roman Numerals found in range U+2160 to U+2188 are treated as their respective digits. * For example, the Roman Numeral 'Ⅿ' (U+216F) represents 1000 rather than having 'M' (U+004D) representing 1000. * - * This function always returns F_true for valid decimal digits to avoid confusion between alphabetic and digits in regards to the base unit. - * The 'F' is a character and a base-16 digit. - * If this were to return F_false because it is greater than the requested base-12 then there would be confusion on whether or not 'F' is alphabetic. - * If the determined digit is greater than the requested base, the 0xffff is assigned to value. - * * @param sequence * The byte sequence to validate as a character. * @param value - * (optional) The integer representation of the character if the character is a decimal. - * If specified, value is set to 0xffff to represent no known representation. - * If specified and is initially a value of 0, then this represents the operating normall has decimal (base-10). - * If specified and is initially a value from 1 to 16, then this represents operating as that base unit. - * For example, if value is 16, then this function will operate "is hexidecimal" rather than "is decimal". - * If specified and is initially a value of 0xffff, then this will grab all known integer digits. + * (optional) The integer representation of the sequence if the sequence represents a decimal of any base type. * Set to NULL to not use. * * @return @@ -97,37 +82,14 @@ extern "C" { * @see isalpha() * @see isdigit() */ -#ifndef _di_f_utf_character_is_alphabetic_decimal_ - extern f_status_t f_utf_character_is_alphabetic_decimal(const f_utf_char_t sequence, uint32_t * const value); -#endif // _di_f_utf_character_is_alphabetic_decimal_ - -/** - * Check to see if the entire byte block of the character is an ASCII or UTF-8 alphabetic or digit character. - * - * Digit characters are decimal digits. - * - * This does not include number-like, such as 1/2 (½) or superscript 2 (²). - * - * @param sequence - * The byte sequence to validate as a character. - * - * @return - * F_true if a UTF-8 alphabetic-digit character. - * F_false if not a UTF-8 alphabetic-digit character. - * - * 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 isalnum() - */ #ifndef _di_f_utf_character_is_alphabetic_digit_ - extern f_status_t f_utf_character_is_alphabetic_digit(const f_utf_char_t sequence); + extern f_status_t f_utf_character_is_alphabetic_digit(const f_utf_char_t sequence, uint64_t * const value); #endif // _di_f_utf_character_is_alphabetic_digit_ /** * Check to see if the entire byte block of the character is an ASCII or UTF-8 alphabetic or numeric character. * - * Numeric characters are decimal digits, letter numbers, and number-like, such as 1/2 (½) or superscript 2 (²). + * Numeric characters are decimal digits, letter numbers, and number-like, such as 1/2 (½) (U+00BD) or superscript 2 (²) (U+00B2). * * @param sequence * The byte sequence to validate as a character. @@ -262,33 +224,21 @@ extern "C" { #endif // _di_f_utf_character_is_control_picture_ /** - * Check to see if the entire byte block of the character is an ASCII or UTF-8 decimal character. + * Check to see if the entire byte block of the character is an ASCII or UTF-8 digit character. * - * Decimal characters are decimal digits. + * Digit characters are digit of any base, such as decimal (base-10) or hexidecimal (base-16). * - * This does not include number-like, such as 1/2 (½) or superscript 2 (²). + * This does not include fractions such as 1/2 (½) (U+00BD). * - * Decimal refers to a unit of base-10. - * To simplify the necessary code, this function automatically handles different base units if the number can be converted into a integer whose value is less than 2^16. - * If base-10 is desired, then simply ignore values greater than 9. - * For example, a base-16 character 'a' would result in the integer 10. - * Just ignore the value. - * This also processes large values such as roman numerals. - * Roman Numerals, however conflict with the natural hexidecimal numbers. - * To avoid this only Unicode Roman Numerals found in range U+2160 to U+2188 are treated as their respective numerals. + * This also processes large values such as Roman Numerals. + * Roman Numerals, however, conflict with traditional alphabetic characters. + * To avoid this only Unicode Roman Numerals found in range U+2160 to U+2188 are treated as their respective digits. * For example, the Roman Numeral 'Ⅿ' (U+216F) represents 1000 rather than having 'M' (U+004D) representing 1000. * - * This function only returns F_true for valid decimal digits within the requested base. - * * @param sequence * The byte sequence to validate as a character. * @param value - * (optional) The integer representation of the character if the character is a decimal. - * If specified, value is set to 0xffff to represent no known representation. - * If specified and is initially a value of 0, then this represents the operating normall has decimal (base-10). - * If specified and is initially a value from 1 to 16, then this represents operating as that base unit. - * For example, if value is 16, then this function will operate "is hexidecimal" rather than "is decimal". - * If specified and is initially a value of 0xffff, then this will grab all known integer digits. + * (optional) The integer representation of the sequence if the sequence represents a decimal of any base type. * Set to NULL to not use. * * @return @@ -298,33 +248,10 @@ 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 isdecimal() - */ -#ifndef _di_f_utf_character_is_decimal_ - extern f_status_t f_utf_character_is_decimal(const f_utf_char_t sequence, uint32_t * const value); -#endif // _di_f_utf_character_is_decimal_ - -/** - * Check to see if the entire byte block of the character is an ASCII or UTF-8 digit character. - * - * Digit characters are decimal digits. - * - * This does not include number-like, such as 1/2 (½) or superscript 2 (²). - * - * @param sequence - * The byte sequence to validate as a character. - * - * @return - * F_true if a UTF-8 digit character. - * F_false if not a UTF-8 digit character. - * - * 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 isdigit() */ #ifndef _di_f_utf_character_is_digit_ - extern f_status_t f_utf_character_is_digit(const f_utf_char_t sequence); + extern f_status_t f_utf_character_is_digit(const f_utf_char_t sequence, uint64_t * const value); #endif // _di_f_utf_character_is_digit_ /** diff --git a/level_0/f_utf/data/build/settings b/level_0/f_utf/data/build/settings index 3d5bcfd..716f9b4 100644 --- a/level_0/f_utf/data/build/settings +++ b/level_0/f_utf/data/build/settings @@ -20,7 +20,7 @@ build_language c build_libraries -lc build_libraries-individual -lf_memory -lf_string -build_sources_library utf.c private-utf.c private-utf_alphabetic.c private-utf_combining.c private-utf_control.c private-utf_decimal.c private-utf_digit.c private-utf_emoji.c private-utf_numeric.c private-utf_phonetic.c private-utf_private.c private-utf_punctuation.c private-utf_subscript.c private-utf_superscript.c private-utf_symbol.c private-utf_valid.c private-utf_whitespace.c private-utf_wide.c private-utf_word.c private-utf_zero_width.c +build_sources_library utf.c private-utf.c private-utf_alphabetic.c private-utf_combining.c private-utf_control.c private-utf_digit.c private-utf_emoji.c private-utf_numeric.c private-utf_phonetic.c private-utf_private.c private-utf_punctuation.c private-utf_subscript.c private-utf_superscript.c private-utf_symbol.c private-utf_valid.c private-utf_whitespace.c private-utf_wide.c private-utf_word.c private-utf_zero_width.c build_sources_library utf/common.c utf/convert.c utf/dynamic.c utf/is.c utf/is_character.c utf/map.c utf/map_multi.c utf/static.c utf/string.c utf/triple.c build_sources_library utf/private-is_unassigned.c utf/private-dynamic.c utf/private-map.c utf/private-map_multi.c utf/private-string.c utf/private-triple.c diff --git a/level_0/f_utf/data/build/settings-tests b/level_0/f_utf/data/build/settings-tests index c755f5d..e1b5557 100644 --- a/level_0/f_utf/data/build/settings-tests +++ b/level_0/f_utf/data/build/settings-tests @@ -29,7 +29,6 @@ build_sources_program test-utf-append.c test-utf-append_assure.c test-utf-append build_sources_program test-utf-character_is_alphabetic.c test-utf-is_alphabetic.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_decimal.c test-utf-is_decimal.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/tests/bytesequences/decimal-all.txt b/level_0/f_utf/data/tests/bytesequences/decimal-all.txt deleted file mode 100644 index 5c312bf..0000000 --- a/level_0/f_utf/data/tests/bytesequences/decimal-all.txt +++ /dev/null @@ -1,701 +0,0 @@ -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -55712 -55713 -55714 -55715 -55716 -55717 -55718 -55719 -55720 -55721 -56240 -56241 -56242 -56243 -56244 -56245 -56246 -56247 -56248 -56249 -57216 -57217 -57218 -57219 -57220 -57221 -57222 -57223 -57224 -57225 -14722470 -14722471 -14722472 -14722473 -14722474 -14722475 -14722476 -14722477 -14722478 -14722479 -14722982 -14722983 -14722984 -14722985 -14722986 -14722987 -14722988 -14722989 -14722990 -14722991 -14723494 -14723495 -14723496 -14723497 -14723498 -14723499 -14723500 -14723501 -14723502 -14723503 -14724006 -14724007 -14724008 -14724009 -14724010 -14724011 -14724012 -14724013 -14724014 -14724015 -14724518 -14724519 -14724520 -14724521 -14724522 -14724523 -14724524 -14724525 -14724526 -14724527 -14725030 -14725031 -14725032 -14725033 -14725034 -14725035 -14725036 -14725037 -14725038 -14725039 -14725542 -14725543 -14725544 -14725545 -14725546 -14725547 -14725548 -14725549 -14725550 -14725551 -14726054 -14726055 -14726056 -14726057 -14726058 -14726059 -14726060 -14726061 -14726062 -14726063 -14726566 -14726567 -14726568 -14726569 -14726570 -14726571 -14726572 -14726573 -14726574 -14726575 -14727078 -14727079 -14727080 -14727081 -14727082 -14727083 -14727084 -14727085 -14727086 -14727087 -14727568 -14727569 -14727570 -14727571 -14727572 -14727573 -14727574 -14727575 -14727576 -14727577 -14728080 -14728081 -14728082 -14728083 -14728084 -14728085 -14728086 -14728087 -14728088 -14728089 -14728352 -14728353 -14728354 -14728355 -14728356 -14728357 -14728358 -14728359 -14728360 -14728361 -14778752 -14778753 -14778754 -14778755 -14778756 -14778757 -14778758 -14778759 -14778760 -14778761 -14779024 -14779025 -14779026 -14779027 -14779028 -14779029 -14779030 -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 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 5c312bf..cc08002 100644 --- a/level_0/f_utf/data/tests/bytesequences/digit-all.txt +++ b/level_0/f_utf/data/tests/bytesequences/digit-all.txt @@ -699,3 +699,944 @@ 4036997047 4036997048 4036997049 +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 +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 +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 +4036003466 +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 +4036011904 +4036011905 +4036011906 +4036011907 +4036011908 +4036011909 +4036011910 +4036011911 +4036011912 +4036011913 +4036011914 +4036011915 +4036011916 +4036011917 +4036011918 +4036011919 +4036011922 +4036011923 +4036011924 +4036011925 +4036011926 +4036011927 +4036011928 +4036011929 +4036011930 +4036011931 +4036011932 +4036011933 +4036011934 +4036011935 +4036011936 +4036011937 +4036011938 +4036011939 +4036011940 +4036011941 +4036011942 +4036011943 +4036011944 +4036011945 +4036011946 +4036011947 +4036011948 +4036011949 +4036011950 +4036011951 +4036011952 +4036011953 +4036011954 +4036011955 +4036011956 +4036011957 +4036012416 +4036012417 +4036012418 +4036012419 +4036012420 +4036012421 +4036012422 +4036012423 +4036012477 +4036012478 +4036012701 +4036012702 +4036012703 +4036012971 +4036012972 +4036012973 +4036012974 +4036012975 +4036013464 +4036013465 +4036013466 +4036013467 +4036013468 +4036013469 +4036013470 +4036013471 +4036013496 +4036013497 +4036013498 +4036013499 +4036013500 +4036013501 +4036013502 +4036013503 +4036013737 +4036013738 +4036013739 +4036013740 +4036013741 +4036013742 +4036013743 +4036015034 +4036015035 +4036015036 +4036015037 +4036015038 +4036015039 +4036016544 +4036016545 +4036016546 +4036016547 +4036016548 +4036016549 +4036016550 +4036016551 +4036016552 +4036016553 +4036016554 +4036016555 +4036016556 +4036016557 +4036016558 +4036016559 +4036016560 +4036016561 +4036016562 +4036016563 +4036016564 +4036016565 +4036016566 +4036016567 +4036016568 +4036016569 +4036016570 +4036017309 +4036017310 +4036017311 +4036017312 +4036017313 +4036017314 +4036017315 +4036017316 +4036017317 +4036017553 +4036017554 +4036017555 +4036017556 +4036018053 +4036018054 +4036018055 +4036018056 +4036018057 +4036018058 +4036018059 +4036067730 +4036067731 +4036067732 +4036067733 +4036067734 +4036067735 +4036067736 +4036067737 +4036067738 +4036067739 +4036067740 +4036067741 +4036067742 +4036067743 +4036067744 +4036067745 +4036067746 +4036067747 +4036067748 +4036067749 +4036069281 +4036069282 +4036069283 +4036069284 +4036069285 +4036069286 +4036069287 +4036069288 +4036069289 +4036069290 +4036069291 +4036069292 +4036069293 +4036069294 +4036069295 +4036069296 +4036069297 +4036069298 +4036069299 +4036069300 +4036074682 +4036074683 +4036076458 +4036076459 +4036076460 +4036076461 +4036076462 +4036076463 +4036076464 +4036076465 +4036076466 +4036080026 +4036080027 +4036080028 +4036080029 +4036080030 +4036080031 +4036080032 +4036080033 +4036080034 +4036080035 +4036080036 +4036080037 +4036080038 +4036080039 +4036080040 +4036080041 +4036080042 +4036080043 +4036080044 +4036406683 +4036406684 +4036406685 +4036406686 +4036406687 +4036406688 +4036406689 +4036409984 +4036409985 +4036409986 +4036409987 +4036409988 +4036409989 +4036409990 +4036409991 +4036409992 +4036409993 +4036409994 +4036409995 +4036409996 +4036409997 +4036409998 +4036409999 +4036410000 +4036410001 +4036410002 +4036410003 +4036410004 +4036410005 +4036410006 +4036856736 +4036856737 +4036856738 +4036856739 +4036856740 +4036856741 +4036856742 +4036856743 +4036856744 +4036856745 +4036856746 +4036856747 +4036856748 +4036856749 +4036856750 +4036856751 +4036856752 +4036856753 +4036856754 +4036856755 +4036857248 +4036857249 +4036857250 +4036857251 +4036857252 +4036857253 +4036857254 +4036857255 +4036857256 +4036857257 +4036857258 +4036857259 +4036857260 +4036857261 +4036857262 +4036857263 +4036857264 +4036857265 +4036857266 +4036857267 +4036857268 +4036857269 +4036857270 +4036857271 +4036857272 +4036928391 +4036928392 +4036928393 +4036928394 +4036928395 +4036928396 +4036928397 +4036928398 +4036928399 +4036932017 +4036932018 +4036932019 +4036932020 +4036932021 +4036932022 +4036932023 +4036932024 +4036932025 +4036932026 +4036932027 +4036932028 +4036932029 +4036932030 +4036932031 +4036932224 +4036932225 +4036932226 +4036932227 +4036932228 +4036932229 +4036932230 +4036932231 +4036932232 +4036932233 +4036932234 +4036932235 +4036932236 +4036932237 +4036932238 +4036932239 +4036932240 +4036932241 +4036932242 +4036932243 +4036932244 +4036932245 +4036932246 +4036932247 +4036932248 +4036932249 +4036932250 +4036932251 +4036932252 +4036932253 +4036932254 +4036932255 +4036932256 +4036932257 +4036932258 +4036932259 +4036932260 +4036932261 +4036932262 +4036932263 +4036932264 +4036932265 +4036932266 +4036932267 +4036932273 +4036932274 +4036932275 +4036932276 +4036932737 +4036932738 +4036932739 +4036932740 +4036932741 +4036932742 +4036932743 +4036932744 +4036932745 +4036932746 +4036932747 +4036932748 +4036932749 +4036932750 +4036932751 +4036932752 +4036932753 +4036932754 +4036932755 +4036932756 +4036932757 +4036932758 +4036932759 +4036932760 +4036932761 +4036932762 +4036932763 +4036932764 +4036932765 +4036932766 +4036932767 +4036932768 +4036932769 +4036932770 +4036932771 +4036932772 +4036932773 +4036932774 +4036932775 +4036932776 +4036932777 +4036932778 +4036932779 +4036932780 +4036932781 +4036932783 +4036932784 +4036932785 +4036932786 +4036932787 +4036932788 +4036932789 +4036932790 +4036932791 +4036932792 +4036932793 +4036932794 +4036932795 +4036985984 +4036985985 +4036985986 +4036985987 +4036985988 +4036985989 +4036985990 +4036985991 +4036985992 +4036985993 +4036985994 +4036985995 +4036985996 +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 +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 +4036137383 +4036137384 +4036137385 +4036137386 +4036137387 +4036137388 +4036137389 +4036137390 diff --git a/level_0/f_utf/data/tests/bytesequences/numeric-all.txt b/level_0/f_utf/data/tests/bytesequences/numeric-all.txt new file mode 100644 index 0000000..a4b419a --- /dev/null +++ b/level_0/f_utf/data/tests/bytesequences/numeric-all.txt @@ -0,0 +1,1832 @@ +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +55712 +55713 +55714 +55715 +55716 +55717 +55718 +55719 +55720 +55721 +56240 +56241 +56242 +56243 +56244 +56245 +56246 +56247 +56248 +56249 +57216 +57217 +57218 +57219 +57220 +57221 +57222 +57223 +57224 +57225 +14722470 +14722471 +14722472 +14722473 +14722474 +14722475 +14722476 +14722477 +14722478 +14722479 +14722982 +14722983 +14722984 +14722985 +14722986 +14722987 +14722988 +14722989 +14722990 +14722991 +14723494 +14723495 +14723496 +14723497 +14723498 +14723499 +14723500 +14723501 +14723502 +14723503 +14724006 +14724007 +14724008 +14724009 +14724010 +14724011 +14724012 +14724013 +14724014 +14724015 +14724518 +14724519 +14724520 +14724521 +14724522 +14724523 +14724524 +14724525 +14724526 +14724527 +14725030 +14725031 +14725032 +14725033 +14725034 +14725035 +14725036 +14725037 +14725038 +14725039 +14725542 +14725543 +14725544 +14725545 +14725546 +14725547 +14725548 +14725549 +14725550 +14725551 +14726054 +14726055 +14726056 +14726057 +14726058 +14726059 +14726060 +14726061 +14726062 +14726063 +14726566 +14726567 +14726568 +14726569 +14726570 +14726571 +14726572 +14726573 +14726574 +14726575 +14727078 +14727079 +14727080 +14727081 +14727082 +14727083 +14727084 +14727085 +14727086 +14727087 +14727568 +14727569 +14727570 +14727571 +14727572 +14727573 +14727574 +14727575 +14727576 +14727577 +14728080 +14728081 +14728082 +14728083 +14728084 +14728085 +14728086 +14728087 +14728088 +14728089 +14728352 +14728353 +14728354 +14728355 +14728356 +14728357 +14728358 +14728359 +14728360 +14728361 +14778752 +14778753 +14778754 +14778755 +14778756 +14778757 +14778758 +14778759 +14778760 +14778761 +14779024 +14779025 +14779026 +14779027 +14779028 +14779029 +14779030 +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 +4036011905 +4036011906 +4036011907 +4036011908 +4036011909 +4036011910 +4036011911 +4036011912 +4036011913 +4036011914 +4036011915 +4036011916 +4036011917 +4036011918 +4036011919 +4036011922 +4036011923 +4036011924 +4036011925 +4036011926 +4036011927 +4036011928 +4036011929 +4036011930 +4036011931 +4036011932 +4036011933 +4036011934 +4036011935 +4036011936 +4036011937 +4036011938 +4036011939 +4036011940 +4036011941 +4036011942 +4036011943 +4036011944 +4036011945 +4036011946 +4036011947 +4036011948 +4036011949 +4036011950 +4036011951 +4036011952 +4036011953 +4036011954 +4036011955 +4036011956 +4036011957 +4036011958 +4036011959 +4036011960 +4036011961 +4036011962 +4036011963 +4036011964 +4036011965 +4036011966 +4036011967 +4036012416 +4036012417 +4036012418 +4036012419 +4036012420 +4036012421 +4036012422 +4036012423 +4036012424 +4036012477 +4036012478 +4036012701 +4036012702 +4036012703 +4036012971 +4036012972 +4036012973 +4036012974 +4036012975 +4036013464 +4036013465 +4036013466 +4036013467 +4036013468 +4036013469 +4036013470 +4036013471 +4036013496 +4036013497 +4036013498 +4036013499 +4036013500 +4036013501 +4036013502 +4036013503 +4036013737 +4036013738 +4036013739 +4036013740 +4036013741 +4036013742 +4036013743 +4036015034 +4036015035 +4036015036 +4036015037 +4036015038 +4036015039 +4036016544 +4036016545 +4036016546 +4036016547 +4036016548 +4036016549 +4036016550 +4036016551 +4036016552 +4036016553 +4036016554 +4036016555 +4036016556 +4036016557 +4036016558 +4036016559 +4036016560 +4036016561 +4036016562 +4036016563 +4036016564 +4036016565 +4036016566 +4036016567 +4036016568 +4036016569 +4036016570 +4036016571 +4036016572 +4036016573 +4036016574 +4036017309 +4036017310 +4036017311 +4036017312 +4036017313 +4036017314 +4036017315 +4036017316 +4036017317 +4036017318 +4036017553 +4036017554 +4036017555 +4036017556 +4036018053 +4036018054 +4036018055 +4036018056 +4036018057 +4036018058 +4036018059 +4036067730 +4036067731 +4036067732 +4036067733 +4036067734 +4036067735 +4036067736 +4036067737 +4036067738 +4036067739 +4036067740 +4036067741 +4036067742 +4036067743 +4036067744 +4036067745 +4036067746 +4036067747 +4036067748 +4036067749 +4036069281 +4036069282 +4036069283 +4036069284 +4036069285 +4036069286 +4036069287 +4036069288 +4036069289 +4036069290 +4036069291 +4036069292 +4036069293 +4036069294 +4036069295 +4036069296 +4036069297 +4036069298 +4036069299 +4036069300 +4036074682 +4036074683 +4036076458 +4036076459 +4036076460 +4036076461 +4036076462 +4036076463 +4036076464 +4036076465 +4036076466 +4036080026 +4036080027 +4036080028 +4036080029 +4036080030 +4036080031 +4036080032 +4036080033 +4036080034 +4036080035 +4036080036 +4036080037 +4036080038 +4036080039 +4036080040 +4036080041 +4036080042 +4036080043 +4036080044 +4036083584 +4036083585 +4036083586 +4036083587 +4036083588 +4036083589 +4036083590 +4036083591 +4036083592 +4036083593 +4036083594 +4036083595 +4036083596 +4036083597 +4036083598 +4036083599 +4036083600 +4036083601 +4036083602 +4036083603 +4036083604 +4036406683 +4036406684 +4036406685 +4036406686 +4036406687 +4036406688 +4036406689 +4036409984 +4036409985 +4036409986 +4036409987 +4036409988 +4036409989 +4036409990 +4036409991 +4036409992 +4036409993 +4036409994 +4036409995 +4036409996 +4036409997 +4036409998 +4036409999 +4036410000 +4036410001 +4036410002 +4036410003 +4036410004 +4036410005 +4036410006 +4036856736 +4036856737 +4036856738 +4036856739 +4036856740 +4036856741 +4036856742 +4036856743 +4036856744 +4036856745 +4036856746 +4036856747 +4036856748 +4036856749 +4036856750 +4036856751 +4036856752 +4036856753 +4036856754 +4036856755 +4036857248 +4036857249 +4036857250 +4036857251 +4036857252 +4036857253 +4036857254 +4036857255 +4036857256 +4036857257 +4036857258 +4036857259 +4036857260 +4036857261 +4036857262 +4036857263 +4036857264 +4036857265 +4036857266 +4036857267 +4036857268 +4036857269 +4036857270 +4036857271 +4036857272 +4036928391 +4036928392 +4036928393 +4036928394 +4036928395 +4036928396 +4036928397 +4036928398 +4036928399 +4036932017 +4036932018 +4036932019 +4036932020 +4036932021 +4036932022 +4036932023 +4036932024 +4036932025 +4036932026 +4036932027 +4036932028 +4036932029 +4036932030 +4036932031 +4036932224 +4036932225 +4036932226 +4036932227 +4036932228 +4036932229 +4036932230 +4036932231 +4036932232 +4036932233 +4036932234 +4036932235 +4036932236 +4036932237 +4036932238 +4036932239 +4036932240 +4036932241 +4036932242 +4036932243 +4036932244 +4036932245 +4036932246 +4036932247 +4036932248 +4036932249 +4036932250 +4036932251 +4036932252 +4036932253 +4036932254 +4036932255 +4036932256 +4036932257 +4036932258 +4036932259 +4036932260 +4036932261 +4036932262 +4036932263 +4036932264 +4036932265 +4036932266 +4036932267 +4036932269 +4036932270 +4036932271 +4036932273 +4036932274 +4036932275 +4036932276 +4036932737 +4036932738 +4036932739 +4036932740 +4036932741 +4036932742 +4036932743 +4036932744 +4036932745 +4036932746 +4036932747 +4036932748 +4036932749 +4036932750 +4036932751 +4036932752 +4036932753 +4036932754 +4036932755 +4036932756 +4036932757 +4036932758 +4036932759 +4036932760 +4036932761 +4036932762 +4036932763 +4036932764 +4036932765 +4036932766 +4036932767 +4036932768 +4036932769 +4036932770 +4036932771 +4036932772 +4036932773 +4036932774 +4036932775 +4036932776 +4036932777 +4036932778 +4036932779 +4036932780 +4036932781 +4036932783 +4036932784 +4036932785 +4036932786 +4036932787 +4036932788 +4036932789 +4036932790 +4036932791 +4036932792 +4036932793 +4036932794 +4036932795 +4036932796 +4036932797 +4036985984 +4036985985 +4036985986 +4036985987 +4036985988 +4036985989 +4036985990 +4036985991 +4036985992 +4036985993 +4036985994 +4036985995 +4036985996 diff --git a/level_0/f_utf/data/tests/codepoints/decimal-all.txt b/level_0/f_utf/data/tests/codepoints/decimal-all.txt deleted file mode 100644 index 5923866..0000000 --- a/level_0/f_utf/data/tests/codepoints/decimal-all.txt +++ /dev/null @@ -1,701 +0,0 @@ -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 -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 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 5923866..d8b334f 100644 --- a/level_0/f_utf/data/tests/codepoints/digit-all.txt +++ b/level_0/f_utf/data/tests/codepoints/digit-all.txt @@ -699,3 +699,944 @@ U+1FBF6 U+1FBF7 U+1FBF8 U+1FBF9 +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+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+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+1018A +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+109C0 +U+109C1 +U+109C2 +U+109C3 +U+109C4 +U+109C5 +U+109C6 +U+109C7 +U+109C8 +U+109C9 +U+109CA +U+109CB +U+109CC +U+109CD +U+109CE +U+109CF +U+109D2 +U+109D3 +U+109D4 +U+109D5 +U+109D6 +U+109D7 +U+109D8 +U+109D9 +U+109DA +U+109DB +U+109DC +U+109DD +U+109DE +U+109DF +U+109E0 +U+109E1 +U+109E2 +U+109E3 +U+109E4 +U+109E5 +U+109E6 +U+109E7 +U+109E8 +U+109E9 +U+109EA +U+109EB +U+109EC +U+109ED +U+109EE +U+109EF +U+109F0 +U+109F1 +U+109F2 +U+109F3 +U+109F4 +U+109F5 +U+10A40 +U+10A41 +U+10A42 +U+10A43 +U+10A44 +U+10A45 +U+10A46 +U+10A47 +U+10A7D +U+10A7E +U+10A9D +U+10A9E +U+10A9F +U+10AEB +U+10AEC +U+10AED +U+10AEE +U+10AEF +U+10B58 +U+10B59 +U+10B5A +U+10B5B +U+10B5C +U+10B5D +U+10B5E +U+10B5F +U+10B78 +U+10B79 +U+10B7A +U+10B7B +U+10B7C +U+10B7D +U+10B7E +U+10B7F +U+10BA9 +U+10BAA +U+10BAB +U+10BAC +U+10BAD +U+10BAE +U+10BAF +U+10CFA +U+10CFB +U+10CFC +U+10CFD +U+10CFE +U+10CFF +U+10E60 +U+10E61 +U+10E62 +U+10E63 +U+10E64 +U+10E65 +U+10E66 +U+10E67 +U+10E68 +U+10E69 +U+10E6A +U+10E6B +U+10E6C +U+10E6D +U+10E6E +U+10E6F +U+10E70 +U+10E71 +U+10E72 +U+10E73 +U+10E74 +U+10E75 +U+10E76 +U+10E77 +U+10E78 +U+10E79 +U+10E7A +U+10F1D +U+10F1E +U+10F1F +U+10F20 +U+10F21 +U+10F22 +U+10F23 +U+10F24 +U+10F25 +U+10F51 +U+10F52 +U+10F53 +U+10F54 +U+10FC5 +U+10FC6 +U+10FC7 +U+10FC8 +U+10FC9 +U+10FCA +U+10FCB +U+11052 +U+11053 +U+11054 +U+11055 +U+11056 +U+11057 +U+11058 +U+11059 +U+1105A +U+1105B +U+1105C +U+1105D +U+1105E +U+1105F +U+11060 +U+11061 +U+11062 +U+11063 +U+11064 +U+11065 +U+111E1 +U+111E2 +U+111E3 +U+111E4 +U+111E5 +U+111E6 +U+111E7 +U+111E8 +U+111E9 +U+111EA +U+111EB +U+111EC +U+111ED +U+111EE +U+111EF +U+111F0 +U+111F1 +U+111F2 +U+111F3 +U+111F4 +U+1173A +U+1173B +U+118EA +U+118EB +U+118EC +U+118ED +U+118EE +U+118EF +U+118F0 +U+118F1 +U+118F2 +U+11C5A +U+11C5B +U+11C5C +U+11C5D +U+11C5E +U+11C5F +U+11C60 +U+11C61 +U+11C62 +U+11C63 +U+11C64 +U+11C65 +U+11C66 +U+11C67 +U+11C68 +U+11C69 +U+11C6A +U+11C6B +U+11C6C +U+16B5B +U+16B5C +U+16B5D +U+16B5E +U+16B5F +U+16B60 +U+16B61 +U+16E80 +U+16E81 +U+16E82 +U+16E83 +U+16E84 +U+16E85 +U+16E86 +U+16E87 +U+16E88 +U+16E89 +U+16E8A +U+16E8B +U+16E8C +U+16E8D +U+16E8E +U+16E8F +U+16E90 +U+16E91 +U+16E92 +U+16E93 +U+16E94 +U+16E95 +U+16E96 +U+1D2E0 +U+1D2E1 +U+1D2E2 +U+1D2E3 +U+1D2E4 +U+1D2E5 +U+1D2E6 +U+1D2E7 +U+1D2E8 +U+1D2E9 +U+1D2EA +U+1D2EB +U+1D2EC +U+1D2ED +U+1D2EE +U+1D2EF +U+1D2F0 +U+1D2F1 +U+1D2F2 +U+1D2F3 +U+1D360 +U+1D361 +U+1D362 +U+1D363 +U+1D364 +U+1D365 +U+1D366 +U+1D367 +U+1D368 +U+1D369 +U+1D36A +U+1D36B +U+1D36C +U+1D36D +U+1D36E +U+1D36F +U+1D370 +U+1D371 +U+1D372 +U+1D373 +U+1D374 +U+1D375 +U+1D376 +U+1D377 +U+1D378 +U+1E8C7 +U+1E8C8 +U+1E8C9 +U+1E8CA +U+1E8CB +U+1E8CC +U+1E8CD +U+1E8CE +U+1E8CF +U+1EC71 +U+1EC72 +U+1EC73 +U+1EC74 +U+1EC75 +U+1EC76 +U+1EC77 +U+1EC78 +U+1EC79 +U+1EC7A +U+1EC7B +U+1EC7C +U+1EC7D +U+1EC7E +U+1EC7F +U+1EC80 +U+1EC81 +U+1EC82 +U+1EC83 +U+1EC84 +U+1EC85 +U+1EC86 +U+1EC87 +U+1EC88 +U+1EC89 +U+1EC8A +U+1EC8B +U+1EC8C +U+1EC8D +U+1EC8E +U+1EC8F +U+1EC90 +U+1EC91 +U+1EC92 +U+1EC93 +U+1EC94 +U+1EC95 +U+1EC96 +U+1EC97 +U+1EC98 +U+1EC99 +U+1EC9A +U+1EC9B +U+1EC9C +U+1EC9D +U+1EC9E +U+1EC9F +U+1ECA0 +U+1ECA1 +U+1ECA2 +U+1ECA3 +U+1ECA4 +U+1ECA5 +U+1ECA6 +U+1ECA7 +U+1ECA8 +U+1ECA9 +U+1ECAA +U+1ECAB +U+1ECB1 +U+1ECB2 +U+1ECB3 +U+1ECB4 +U+1ED01 +U+1ED02 +U+1ED03 +U+1ED04 +U+1ED05 +U+1ED06 +U+1ED07 +U+1ED08 +U+1ED09 +U+1ED0A +U+1ED0B +U+1ED0C +U+1ED0D +U+1ED0E +U+1ED0F +U+1ED10 +U+1ED11 +U+1ED12 +U+1ED13 +U+1ED14 +U+1ED15 +U+1ED16 +U+1ED17 +U+1ED18 +U+1ED19 +U+1ED1A +U+1ED1B +U+1ED1C +U+1ED1D +U+1ED1E +U+1ED1F +U+1ED20 +U+1ED21 +U+1ED22 +U+1ED23 +U+1ED24 +U+1ED25 +U+1ED26 +U+1ED27 +U+1ED28 +U+1ED29 +U+1ED2A +U+1ED2B +U+1ED2C +U+1ED2D +U+1ED2F +U+1ED30 +U+1ED31 +U+1ED32 +U+1ED33 +U+1ED34 +U+1ED35 +U+1ED36 +U+1ED37 +U+1ED38 +U+1ED39 +U+1ED3A +U+1ED3B +U+1F100 +U+1F101 +U+1F102 +U+1F103 +U+1F104 +U+1F105 +U+1F106 +U+1F107 +U+1F108 +U+1F109 +U+1F10A +U+1F10B +U+1F10C +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+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+12467 +U+12468 +U+12469 +U+1246A +U+1246B +U+1246C +U+1246D +U+1246E diff --git a/level_0/f_utf/data/tests/codepoints/numeric-all.txt b/level_0/f_utf/data/tests/codepoints/numeric-all.txt new file mode 100644 index 0000000..b108d1a --- /dev/null +++ b/level_0/f_utf/data/tests/codepoints/numeric-all.txt @@ -0,0 +1,1832 @@ +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 +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 +U+109C1 +U+109C2 +U+109C3 +U+109C4 +U+109C5 +U+109C6 +U+109C7 +U+109C8 +U+109C9 +U+109CA +U+109CB +U+109CC +U+109CD +U+109CE +U+109CF +U+109D2 +U+109D3 +U+109D4 +U+109D5 +U+109D6 +U+109D7 +U+109D8 +U+109D9 +U+109DA +U+109DB +U+109DC +U+109DD +U+109DE +U+109DF +U+109E0 +U+109E1 +U+109E2 +U+109E3 +U+109E4 +U+109E5 +U+109E6 +U+109E7 +U+109E8 +U+109E9 +U+109EA +U+109EB +U+109EC +U+109ED +U+109EE +U+109EF +U+109F0 +U+109F1 +U+109F2 +U+109F3 +U+109F4 +U+109F5 +U+109F6 +U+109F7 +U+109F8 +U+109F9 +U+109FA +U+109FB +U+109FC +U+109FD +U+109FE +U+109FF +U+10A40 +U+10A41 +U+10A42 +U+10A43 +U+10A44 +U+10A45 +U+10A46 +U+10A47 +U+10A48 +U+10A7D +U+10A7E +U+10A9D +U+10A9E +U+10A9F +U+10AEB +U+10AEC +U+10AED +U+10AEE +U+10AEF +U+10B58 +U+10B59 +U+10B5A +U+10B5B +U+10B5C +U+10B5D +U+10B5E +U+10B5F +U+10B78 +U+10B79 +U+10B7A +U+10B7B +U+10B7C +U+10B7D +U+10B7E +U+10B7F +U+10BA9 +U+10BAA +U+10BAB +U+10BAC +U+10BAD +U+10BAE +U+10BAF +U+10CFA +U+10CFB +U+10CFC +U+10CFD +U+10CFE +U+10CFF +U+10E60 +U+10E61 +U+10E62 +U+10E63 +U+10E64 +U+10E65 +U+10E66 +U+10E67 +U+10E68 +U+10E69 +U+10E6A +U+10E6B +U+10E6C +U+10E6D +U+10E6E +U+10E6F +U+10E70 +U+10E71 +U+10E72 +U+10E73 +U+10E74 +U+10E75 +U+10E76 +U+10E77 +U+10E78 +U+10E79 +U+10E7A +U+10E7B +U+10E7C +U+10E7D +U+10E7E +U+10F1D +U+10F1E +U+10F1F +U+10F20 +U+10F21 +U+10F22 +U+10F23 +U+10F24 +U+10F25 +U+10F26 +U+10F51 +U+10F52 +U+10F53 +U+10F54 +U+10FC5 +U+10FC6 +U+10FC7 +U+10FC8 +U+10FC9 +U+10FCA +U+10FCB +U+11052 +U+11053 +U+11054 +U+11055 +U+11056 +U+11057 +U+11058 +U+11059 +U+1105A +U+1105B +U+1105C +U+1105D +U+1105E +U+1105F +U+11060 +U+11061 +U+11062 +U+11063 +U+11064 +U+11065 +U+111E1 +U+111E2 +U+111E3 +U+111E4 +U+111E5 +U+111E6 +U+111E7 +U+111E8 +U+111E9 +U+111EA +U+111EB +U+111EC +U+111ED +U+111EE +U+111EF +U+111F0 +U+111F1 +U+111F2 +U+111F3 +U+111F4 +U+1173A +U+1173B +U+118EA +U+118EB +U+118EC +U+118ED +U+118EE +U+118EF +U+118F0 +U+118F1 +U+118F2 +U+11C5A +U+11C5B +U+11C5C +U+11C5D +U+11C5E +U+11C5F +U+11C60 +U+11C61 +U+11C62 +U+11C63 +U+11C64 +U+11C65 +U+11C66 +U+11C67 +U+11C68 +U+11C69 +U+11C6A +U+11C6B +U+11C6C +U+11FC0 +U+11FC1 +U+11FC2 +U+11FC3 +U+11FC4 +U+11FC5 +U+11FC6 +U+11FC7 +U+11FC8 +U+11FC9 +U+11FCA +U+11FCB +U+11FCC +U+11FCD +U+11FCE +U+11FCF +U+11FD0 +U+11FD1 +U+11FD2 +U+11FD3 +U+11FD4 +U+16B5B +U+16B5C +U+16B5D +U+16B5E +U+16B5F +U+16B60 +U+16B61 +U+16E80 +U+16E81 +U+16E82 +U+16E83 +U+16E84 +U+16E85 +U+16E86 +U+16E87 +U+16E88 +U+16E89 +U+16E8A +U+16E8B +U+16E8C +U+16E8D +U+16E8E +U+16E8F +U+16E90 +U+16E91 +U+16E92 +U+16E93 +U+16E94 +U+16E95 +U+16E96 +U+1D2E0 +U+1D2E1 +U+1D2E2 +U+1D2E3 +U+1D2E4 +U+1D2E5 +U+1D2E6 +U+1D2E7 +U+1D2E8 +U+1D2E9 +U+1D2EA +U+1D2EB +U+1D2EC +U+1D2ED +U+1D2EE +U+1D2EF +U+1D2F0 +U+1D2F1 +U+1D2F2 +U+1D2F3 +U+1D360 +U+1D361 +U+1D362 +U+1D363 +U+1D364 +U+1D365 +U+1D366 +U+1D367 +U+1D368 +U+1D369 +U+1D36A +U+1D36B +U+1D36C +U+1D36D +U+1D36E +U+1D36F +U+1D370 +U+1D371 +U+1D372 +U+1D373 +U+1D374 +U+1D375 +U+1D376 +U+1D377 +U+1D378 +U+1E8C7 +U+1E8C8 +U+1E8C9 +U+1E8CA +U+1E8CB +U+1E8CC +U+1E8CD +U+1E8CE +U+1E8CF +U+1EC71 +U+1EC72 +U+1EC73 +U+1EC74 +U+1EC75 +U+1EC76 +U+1EC77 +U+1EC78 +U+1EC79 +U+1EC7A +U+1EC7B +U+1EC7C +U+1EC7D +U+1EC7E +U+1EC7F +U+1EC80 +U+1EC81 +U+1EC82 +U+1EC83 +U+1EC84 +U+1EC85 +U+1EC86 +U+1EC87 +U+1EC88 +U+1EC89 +U+1EC8A +U+1EC8B +U+1EC8C +U+1EC8D +U+1EC8E +U+1EC8F +U+1EC90 +U+1EC91 +U+1EC92 +U+1EC93 +U+1EC94 +U+1EC95 +U+1EC96 +U+1EC97 +U+1EC98 +U+1EC99 +U+1EC9A +U+1EC9B +U+1EC9C +U+1EC9D +U+1EC9E +U+1EC9F +U+1ECA0 +U+1ECA1 +U+1ECA2 +U+1ECA3 +U+1ECA4 +U+1ECA5 +U+1ECA6 +U+1ECA7 +U+1ECA8 +U+1ECA9 +U+1ECAA +U+1ECAB +U+1ECAD +U+1ECAE +U+1ECAF +U+1ECB1 +U+1ECB2 +U+1ECB3 +U+1ECB4 +U+1ED01 +U+1ED02 +U+1ED03 +U+1ED04 +U+1ED05 +U+1ED06 +U+1ED07 +U+1ED08 +U+1ED09 +U+1ED0A +U+1ED0B +U+1ED0C +U+1ED0D +U+1ED0E +U+1ED0F +U+1ED10 +U+1ED11 +U+1ED12 +U+1ED13 +U+1ED14 +U+1ED15 +U+1ED16 +U+1ED17 +U+1ED18 +U+1ED19 +U+1ED1A +U+1ED1B +U+1ED1C +U+1ED1D +U+1ED1E +U+1ED1F +U+1ED20 +U+1ED21 +U+1ED22 +U+1ED23 +U+1ED24 +U+1ED25 +U+1ED26 +U+1ED27 +U+1ED28 +U+1ED29 +U+1ED2A +U+1ED2B +U+1ED2C +U+1ED2D +U+1ED2F +U+1ED30 +U+1ED31 +U+1ED32 +U+1ED33 +U+1ED34 +U+1ED35 +U+1ED36 +U+1ED37 +U+1ED38 +U+1ED39 +U+1ED3A +U+1ED3B +U+1ED3C +U+1ED3D +U+1F100 +U+1F101 +U+1F102 +U+1F103 +U+1F104 +U+1F105 +U+1F106 +U+1F107 +U+1F108 +U+1F109 +U+1F10A +U+1F10B +U+1F10C diff --git a/level_0/f_utf/data/tests/values/decimal-all.txt b/level_0/f_utf/data/tests/values/decimal-all.txt deleted file mode 100644 index c647e79..0000000 --- a/level_0/f_utf/data/tests/values/decimal-all.txt +++ /dev/null @@ -1,701 +0,0 @@ -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -50 -100 -500 -1000 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -50 -100 -500 -1000 -1000 -5000 -10000 -100 -100 -6 -50 -50000 -100000 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 diff --git a/level_0/f_utf/data/tests/values/digit-all.txt b/level_0/f_utf/data/tests/values/digit-all.txt new file mode 100644 index 0000000..72e12b8 --- /dev/null +++ b/level_0/f_utf/data/tests/values/digit-all.txt @@ -0,0 +1,1642 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +50 +100 +500 +1000 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +50 +100 +500 +1000 +1000 +5000 +10000 +100 +100 +6 +50 +50000 +100000 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +0 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +1 +2 +3 +4 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +10 +20 +30 +40 +50 +60 +70 +80 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +40 +50 +60 +70 +80 +90 +100 +200 +300 +400 +500 +600 +700 +800 +900 +1000 +2000 +3000 +4000 +5000 +6000 +7000 +8000 +9000 +10000 +20000 +30000 +40000 +50000 +60000 +70000 +80000 +90000 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +40 +50 +60 +70 +80 +90 +100 +200 +300 +400 +500 +600 +700 +800 +900 +1 +5 +10 +50 +1 +2 +3 +10 +20 +100 +1000 +10000 +1 +2 +3 +4 +5 +10 +20 +1 +2 +3 +4 +4 +5 +10 +20 +100 +1 +5 +10 +20 +100 +1 +10 +20 +100 +2 +3 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +40 +50 +60 +70 +100 +200 +300 +400 +500 +600 +700 +800 +900 +1000 +2000 +3000 +4000 +5000 +6000 +7000 +8000 +9000 +10000 +20000 +30000 +40000 +50000 +60000 +70000 +80000 +90000 +100000 +200000 +300000 +400000 +500000 +600000 +700000 +800000 +900000 +1 +2 +3 +4 +10 +20 +100 +1000 +1 +50 +1 +10 +20 +1 +5 +10 +20 +100 +1 +2 +3 +4 +10 +20 +100 +1000 +1 +2 +3 +4 +10 +20 +100 +1000 +1 +2 +3 +4 +10 +20 +100 +1 +5 +10 +50 +100 +1000 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +40 +50 +60 +70 +80 +90 +100 +200 +300 +400 +500 +600 +700 +800 +900 +1 +2 +3 +4 +5 +10 +20 +30 +100 +1 +10 +20 +100 +1 +2 +3 +4 +10 +20 +100 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +40 +50 +60 +70 +80 +90 +100 +1000 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +40 +50 +60 +70 +80 +90 +100 +1000 +10 +20 +10 +20 +30 +40 +50 +60 +70 +80 +90 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +40 +50 +60 +70 +80 +90 +100 +10 +100 +10000 +1000000 +100000000 +10000000000 +1000000000000 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +1 +2 +3 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1 +2 +3 +4 +5 +1 +5 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +40 +50 +60 +70 +80 +90 +100 +200 +300 +400 +500 +600 +700 +800 +900 +1000 +2000 +3000 +4000 +5000 +6000 +7000 +8000 +9000 +10000 +20000 +30000 +40000 +50000 +60000 +70000 +80000 +90000 +100000 +200000 +100000 +10000000 +20000000 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1 +2 +10000 +100000 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +40 +50 +60 +70 +80 +90 +100 +200 +300 +400 +500 +600 +700 +800 +900 +1000 +2000 +3000 +4000 +5000 +6000 +7000 +8000 +9000 +10000 +20000 +30000 +40000 +50000 +60000 +70000 +80000 +90000 +2 +3 +4 +5 +6 +7 +8 +9 +10 +400 +600 +2000 +10000 +0 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +0 +17 +18 +19 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +15 +100 +500 +1000 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +50 +100 +500 +1000 +1000 +5000 +10000 +6 +50 +50000 +100000 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +20 +30 +1 +2 +3 +4 +5 +6 +7 +8 +9 +0 +1 +5 +50 +500 +5000 +50000 +5 +10 +50 +100 +500 +1000 +5000 +5 +10 +50 +100 +500 +1000 +10000 +50000 +10 +1 +1 +1 +2 +2 +2 +2 +5 +10 +10 +10 +10 +10 +30 +50 +50 +50 +50 +100 +300 +500 +500 +500 +500 +500 +1000 +5000 +5 +50 +90 +900 +1 +2 +10 +20 +100 +2 +3 +4 +5 +6 +7 +8 +9 +3 +4 +5 +6 +7 +8 +9 +4 +5 +6 +7 +8 +9 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1 +2 +3 +4 +5 +2 +3 +3 +4 +5 +6 +7 +8 +9 +1 +2 +3 +3 +4 +5 +216000 +432000 +1 +2 +3 +3 +4 +5 +3 +3 +4 +4 +4 +4 +6 +7 +7 +7 +8 +8 +9 +9 +9 +9 +2 +3 +4 +5 +6 +1 +2 +3 +4 +4 +5 +5 +2 +3 +1 +2 +40 +50 +4 +5 +6 +7 +8 +9 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 88755bd..bf775a6 100644 --- a/level_0/f_utf/tests/unit/c/data-utf.c +++ b/level_0/f_utf/tests/unit/c/data-utf.c @@ -19,11 +19,6 @@ FILE *data__bytesequence_file_open__control(void) { return fopen("./data/tests/bytesequences/control-all.txt", "r"); } -FILE *data__bytesequence_file_open__decimal(void) { - - return fopen("./data/tests/bytesequences/decimal-all.txt", "r"); -} - FILE *data__bytesequence_file_open__digit(void) { return fopen("./data/tests/bytesequences/digit-all.txt", "r"); @@ -137,12 +132,12 @@ ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * const char return bytes; } -FILE *data__value_file_open__decimal(void) { +FILE *data__value_file_open__digit(void) { - return fopen("./data/tests/values/decimal-all.txt", "r"); + return fopen("./data/tests/values/digit-all.txt", "r"); } -ssize_t data__value_get_line_long_long(FILE * const file, uint32_t * const value) { +ssize_t data__value_get_line_long_long(FILE * const file, uint64_t * const value) { size_t length = 0; char *line = 0; @@ -150,7 +145,7 @@ ssize_t data__value_get_line_long_long(FILE * const file, uint32_t * const value const ssize_t bytes = getline(&line, &length, file); if (bytes > 0) { - *value = (uint32_t) atol(line); + *value = (uint64_t) atoll(line); } if (line) { 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 b1ee533..e1bcfe1 100644 --- a/level_0/f_utf/tests/unit/c/data-utf.h +++ b/level_0/f_utf/tests/unit/c/data-utf.h @@ -68,21 +68,6 @@ extern FILE *data__bytesequence_file_open__combining(void); extern FILE *data__bytesequence_file_open__control(void); /** - * Open the "decimal" 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/decimal-all.txt". - * - * @return - * Non-zero on success. - * 0 on failure. - * - * @see fopen() - */ -extern FILE *data__bytesequence_file_open__decimal(void); - -/** * Open the "digit" bytesequence file. * * This assumes the following: @@ -323,7 +308,7 @@ extern ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * con * * 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/values/decimal_number-all.txt". + * - The file path is "data/tests/values/digit-all.txt". * * @return * Non-zero on success. @@ -331,7 +316,7 @@ extern ssize_t data__bytesequence_get_line(FILE * const file, f_utf_char_t * con * * @see fopen() */ -extern FILE *data__value_file_open__decimal(void); +extern FILE *data__value_file_open__digit(void); /** * Simple line reader that converts the line into a long long. @@ -351,10 +336,10 @@ extern FILE *data__value_file_open__decimal(void); * 0 on success and end of file is reached. * -1 on failure. * - * @see atol() + * @see atoll() * @see getline() */ -extern ssize_t data__value_get_line_long_long(FILE * const file, uint32_t * const value); +extern ssize_t data__value_get_line_long_long(FILE * const file, uint64_t * const value); #ifdef __cplusplus } // extern "C" diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_decimal.c b/level_0/f_utf/tests/unit/c/test-utf-character_is_decimal.c deleted file mode 100644 index 8c2efed..0000000 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_decimal.c +++ /dev/null @@ -1,47 +0,0 @@ -#include "test-utf.h" -#include "test-utf-character_is_decimal.h" - -#ifdef __cplusplus -extern "C" { -#endif - -void test__f_utf_character_is_decimal__works(void **state) { - - { - FILE *file = data__bytesequence_file_open__decimal(); - FILE *file_number = data__value_file_open__decimal(); - - assert_non_null(file); - assert_non_null(file_number); - - f_utf_char_t sequence = 0; - ssize_t bytes = 0; - ssize_t bytes_number = 0; - uint32_t number = 0; - f_array_length_t line = 0; - - do { - bytes = data__bytesequence_get_line(file, &sequence); - bytes_number = data__value_get_line_long_long(file_number, &number); - - if (bytes > 0 && bytes_number > 0) { - uint32_t value = F_type_size_max_32_unsigned_d; - - const f_status_t status = f_utf_character_is_decimal(sequence, &value); - - assert_int_equal(status, F_true); - assert_int_equal(value, number); - } - - ++line; - - } while (bytes > 0 && bytes_number > 0); - - fclose(file); - fclose(file_number); - } -} - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_0/f_utf/tests/unit/c/test-utf-character_is_decimal.h b/level_0/f_utf/tests/unit/c/test-utf-character_is_decimal.h deleted file mode 100644 index 326307e..0000000 --- a/level_0/f_utf/tests/unit/c/test-utf-character_is_decimal.h +++ /dev/null @@ -1,20 +0,0 @@ -/** - * FLL - Level 0 - * - * Project: UTF - * API Version: 0.5 - * Licenses: lgpl-2.1-or-later - * - * Test the function in the utf project. - */ -#ifndef _TEST__F_utf_character_is_decimal_h -#define _TEST__F_utf_character_is_decimal_h - -/** - * Test that the function works. - * - * @see f_utf_character_is_decimal() - */ -extern void test__f_utf_character_is_decimal__works(void **state); - -#endif // _TEST__F_utf_character_is_decimal_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 37dd1aa..3d37a48 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 @@ -9,28 +9,36 @@ void test__f_utf_character_is_digit__works(void **state) { { FILE *file = data__bytesequence_file_open__digit(); + FILE *file_number = data__value_file_open__digit(); assert_non_null(file); + assert_non_null(file_number); f_utf_char_t sequence = 0; ssize_t bytes = 0; - + ssize_t bytes_number = 0; + uint64_t number = 0; f_array_length_t line = 0; do { bytes = data__bytesequence_get_line(file, &sequence); + bytes_number = data__value_get_line_long_long(file_number, &number); + + if (bytes > 0 && bytes_number > 0) { + uint64_t value = F_type_size_max_64_unsigned_d; - if (bytes > 0) { - const f_status_t status = f_utf_character_is_digit(sequence); + const f_status_t status = f_utf_character_is_digit(sequence, &value); assert_int_equal(status, F_true); + assert_int_equal(value, number); } ++line; - } while (bytes > 0); + } while (bytes > 0 && bytes_number > 0); fclose(file); + fclose(file_number); } } diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_decimal.c b/level_0/f_utf/tests/unit/c/test-utf-is_decimal.c deleted file mode 100644 index 53e1ba0..0000000 --- a/level_0/f_utf/tests/unit/c/test-utf-is_decimal.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "test-utf.h" -#include "test-utf-is_decimal.h" - -#ifdef __cplusplus -extern "C" { -#endif - -void test__f_utf_is_decimal__works(void **state) { - - { - FILE *file = data__bytesequence_file_open__decimal(); - FILE *file_number = data__value_file_open__decimal(); - - assert_non_null(file); - assert_non_null(file_number); - - f_utf_char_t sequence = 0; - ssize_t bytes = 0; - ssize_t bytes_number = 0; - uint32_t number = 0; - f_array_length_t line = 0; - - do { - bytes = data__bytesequence_get_line(file, &sequence); - bytes_number = data__value_get_line_long_long(file_number, &number); - - if (bytes > 0 && bytes_number > 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); - } - } - } - - uint32_t value = F_type_size_max_32_unsigned_d; - - const f_status_t status = f_utf_is_decimal(buffer, 5, &value); - - assert_int_equal(status, F_true); - assert_int_equal(value, number); - } - - ++line; - - } while (bytes > 0 && bytes_number > 0); - - fclose(file); - fclose(file_number); - } -} - -#ifdef __cplusplus -} // extern "C" -#endif diff --git a/level_0/f_utf/tests/unit/c/test-utf-is_decimal.h b/level_0/f_utf/tests/unit/c/test-utf-is_decimal.h deleted file mode 100644 index 3d795ee..0000000 --- a/level_0/f_utf/tests/unit/c/test-utf-is_decimal.h +++ /dev/null @@ -1,20 +0,0 @@ -/** - * FLL - Level 0 - * - * Project: UTF - * API Version: 0.5 - * Licenses: lgpl-2.1-or-later - * - * Test the function in the utf project. - */ -#ifndef _TEST__F_utf_is_decimal_h -#define _TEST__F_utf_is_decimal_h - -/** - * Test that the function works. - * - * @see f_utf_is_decimal() - */ -extern void test__f_utf_is_decimal__works(void **state); - -#endif // _TEST__F_utf_is_decimal_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 37683e8..343f090 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 @@ -9,18 +9,22 @@ void test__f_utf_is_digit__works(void **state) { { FILE *file = data__bytesequence_file_open__digit(); + FILE *file_number = data__value_file_open__digit(); assert_non_null(file); + assert_non_null(file_number); f_utf_char_t sequence = 0; ssize_t bytes = 0; - + ssize_t bytes_number = 0; + uint64_t number = 0; f_array_length_t line = 0; do { bytes = data__bytesequence_get_line(file, &sequence); + bytes_number = data__value_get_line_long_long(file_number, &number); - if (bytes > 0) { + if (bytes > 0 && bytes_number > 0) { const uint8_t width = macro_f_utf_char_t_width(sequence); char buffer[5] = { 0, 0, 0, 0, 0 }; @@ -38,16 +42,20 @@ void test__f_utf_is_digit__works(void **state) { } } - const f_status_t status = f_utf_is_digit(buffer, 5); + uint64_t value = F_type_size_max_64_unsigned_d; + + const f_status_t status = f_utf_is_digit(buffer, 5, &value); assert_int_equal(status, F_true); + assert_int_equal(value, number); } ++line; - } while (bytes > 0); + } while (bytes > 0 && bytes_number > 0); fclose(file); + fclose(file_number); } } 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 b5e8079..8a48129 100644 --- a/level_0/f_utf/tests/unit/c/test-utf.c +++ b/level_0/f_utf/tests/unit/c/test-utf.c @@ -25,15 +25,13 @@ int main(void) { 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_decimal__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_decimal__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), + cmocka_unit_test(test__f_utf_character_is_numeric__works), cmocka_unit_test(test__f_utf_character_is_phonetic__works), cmocka_unit_test(test__f_utf_character_is_private__works), cmocka_unit_test(test__f_utf_character_is_punctuation__works), @@ -137,15 +135,13 @@ int main(void) { cmocka_unit_test(test__f_utf_dynamicss_resize__works), //cmocka_unit_test(test__f_utf_is_alphabetic__works), - //cmocka_unit_test(test__f_utf_is_alphabetic_decimal__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_decimal__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), + cmocka_unit_test(test__f_utf_is_numeric__works), cmocka_unit_test(test__f_utf_is_phonetic__works), cmocka_unit_test(test__f_utf_is_private__works), cmocka_unit_test(test__f_utf_is_punctuation__works), 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 a8069e9..92ca332 100644 --- a/level_0/f_utf/tests/unit/c/test-utf.h +++ b/level_0/f_utf/tests/unit/c/test-utf.h @@ -36,7 +36,7 @@ #include "test-utf-character_is_alphabetic.h" #include "test-utf-character_is_combining.h" #include "test-utf-character_is_control.h" -#include "test-utf-character_is_decimal.h" +#include "test-utf-character_is_digit.h" #include "test-utf-character_is_digit.h" #include "test-utf-character_is_emoji.h" #include "test-utf-character_is_numeric.h" @@ -105,7 +105,7 @@ #include "test-utf-is_alphabetic.h" #include "test-utf-is_combining.h" #include "test-utf-is_control.h" -#include "test-utf-is_decimal.h" +#include "test-utf-is_digit.h" #include "test-utf-is_digit.h" #include "test-utf-is_emoji.h" #include "test-utf-is_numeric.h" diff --git a/level_1/fl_conversion/c/private-conversion.c b/level_1/fl_conversion/c/private-conversion.c index 7fa6642..fc01555 100644 --- a/level_1/fl_conversion/c/private-conversion.c +++ b/level_1/fl_conversion/c/private-conversion.c @@ -433,7 +433,7 @@ extern "C" { } } - if (f_conversion_character_is_decimal(string[i]) == F_true) { + if (f_conversion_character_is_digit(string[i]) == F_true) { mode = 10; break; @@ -577,7 +577,7 @@ extern "C" { sign_found = -1; } - if (f_conversion_character_is_decimal(string[i]) == F_true) { + if (f_conversion_character_is_digit(string[i]) == F_true) { mode = 10; break; diff --git a/level_2/fll_fss_status_string/c/fss_status_string.c b/level_2/fll_fss_status_string/c/fss_status_string.c index 8db8904..f603f3a 100644 --- a/level_2/fll_fss_status_string/c/fss_status_string.c +++ b/level_2/fll_fss_status_string/c/fss_status_string.c @@ -44,7 +44,7 @@ extern "C" { } // Numbers are not valid status code strings. - status = f_conversion_character_is_decimal(name.string[0]); + status = f_conversion_character_is_digit(name.string[0]); if (status == F_true) { return F_status_set_error(F_data); diff --git a/level_2/fll_fss_status_string/c/fss_status_string.h b/level_2/fll_fss_status_string/c/fss_status_string.h index d117d99..bfa5809 100644 --- a/level_2/fll_fss_status_string/c/fss_status_string.h +++ b/level_2/fll_fss_status_string/c/fss_status_string.h @@ -107,7 +107,7 @@ extern "C" { * F_data (with error bit) if not found. * F_parameter (with error bit) if a parameter is invalid. * - * Errors (with error bit) from: f_conversion_character_is_decimal(). + * Errors (with error bit) from: f_conversion_character_is_digit(). */ #ifndef _di_fll_fss_status_string_from_ extern f_status_t fll_fss_status_string_from(const f_string_static_t name, f_status_t * const code); diff --git a/level_2/fll_status_string/c/status_string.c b/level_2/fll_status_string/c/status_string.c index 8b7a1bc..5f2cdf5 100644 --- a/level_2/fll_status_string/c/status_string.c +++ b/level_2/fll_status_string/c/status_string.c @@ -17,7 +17,7 @@ extern "C" { } // Numbers are not valid status code strings. - if ((status = f_conversion_character_is_decimal(name.string[0])) == F_true) { + if ((status = f_conversion_character_is_digit(name.string[0])) == F_true) { return F_status_set_error(F_data); } diff --git a/level_2/fll_status_string/c/status_string.h b/level_2/fll_status_string/c/status_string.h index af96ed2..86480e0 100644 --- a/level_2/fll_status_string/c/status_string.h +++ b/level_2/fll_status_string/c/status_string.h @@ -45,7 +45,7 @@ extern "C" { * F_data (with error bit) if not found. * F_parameter (with error bit) if a parameter is invalid. * - * Errors (with error bit) from: f_conversion_character_is_decimal(). + * Errors (with error bit) from: f_conversion_character_is_digit(). */ #ifndef _di_fll_status_string_from_ extern f_status_t fll_status_string_from(const f_string_static_t name, f_status_t * const code); diff --git a/level_3/controller/c/controller/private-controller.c b/level_3/controller/c/controller/private-controller.c index 36be1b1..9ce2d6a 100644 --- a/level_3/controller/c/controller/private-controller.c +++ b/level_3/controller/c/controller/private-controller.c @@ -786,7 +786,7 @@ extern "C" { if (name.string[i] == '_') continue; - status = f_utf_is_alphabetic_digit(name.string, name.used); + status = f_utf_is_alphabetic_digit(name.string, name.used, 0); if (F_status_is_error(status)) return status; if (status == F_false) return F_false; diff --git a/level_3/controller/c/controller/private-controller.h b/level_3/controller/c/controller/private-controller.h index 618b113..a853151 100644 --- a/level_3/controller/c/controller/private-controller.h +++ b/level_3/controller/c/controller/private-controller.h @@ -381,10 +381,10 @@ extern "C" { * F_none if there is no string to validate (used = 0). * * Errors (with error bit) from: f_utf_is_alphabetic(). - * Errors (with error bit) from: f_utf_is_alphabetic_decimal(). + * Errors (with error bit) from: f_utf_is_alphabetic_digit(). * * @see f_utf_is_alphabetic() - * @see f_utf_is_alphabetic_decimal() + * @see f_utf_is_alphabetic_digit() */ #ifndef _di_controller_validate_define_name_ extern f_status_t controller_validate_environment_name(const f_string_static_t name) F_attribute_visibility_internal_d; -- 1.8.3.1