From 5ecd8885556cdfc07d2bccaede45f86e329da637 Mon Sep 17 00:00:00 2001 From: Oxore Date: Thu, 3 Jan 2019 22:45:18 +0300 Subject: Move unicode module to separate library lib8 --- src/unicode.c | 54 ------------------------------------------------------ 1 file changed, 54 deletions(-) delete mode 100644 src/unicode.c (limited to 'src/unicode.c') diff --git a/src/unicode.c b/src/unicode.c deleted file mode 100644 index de25ffb..0000000 --- a/src/unicode.c +++ /dev/null @@ -1,54 +0,0 @@ -#include -#include - -#include "unicode.h" - -static inline size_t utf8_char_len(unsigned char c) -{ - if (c > 0x00 && c < 0xC0) - return 1; - else if (c >= 0xC2 && c < 0xE0) - return 2; - else if (c >= 0xE0 && c < 0xF0) - return 3; - else if (c >= 0xF0 && c < 0xF5) - return 4; - else - return 0; -} - -size_t utf8_strlen(char *string) -{ - size_t len = 0, keep = 0; - for (char *c = string; *c; (keep ? --keep : ++len), ++c) - if (!keep) - keep = (keep = utf8_char_len(*c)) ? keep - 1 : keep; - return len; -} - -void utf8to32_strcpy(wchar_t *dest, char *src) -{ - wchar_t *dc = dest; - char *c = src; - size_t len = 0; - while (*c) { - int clen = utf8_char_len(*c); - if (clen == 1) { - dc[len] = c[0] & 0x7f; - } else if (clen == 2) { - dc[len] = ((c[0] & 0x1f) << 6) | ((c[1] & 0x3f) << 0); - } else if (clen == 3) { - dc[len] = ((c[0] & 0x0f) << 12) | ((c[1] & 0x3f) << 6) - | ((c[2] & 0x3f) << 0); - } else if (clen == 4) { - dc[len] = ((c[0] & 0x07) << 18) | ((c[1] & 0x3f) << 12) - | ((c[2] & 0x3f) << 6) | ((c[3] & 0x3f) << 0); - } else { - dc[len] = 0; - return; - } - c += clen; - ++len; - } - dc[len] = 0; -} -- cgit v1.2.3