diff --git a/src/string_utils.c b/src/string_utils.c index 6b1b14ab..79083e09 100644 --- a/src/string_utils.c +++ b/src/string_utils.c @@ -390,6 +390,19 @@ uint32_array *unicode_codepoints(const char *str) { return a; } +bool unicode_equals(uint32_array *u1_array, uint32_array *u2_array) { + size_t len1 = u1_array->n; + size_t len2 = u2_array->n; + if (len1 != len2) return false; + + uint32_t *u1 = u1_array->a; + uint32_t *u2 = u2_array->a; + for (size_t i = 0; i < len1; i++) { + if (u1[i] != u2[i]) return false; + } + return true; +} + int utf8_compare_len(const char *str1, const char *str2, size_t len) { if (len == 0) return 0; diff --git a/src/string_utils.h b/src/string_utils.h index 29683f91..eb27651f 100644 --- a/src/string_utils.h +++ b/src/string_utils.h @@ -88,6 +88,7 @@ bool utf8_equal_ignore_separators(const char *str1, const char *str2); ssize_t utf8_len(const char *str, size_t len); uint32_array *unicode_codepoints(const char *str); +bool unicode_equals(uint32_array *u1_array, uint32_array *u2_array); bool utf8_is_hyphen(int32_t ch); bool utf8_is_letter(int cat);