grapheme.h - libgrapheme - unicode string library
 (HTM) git clone git://git.suckless.org/libgrapheme
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       grapheme.h (2782B)
       ---
            1 /* See LICENSE file for copyright and license details. */
            2 #ifndef GRAPHEME_H
            3 #define GRAPHEME_H
            4 
            5 #include <stdbool.h>
            6 #include <stddef.h>
            7 #include <stdint.h>
            8 
            9 #define GRAPHEME_INVALID_CODEPOINT UINT32_C(0xFFFD)
           10 
           11 enum grapheme_bidirectional_direction {
           12         GRAPHEME_BIDIRECTIONAL_DIRECTION_NEUTRAL,
           13         GRAPHEME_BIDIRECTIONAL_DIRECTION_LTR,
           14         GRAPHEME_BIDIRECTIONAL_DIRECTION_RTL,
           15 };
           16 
           17 size_t grapheme_bidirectional_get_line_embedding_levels(const uint_least32_t *,
           18                                                         size_t, int_least8_t *,
           19                                                         size_t);
           20 
           21 size_t grapheme_bidirectional_preprocess_paragraph(
           22         const uint_least32_t *, size_t, enum grapheme_bidirectional_direction,
           23         uint_least32_t *, size_t, enum grapheme_bidirectional_direction *);
           24 
           25 size_t grapheme_bidirectional_reorder_line(const uint_least32_t *,
           26                                            const uint_least32_t *, size_t,
           27                                            uint_least32_t *, size_t);
           28 
           29 size_t grapheme_decode_utf8(const char *, size_t, uint_least32_t *);
           30 size_t grapheme_encode_utf8(uint_least32_t, char *, size_t);
           31 
           32 bool grapheme_is_character_break(uint_least32_t, uint_least32_t,
           33                                  uint_least16_t *);
           34 
           35 bool grapheme_is_lowercase(const uint_least32_t *, size_t, size_t *);
           36 bool grapheme_is_titlecase(const uint_least32_t *, size_t, size_t *);
           37 bool grapheme_is_uppercase(const uint_least32_t *, size_t, size_t *);
           38 
           39 bool grapheme_is_lowercase_utf8(const char *, size_t, size_t *);
           40 bool grapheme_is_titlecase_utf8(const char *, size_t, size_t *);
           41 bool grapheme_is_uppercase_utf8(const char *, size_t, size_t *);
           42 
           43 size_t grapheme_next_character_break(const uint_least32_t *, size_t);
           44 size_t grapheme_next_line_break(const uint_least32_t *, size_t);
           45 size_t grapheme_next_sentence_break(const uint_least32_t *, size_t);
           46 size_t grapheme_next_word_break(const uint_least32_t *, size_t);
           47 
           48 size_t grapheme_next_character_break_utf8(const char *, size_t);
           49 size_t grapheme_next_line_break_utf8(const char *, size_t);
           50 size_t grapheme_next_sentence_break_utf8(const char *, size_t);
           51 size_t grapheme_next_word_break_utf8(const char *, size_t);
           52 
           53 size_t grapheme_to_lowercase(const uint_least32_t *, size_t, uint_least32_t *,
           54                              size_t);
           55 size_t grapheme_to_titlecase(const uint_least32_t *, size_t, uint_least32_t *,
           56                              size_t);
           57 size_t grapheme_to_uppercase(const uint_least32_t *, size_t, uint_least32_t *,
           58                              size_t);
           59 
           60 size_t grapheme_to_lowercase_utf8(const char *, size_t, char *, size_t);
           61 size_t grapheme_to_titlecase_utf8(const char *, size_t, char *, size_t);
           62 size_t grapheme_to_uppercase_utf8(const char *, size_t, char *, size_t);
           63 
           64 #endif /* GRAPHEME_H */