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/ › zig/ › llvm/ › Builder.zig › metadataConstantAssumeCapacity
metadataConstantAssumeCapacity
Builder.metadataConstantAssumeCapacity
fn metadataConstantAssumeCapacity (self : *Builder , constant : Constant ) Metadata
File
Code
fn metadataConstantAssumeCapacity (self : *Builder , constant : Constant ) Metadata {
const Adapter = struct {
builder : *const Builder ,
pub fn hash (_ : @This (), key : Constant ) u32 {
var hasher = comptime std .hash .Wyhash .init (std .hash .int (@backingInt (Metadata .Tag .constant )));
hasher .update (std .mem .asBytes (&key ));
return @truncate (hasher .final ());
}
pub fn eql (ctx : @This (), lhs_key : Constant , _ : void , rhs_index : usize ) bool {
if (Metadata .Tag .constant != ctx .builder .metadata_items .items (.tag )[rhs_index ]) return false ;
const rhs_data : Constant = @fromBackingInt (@intCast (ctx .builder .metadata_items .items (.data )[rhs_index ]));
return rhs_data == lhs_key ;
}
};
const gop = self .metadata_map .getOrPutAssumeCapacityAdapted (
constant ,
Adapter { .builder = self },
);
if (!gop .found_existing ) {
gop .key_ptr .* = {};
gop .value_ptr .* = {};
self .metadata_items .appendAssumeCapacity (.{
.tag = .constant ,
.data = @backingInt (constant ),
});
}
return .{ .index = @intCast (gop .index ), .kind = .node };
}