#ifndef MGL_UTF8_H #define MGL_UTF8_H #include #include #include /* Returns false on failure. |decoded_codepoint| is set to |str[0]| if size > 0 and |codepoint_length| is set to 1 */ bool mgl_utf8_decode(const unsigned char *str, size_t size, uint32_t *decoded_codepoint, size_t *codepoint_length); /* |str| should be the start of the utf8 string and |size| is the size of the string. Returns the index of the start of the codepoint that starts at or before |offset|, or if the string contains invalid utf8 then the index to the invalid character is returned. Returns 0 if start of codepoint is not found. */ size_t mgl_utf8_get_start_of_codepoint(const unsigned char *str, size_t size, size_t offset); /* Returns |size| if not found */ size_t mgl_utf8_index_to_offset(const unsigned char *str, size_t size, size_t index); #endif /* MGL_UTF8_H */