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/ › Threaded.zig › batchCompleteBlockingWindows
batchCompleteBlockingWindows
Threaded.batchCompleteBlockingWindows
fn batchCompleteBlockingWindows (
b : *Io .Batch ,
operation_userdata : *WindowsBatchOperationUserdata ,
result : Io .Operation .Result ,
) void
File
Code
fn batchCompleteBlockingWindows (
b : *Io .Batch ,
operation_userdata : *WindowsBatchOperationUserdata ,
result : Io .Operation .Result ,
) void {
const erased_userdata = operation_userdata .toErased ();
const pending : *Io .Operation .Storage .Pending = @fieldParentPtr ("userdata" , erased_userdata );
switch (pending .node .prev ) {
.none => b .pending .head = pending .node .next ,
else => |prev_index | b .storage [prev_index .toIndex ()].pending .node .next = pending .node .next ,
}
switch (pending .node .next ) {
.none => b .pending .tail = pending .node .prev ,
else => |next_index | b .storage [next_index .toIndex ()].pending .node .prev = pending .node .prev ,
}
const storage : *Io .Operation .Storage = @fieldParentPtr ("pending" , pending );
const index : Io .Operation .OptionalIndex = .fromIndex (storage - b .storage .ptr );
switch (b .completed .tail ) {
.none => b .completed .head = index ,
else => |tail_index | b .storage [tail_index .toIndex ()].completion .node .next = index ,
}
b .completed .tail = index ;
storage .* = .{ .completion = .{ .node = .{ .next = .none }, .result = result } };
}