#include "lib/unicode.h"
uns
-utf8_strlen(byte *str)
+utf8_strlen(const byte *str)
{
uns len = 0;
while (*str)
}
uns
-utf8_strnlen(byte *str, uns n)
+utf8_strnlen(const byte *str, uns n)
{
uns len = 0;
- byte *end = str + n;
+ const byte *end = str + n;
while (str < end)
{
UTF8_SKIP(str);
return len;
}
-uns
-utf8_check(byte *s)
-{
-#define UTF8_CHECK_NEXT if (unlikely((*s & 0xc0) != 0x80)) goto bad; s++
- while (*s)
- {
- uns u = *s++;
- if (u < 0x80)
- ;
- else if (unlikely(u < 0xc0))
- {
-bad:
- return 0;
- }
- else if (u < 0xe0)
- {
- UTF8_CHECK_NEXT;
- }
- else if (likely(u < 0xf0))
- {
- UTF8_CHECK_NEXT;
- UTF8_CHECK_NEXT;
- }
- else
- goto bad;
- }
- return 1;
-}
-
#ifdef TEST
#include <string.h>
#include <stdio.h>