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 › Constant › getBase Public Function getBase Doc Source Public Function std.zig.llvm.Builder.Constant.getBase
pub fn getBase (self : Constant , builder : *const Builder ) Global .Index Params File zig/llvm/Builder.zig: 8696
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729 pub fn getBase (self : Constant , builder : *const Builder ) Global .Index {
var cur = self ;
while (true ) switch (cur .unwrap ()) {
.constant => |constant | {
const item = builder .constant_items .get (constant );
switch (item .tag ) {
.ptrtoint ,
.inttoptr ,
.bitcast ,
=> cur = builder .constantExtraData (Cast , item .data ).val ,
.getelementptr => cur = builder .constantExtraData (GetElementPtr , item .data ).base ,
.add => {
const extra = builder .constantExtraData (Binary , item .data );
const lhs_base = extra .lhs .getBase (builder );
const rhs_base = extra .rhs .getBase (builder );
return if (lhs_base != .none and rhs_base != .none )
.none
else if (lhs_base != .none ) lhs_base else rhs_base ;
},
.sub => {
const extra = builder .constantExtraData (Binary , item .data );
if (extra .rhs .getBase (builder ) != .none ) return .none ;
cur = extra .lhs ;
},
else => return .none ,
}
},
.global => |global | switch (global .ptrConst (builder ).kind ) {
.alias => |alias | cur = alias .ptrConst (builder ).aliasee ,
.variable , .function => return global ,
.replaced => unreachable ,
},
};
}