unicode.c: remove utf8_decode
This commit is contained in:
parent
f0353900ae
commit
2de6b5083a
35
unicode.c
35
unicode.c
@ -13,41 +13,6 @@ size_t utf8_chsize(uint32_t ch) {
|
|||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const uint8_t masks[] = {
|
|
||||||
0x7F,
|
|
||||||
0x1F,
|
|
||||||
0x0F,
|
|
||||||
0x07,
|
|
||||||
0x03,
|
|
||||||
0x01
|
|
||||||
};
|
|
||||||
|
|
||||||
uint32_t utf8_decode(const char **char_str) {
|
|
||||||
uint8_t **s = (uint8_t **)char_str;
|
|
||||||
|
|
||||||
uint32_t cp = 0;
|
|
||||||
if (**s < 128) {
|
|
||||||
// shortcut
|
|
||||||
cp = **s;
|
|
||||||
++*s;
|
|
||||||
return cp;
|
|
||||||
}
|
|
||||||
int size = utf8_size((char *)*s);
|
|
||||||
if (size == -1) {
|
|
||||||
++*s;
|
|
||||||
return UTF8_INVALID;
|
|
||||||
}
|
|
||||||
uint8_t mask = masks[size - 1];
|
|
||||||
cp = **s & mask;
|
|
||||||
++*s;
|
|
||||||
while (--size) {
|
|
||||||
cp <<= 6;
|
|
||||||
cp |= **s & 0x3f;
|
|
||||||
++*s;
|
|
||||||
}
|
|
||||||
return cp;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t utf8_encode(char *str, uint32_t ch) {
|
size_t utf8_encode(char *str, uint32_t ch) {
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
uint8_t first;
|
uint8_t first;
|
||||||
|
Loading…
Reference in New Issue
Block a user