pub def Codepoint: u32
pub val REPLACEMENT: Codepoint = 0xFFFD
pub val MAX_CODEPOINT: Codepoint = 0x10FFFF
pub fun byte_len(first_byte: u8) usize;
从 UTF-8 首字节返回序列长度
first_byte:UTF-8 序列的第一个字节 ret:有效首字节返回 1-4,无效返回 0
pub fun codepoint_len(cp: Codepoint) usize;
返回编码一个码点(codepoint)所需的字节数
cp:要测量的码点 ret:有效码点返回 1-4,如果大于 U+10FFFF 则返回 0
pub fun is_continuation(b: u8) bool;
如果该字节是 UTF-8 连续字节(0x80-0xBF)则为 true
b:要测试的字节 ret:如果是连续字节则为 true
pub fun encode(cp: Codepoint, buf: *u8, len: usize) usize;
将码点编码到字节缓冲区中
cp:要编码的码点 buf:目标缓冲区 len:buf 的大小(以字节为单位) ret:写入的字节数(如果 buf 太小或码点无效则为 0)
pub fun decode(buf: *u8, len: usize, cp: *Codepoint) usize;
从字节缓冲区解码一个码点
buf:源缓冲区 len:可用字节数 cp:用于写入解码后码点的指针 ret:消耗的字节数(如果无效或为空则为 0;出错时将 *cp 设为 REPLACEMENT)
pub fun validate(buf: *u8, len: usize) bool;
检查字节缓冲区是否包含有效的 UTF-8
buf:源缓冲区 len:字节数 ret:如果整个缓冲区都是有效的 UTF-8 则为 true
pub fun count(buf: *u8, len: usize) usize;
计算 UTF-8 字节缓冲区中的码点数量
buf:源缓冲区 len:字节数 ret:码点数量(计算序列起始处,而不是字节数)