Function nextCodepoint [src]

Prototype

pub fn nextCodepoint(it: *Utf16LeIterator) NextCodepointError!?u21

Parameters

it: *Utf16LeIterator

Possible Errors

DanglingSurrogateHalf
ExpectedSecondSurrogateHalf
UnexpectedSecondSurrogateHalf

Source

pub fn nextCodepoint(it: *Utf16LeIterator) NextCodepointError!?u21 { assert(it.i <= it.bytes.len); if (it.i == it.bytes.len) return null; var code_units: [2]u16 = undefined; code_units[0] = mem.readInt(u16, it.bytes[it.i..][0..2], .little); it.i += 2; if (utf16IsHighSurrogate(code_units[0])) { // surrogate pair if (it.i >= it.bytes.len) return error.DanglingSurrogateHalf; code_units[1] = mem.readInt(u16, it.bytes[it.i..][0..2], .little); const codepoint = try utf16DecodeSurrogatePair(&code_units); it.i += 2; return codepoint; } else if (utf16IsLowSurrogate(code_units[0])) { return error.UnexpectedSecondSurrogateHalf; } else { return code_units[0]; } }