Blob


1 /* See LICENSE file for copyright and license details. */
2 #ifndef GRAPHEME_H
3 #define GRAPHEME_H
5 #include <stdbool.h>
6 #include <stddef.h>
7 #include <stdint.h>
9 #define GRAPHEME_INVALID_CODEPOINT UINT32_C(0xFFFD)
11 size_t grapheme_decode_utf8(const char *, size_t, uint_least32_t *);
12 size_t grapheme_encode_utf8(uint_least32_t, char *, size_t);
14 bool grapheme_is_character_break(uint_least32_t, uint_least32_t, uint_least16_t *);
16 bool grapheme_is_lowercase(const uint_least32_t *, size_t, size_t *);
17 bool grapheme_is_titlecase(const uint_least32_t *, size_t, size_t *);
18 bool grapheme_is_uppercase(const uint_least32_t *, size_t, size_t *);
20 bool grapheme_is_lowercase_utf8(const char *, size_t, size_t *);
21 bool grapheme_is_titlecase_utf8(const char *, size_t, size_t *);
22 bool grapheme_is_uppercase_utf8(const char *, size_t, size_t *);
24 size_t grapheme_next_character_break(const uint_least32_t *, size_t);
25 size_t grapheme_next_line_break(const uint_least32_t *, size_t);
26 size_t grapheme_next_sentence_break(const uint_least32_t *, size_t);
27 size_t grapheme_next_word_break(const uint_least32_t *, size_t);
29 size_t grapheme_next_character_break_utf8(const char *, size_t);
30 size_t grapheme_next_line_break_utf8(const char *, size_t);
31 size_t grapheme_next_sentence_break_utf8(const char *, size_t);
32 size_t grapheme_next_word_break_utf8(const char *, size_t);
34 size_t grapheme_to_lowercase(const uint_least32_t *, size_t, uint_least32_t *, size_t);
35 size_t grapheme_to_titlecase(const uint_least32_t *, size_t, uint_least32_t *, size_t);
36 size_t grapheme_to_uppercase(const uint_least32_t *, size_t, uint_least32_t *, size_t);
38 size_t grapheme_to_lowercase_utf8(const char *, size_t, char *, size_t);
39 size_t grapheme_to_titlecase_utf8(const char *, size_t, char *, size_t);
40 size_t grapheme_to_uppercase_utf8(const char *, size_t, char *, size_t);
42 #endif /* GRAPHEME_H */