acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
aaa__unicode_character.h
1#pragma
2
3// return number of characters need to be consumed to parse a Unicode Character
4inline ::i32 unicode_len(const ::ansi_character * pszChar);
5inline ::i32 unicode_len(const ::wd16_character * pszChar) { return utf16_is_1st_surrogate(*pszChar) ? 2 : 1; }
6inline ::i32 unicode_len(const ::wd32_character * pszChar) { return 1; }
7
8
9inline ::i32 ansichar_unicode_len(::wd32_character i);
10inline ::i32 wd16char_unicode_len(::wd32_character i) { return utf32_is_surrogated(i) ? 2 : 1; }
11inline ::i32 wd32char_unicode_len(::wd32_character i) { return 1; }
12
13// return number of characters needed to represent the Unicode Character
14inline ::i32 char_unicode_len(const ::ansi_character *, ::wd32_character i) { return ansichar_unicode_len(i); }
15inline ::i32 char_unicode_len(const ::wd16_character *, ::wd32_character i) { return wd16char_unicode_len(i); }
16inline ::i32 char_unicode_len(const ::wd32_character *, ::wd32_character i) { return wd32char_unicode_len(i); }
17
18
19
20
21
22inline bool unicode_is_whitespace(::i32 i);
23inline bool unicode_is_space_char(::i32 i);
24inline ::i32 unicode_to_lower_case(::i32 i);
25inline ::i32 unicode_to_upper_case(::i32 i);
26inline ::i32 unicode_to_title_case(::i32 i);
27inline ::i32 unicode_to_numeric_value(::i32 i, ::f32 * f);
28
29
30inline bool unicode_is_lower_case(::i32 iUniIndex);
31inline bool unicode_is_upper_case(::i32 iUniIndex);
32inline bool unicode_is_title_case(::i32 iUniIndex);
33inline bool unicode_is_letter(::i32 iUniIndex);
34inline bool unicode_is_letter_or_digit(::i32 iUniIndex);
35inline bool unicode_is_digit(::i32 iUniIndex);
36inline bool unicode_is_number(::i32 iUniIndex);
37inline bool unicode_is_assigned(::i32 iUniIndex);
38inline bool unicode_is_space_char(::i32 iUniIndex);
39
40
41// bool is_whitespace(const ::scoped_string & scopedstrUtf8Char, const ::ansi_character * pszEnd);
42
43bool unicode_is_number(const ::scoped_string & scopedstrUtf8Char);
44// bool to_numeric_value(const ::scoped_string & scopedstrUtf8Char, ::f32 *f);
45
46inline ECharCategory unicode_get_category(::i32 i);
47inline ::i32 unicode_get_combining_class(::i32 i);
48inline bool unicode_is_mirrored(::i32 i);
49
50string unicode_get_category_name(const ::scoped_string & scopedstrUtf8Char);
51ECharCategory unicode_get_category(const ::scoped_string & scopedstrUtf8Char);
52
53::i32 unicode_get_combining_class(const ::scoped_string & scopedstrUtf8Char);
54bool unicode_is_mirrored(const ::scoped_string & scopedstrUtf8Char);
55
56::i32 unicode_size_of_tables();
57
58
59inline bool unicode_is_kanji(::i64 i) { return i >= 0x4E00 && i <= 0x9FBF; }
60inline bool unicode_is_hiragana(::i64 i) { return i >= 0x3040 && i <= 0x309F; }
61inline bool unicode_is_katakana(::i64 i) { return i >= 0x30A0 && i <= 0x30FF; }
62inline bool unicode_is_japanese(::i64 i) { return unicode_is_kanji(i) || unicode_is_hiragana(i) || unicode_is_katakana(i); }
63inline bool unicode_is_kanji(const ::scoped_string & scopedstrUtf8) { return unicode_is_kanji(unicode_index(scopedstrUtf8)); }
64inline bool unicode_is_hiragana(const ::scoped_string & scopedstrUtf8) { return unicode_is_hiragana(unicode_index(scopedstrUtf8)); }
65inline bool unicode_is_katakana(const ::scoped_string & scopedstrUtf8) { return unicode_is_katakana(unicode_index(scopedstrUtf8)); }
66inline bool unicode_is_japanese(const ::scoped_string & scopedstrUtf8) { return unicode_is_japanese(unicode_index(scopedstrUtf8)); }
67
68void * unicode_char_bidi_names_non_usage_warning();
69
70::i32 unicode_ref_tables();
71const_char_pointer unicode_get_category_name(::i32 i);
72
73
74