19#define l_isupper(c) ('A' <= (c) && (c) <= 'Z')
20#define l_islower(c) ('a' <= (c) && (c) <= 'z')
21#define l_isalpha(c) (l_isupper(c) || l_islower(c))
22#define l_isdigit(c) ('0' <= (c) && (c) <= '9')
23#define l_isxdigit(c) (l_isdigit(c) || ('A' <= (c) && (c) <= 'F') || ('a' <= (c) && (c) <= 'f'))
25int utf8_encode(int32_t codepoint,
char *buffer,
size_t *size);
28const char *
utf8_iterate(
const char *buffer,
size_t size, int32_t *codepoint);
size_t utf8_check_first(char byte)
int utf8_check_string(const char *string, size_t length)
const char * utf8_iterate(const char *buffer, size_t size, int32_t *codepoint)
int32_t decode_unicode_escape(const char *str)
size_t utf8_check_full(const char *buffer, size_t size, int32_t *codepoint)
int utf8_encode(int32_t codepoint, char *buffer, size_t *size)