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 › zig › llvm › Builder › getOrPutTypeNoExtraAssumeCapacity Private Type Function getOrPutTypeNoExtraAssumeCapacity Doc Source Private Type Function std.zig.llvm.Builder.getOrPutTypeNoExtraAssumeCapacity
fn getOrPutTypeNoExtraAssumeCapacity (self : *Builder , item : Type .Item ) struct File zig/llvm/Builder.zig: 12180
12180
12181
12182
12183
12184
12185
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202 fn getOrPutTypeNoExtraAssumeCapacity (self : *Builder , item : Type .Item ) struct { new : bool , type : Type } {
const Adapter = struct {
builder : *const Builder ,
pub fn hash (_ : @This (), key : Type .Item ) u32 {
return @truncate (std .hash .Wyhash .hash (
comptime std .hash .int (@backingInt (Type .Tag .simple )),
std .mem .asBytes (&key ),
));
}
pub fn eql (ctx : @This (), lhs_key : Type .Item , _ : void , rhs_index : usize ) bool {
const lhs_bits : u32 = @bitCast (lhs_key );
const rhs_bits : u32 = @bitCast (ctx .builder .type_items .items [rhs_index ]);
return lhs_bits == rhs_bits ;
}
};
const gop = self .type_map .getOrPutAssumeCapacityAdapted (item , Adapter { .builder = self });
if (!gop .found_existing ) {
gop .key_ptr .* = {};
gop .value_ptr .* = {};
self .type_items .appendAssumeCapacity (item );
}
return .{ .new = !gop .found_existing , .type = @fromBackingInt (@intCast (gop .index )) };
}