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 standard library.
std › Io › Writer › Allocating › ensureTotalCapacityPrecise Public Function ensureTotalCapacityPrecise Doc Source Public Function std.Io.Writer.Allocating.ensureTotalCapacityPrecise
pub fn ensureTotalCapacityPrecise (a : *Allocating , new_capacity : usize ) Allocator .Error !void Params File Io/Writer.zig: 2769
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786 pub fn ensureTotalCapacityPrecise (a : *Allocating , new_capacity : usize ) Allocator .Error !void {
const old_memory = a .writer .buffer ;
if (old_memory .len >= new_capacity ) return ;
assert (new_capacity != 0 );
const alignment = a .alignment ;
if (old_memory .len > 0 ) {
if (a .allocator .rawRemap (old_memory , alignment , new_capacity , @returnAddress ())) |new | {
a .writer .buffer = new [0 ..new_capacity ];
return ;
}
}
const new_memory = (a .allocator .rawAlloc (new_capacity , alignment , @returnAddress ()) orelse
return error .OutOfMemory )[0 ..new_capacity ];
const saved = old_memory [0 ..a .writer .end ];
@memcpy (new_memory [0 ..saved .len ], saved );
if (old_memory .len != 0 ) a .allocator .rawFree (old_memory , alignment , @returnAddress ());
a .writer .buffer = new_memory ;
}