Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › unicode.zig › Utf8Iterator
Utf8Iterator
unicode.Utf8Iterator
pub const Utf8Iterator = struct
File
Code
pub const Utf8Iterator = struct {
bytes : []const u8 ,
i : usize ,
pub fn nextCodepointSlice (it : *Utf8Iterator ) ?[]const u8 {
if (it .i >= it .bytes .len ) {
return null ;
}
const cp_len = utf8ByteSequenceLength (it .bytes [it .i ]) catch unreachable ;
it .i += cp_len ;
return it .bytes [it .i - cp_len .. it .i ];
}
pub fn nextCodepoint (it : *Utf8Iterator ) ?u21 {
const slice = it .nextCodepointSlice () orelse return null ;
return utf8Decode (slice ) catch unreachable ;
}
pub fn peek (it : *Utf8Iterator , n : usize ) []const u8 {
const original_i = it .i ;
defer it .i = original_i ;
var end_ix = original_i ;
var found : usize = 0 ;
while (found < n ) : (found += 1 ) {
const next_codepoint = it .nextCodepointSlice () orelse return it .bytes [original_i ..];
end_ix += next_codepoint .len ;
}
return it .bytes [original_i ..end_ix ];
}
}