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/ › Io/ › Reader.zig › writableVectorWsa
writableVectorWsa
Reader.writableVectorWsa
pub fn writableVectorWsa (
r : *Reader ,
buffer : []std .os .windows .AFD .WSABUF (.@"var" ),
data : []const []u8 ,
) Error !struct
File
Code
pub fn writableVectorWsa (
r : *Reader ,
buffer : []std .os .windows .AFD .WSABUF (.@"var" ),
data : []const []u8 ,
) Error !struct { usize , usize } {
var i : usize = 0 ;
var n : usize = 0 ;
if (r .seek == r .end ) {
for (data ) |buf | {
if (buffer .len - i == 0 ) return .{ i , n };
if (buf .len == 0 ) continue ;
if (std .math .cast (u32 , buf .len )) |len | {
buffer [i ] = .{ .buf = buf .ptr , .len = len };
i += 1 ;
n += len ;
continue ;
}
buffer [i ] = .{ .buf = buf .ptr , .len = std .math .maxInt (u32 ) };
i += 1 ;
n += std .math .maxInt (u32 );
return .{ i , n };
}
const buf = r .buffer ;
if (buf .len != 0 ) {
r .seek = 0 ;
r .end = 0 ;
if (std .math .cast (u32 , buf .len )) |len | {
buffer [i ] = .{ .buf = buf .ptr , .len = len };
} else {
buffer [i ] = .{ .buf = buf .ptr , .len = std .math .maxInt (u32 ) };
}
i += 1 ;
}
} else {
buffer [i ] = .{
.buf = r .buffer .ptr + r .end ,
.len = @min (std .math .maxInt (u32 ), r .buffer .len - r .end ),
};
i += 1 ;
}
return .{ i , n };
}