module grapheme; const uint GRAPHEME_INVALID_CODEPOINT = 0xFFFD; enum BidirectionalDirection { GRAPHEME_BIDIRECTIONAL_DIRECTION_NEUTRAL, GRAPHEME_BIDIRECTIONAL_DIRECTION_LTR, GRAPHEME_BIDIRECTIONAL_DIRECTION_RTL, } fn isz bidirectional_get_line_embedding_levels(uint *, isz, ichar *, isz) @extern("grapheme_bidirectional_get_line_embedding_levels"); fn isz bidirectional_preprocess_paragraph(uint *, isz, BidirectionalDirection, uint *, isz, BidirectionalDirection *) @extern("grapheme_bidirectional_preprocess_paragraph"); fn isz bidirectional_reorder_line(uint *, uint *, isz, uint *, isz) @extern("grapheme_bidirectional_reorder_line"); fn isz decode_utf8(char *, isz, uint *) @extern("grapheme_decode_utf8"); fn isz encode_utf8(uint, char *, isz) @extern("grapheme_encode_utf8"); fn bool is_character_break(uint, uint, ushort *) @extern("grapheme_is_character_break"); fn bool is_lowercase(uint *, isz, isz *) @extern("grapheme_is_lowercase"); fn bool is_titlecase(uint *, isz, isz *) @extern("grapheme_is_titlecase"); fn bool is_uppercase(uint *, isz, isz *) @extern("grapheme_is_uppercase"); fn bool is_lowercase_utf8(char *, isz, isz *) @extern("grapheme_is_lowercase_utf8"); fn bool is_titlecase_utf8(char *, isz, isz *) @extern("grapheme_is_titlecase_utf8"); fn bool is_uppercase_utf8(char *, isz, isz *) @extern("grapheme_is_uppercase_utf8"); fn isz next_character_break(uint *, isz) @extern("grapheme_next_character_break"); fn isz next_line_break(uint *, isz) @extern("grapheme_next_line_break"); fn isz next_sentence_break(uint *, isz) @extern("grapheme_next_sentence_break"); fn isz next_word_break(uint *, isz) @extern("grapheme_next_word_break"); fn isz next_character_break_utf8(char *, isz) @extern("grapheme_next_character_break_utf8"); fn isz next_line_break_utf8(char *, isz) @extern("grapheme_next_line_break_utf8"); fn isz next_sentence_break_utf8(char *, isz) @extern("grapheme_next_sentence_break_utf8"); fn isz next_word_break_utf8(char *, isz) @extern("grapheme_next_word_break_utf8"); fn isz to_lowercase(uint *, isz, uint *, isz) @extern("grapheme_to_lowercase"); fn isz to_titlecase(uint *, isz, uint *, isz) @extern("grapheme_to_titlecase"); fn isz to_uppercase(uint *, isz, uint *, isz) @extern("grapheme_to_uppercase"); fn isz to_lowercase_utf8(char *, isz, char *, isz) @extern("grapheme_to_lowercase_utf8"); fn isz to_titlecase_utf8(char *, isz, char *, isz) @extern("grapheme_to_titlecase_utf8"); fn isz to_uppercase_utf8(char *, isz, char *, isz) @extern("grapheme_to_uppercase_utf8");