blob: 1f08f551496cfdb167123aa03d5c0270a49432fe [file] [log] [blame]
/* See LICENSE file for copyright and license details. */
#ifndef GRAPHEME_H
#define GRAPHEME_H
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
struct grapheme_internal_heisenstate {
uint_least64_t determined;
uint_least64_t state;
};
typedef struct grapheme_internal_segmentation_state {
struct grapheme_internal_heisenstate cp0;
struct grapheme_internal_heisenstate cp1;
uint_least16_t flags;
} GRAPHEME_STATE;
#define GRAPHEME_INVALID_CODEPOINT UINT32_C(0xFFFD)
size_t grapheme_next_character_break(const char *, size_t);
bool grapheme_is_character_break(uint_least32_t, uint_least32_t, GRAPHEME_STATE *);
size_t grapheme_decode_utf8(const char *, size_t, uint_least32_t *);
size_t grapheme_encode_utf8(uint_least32_t, char *, size_t);
#endif /* GRAPHEME_H */