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 › castConstAssumeCapacity Private Function castConstAssumeCapacity Doc Source Private Function std.zig.llvm.Builder.castConstAssumeCapacity
fn castConstAssumeCapacity (self : *Builder , tag : Constant .Tag , val : Constant , ty : Type ) Constant Params File zig/llvm/Builder.zig: 12847
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875 fn castConstAssumeCapacity (self : *Builder , tag : Constant .Tag , val : Constant , ty : Type ) Constant {
const Key = struct { tag : Constant .Tag , cast : Constant .Cast };
const Adapter = struct {
builder : *const Builder ,
pub fn hash (_ : @This (), key : Key ) u32 {
return @truncate (std .hash .Wyhash .hash (
std .hash .int (@backingInt (key .tag )),
std .mem .asBytes (&key .cast ),
));
}
pub fn eql (ctx : @This (), lhs_key : Key , _ : void , rhs_index : usize ) bool {
if (lhs_key .tag != ctx .builder .constant_items .items (.tag )[rhs_index ]) return false ;
const rhs_data = ctx .builder .constant_items .items (.data )[rhs_index ];
const rhs_extra = ctx .builder .constantExtraData (Constant .Cast , rhs_data );
return std .meta .eql (lhs_key .cast , rhs_extra );
}
};
const data : Key = .{ .tag = tag , .cast = .{ .val = val , .type = ty } };
const gop = self .constant_map .getOrPutAssumeCapacityAdapted (data , Adapter { .builder = self });
if (!gop .found_existing ) {
gop .key_ptr .* = {};
gop .value_ptr .* = {};
self .constant_items .appendAssumeCapacity (.{
.tag = tag ,
.data = self .addConstantExtraAssumeCapacity (data .cast ),
});
}
return @fromBackingInt (@intCast (gop .index ));
}