From 5fc1d7c7caffa7e5616a1681503dfea0fc582aae Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Fri, 20 Oct 2017 13:14:02 +0300 Subject: [PATCH] unichar: Add uni_is_valid_ucs4 --- src/lib/unichar.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/unichar.h b/src/lib/unichar.h index 546c8e101a..9c8fdc401f 100644 --- a/src/lib/unichar.h +++ b/src/lib/unichar.h @@ -30,6 +30,8 @@ #define UTF8_REPLACEMENT_CHAR_LEN 3 +#define UNICHAR_T_MAX 0x10ffff + typedef uint32_t unichar_t; ARRAY_DEFINE_TYPE(unichars, unichar_t); @@ -42,6 +44,12 @@ typedef int normalizer_func_t(const void *input, size_t size, extern const unsigned char utf8_replacement_char[UTF8_REPLACEMENT_CHAR_LEN]; extern const uint8_t *const uni_utf8_non1_bytes; +static inline bool ATTR_PURE uni_is_valid_ucs4(unichar_t chr) +{ + return (chr & 0xfff800) != UTF16_SURROGATE_HIGH_FIRST && + chr <= UNICHAR_T_MAX; +}; + /* Returns number of characters in a NUL-terminated unicode string */ unsigned int uni_strlen(const unichar_t *str) ATTR_PURE; /* Translates UTF-8 input to UCS-4 output. Returns 0 if ok, -1 if input was -- 2.47.3