2 #define UTF8_COMPUTE(Char, Mask, Len) \
8 else if ((Char & 0xe0) == 0xc0) \
13 else if ((Char & 0xf0) == 0xe0) \
18 else if ((Char & 0xf8) == 0xf0) \
23 else if ((Char & 0xfc) == 0xf8) \
28 else if ((Char & 0xfe) == 0xfc) \
36 #define UTF8_GET(Result, Chars, Count, Mask, Len) \
37 (Result) = (Chars)[0] & (Mask); \
38 for ((Count) = 1; (Count) < (Len); ++(Count)) \
40 if (((Chars)[(Count)] & 0xc0) != 0x80) \
46 (Result) |= ((Chars)[(Count)] & 0x3f); \
49 void get_utf8_char(const unsigned char **ptr)
53 unsigned char c = (unsigned char) **ptr;
55 UTF8_COMPUTE(c, mask, len);
59 UTF8_GET(result, *ptr, i, mask, len);