=> 7ff1adf809c047a349243e6e142a08d52dd69716
[1mdiff --git a/include/the_Foundation/string.h b/include/the_Foundation/string.h[m [1mindex 742d82d..6d16dd4 100644[m [1m--- a/include/the_Foundation/string.h[m [1m+++ b/include/the_Foundation/string.h[m [36m@@ -280,6 +280,7 @@[m [miLocalDef iRangecc range_CStr(const char *cstr) {[m const char * cstr_Rangecc (iRangecc); /* returns NULL-terminated collected copy */[m const iString * string_Rangecc (iRangecc); /* returns a collected String */[m [m [32m+[m[32miBool isUtf8_Rangecc (iRangecc); /* checks if the range is well-formed UTF-8 */[m size_t length_Rangecc (iRangecc); /* returns number of characters in the range */[m [m #define cmp_Rangecc(d, cstr) cmpCStrSc_Rangecc((d), (cstr), &iCaseSensitive)[m [1mdiff --git a/src/string.c b/src/string.c[m [1mindex 3f786bc..33e9ee9 100644[m [1m--- a/src/string.c[m [1m+++ b/src/string.c[m [36m@@ -390,6 +390,10 @@[m [msize_t length_String(const iString *d) {[m return u8_mbsnlen((const uint8_t *) cstr_String(d), size_String(d));[m }[m [m [32m+[m[32miBool isUtf8_Rangecc(iRangecc d) {[m [32m+[m[32m return u8_check((const uint8_t *) d.start, size_Range(&d)) == NULL;[m [32m+[m[32m}[m [32m+[m size_t length_Rangecc(const iRangecc d) {[m /*[m size_t n = 0;[m
text/gemini; charset=utf-8
This content has been proxied by September (ba2dc).