| 792 | }; |
| 793 | |
| 794 | static size_t utf8_len(char src) { |
| 795 | const size_t lookup[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4 }; |
| 796 | uint8_t highbits = static_cast<uint8_t>(src) >> 4; |
| 797 | return lookup[highbits]; |
| 798 | } |
| 799 | |
| 800 | // mark each byte with its utf8 unit number. |
| 801 | // returns the number of utf8 characters. |