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 › AstGen › GenZir › addAllocExtended Private Function addAllocExtended Doc Source Private Function std.zig.AstGen.GenZir.addAllocExtended
fn addAllocExtended (
gz : *GenZir ,
args : struct Params gz : *GenZir args : struct { /// Absolute node index. This function does the conversion to offset from Decl. node : Ast .Node .Index , type_inst : Zir .Inst .Ref , align_inst : Zir .Inst .Ref , is_const : bool , is_comptime : bool , } File zig/AstGen.zig: 12264
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313 fn addAllocExtended (
gz : *GenZir ,
args : struct {
/// Absolute node index. This function does the conversion to offset from Decl.
node : Ast .Node .Index ,
type_inst : Zir .Inst .Ref ,
align_inst : Zir .Inst .Ref ,
is_const : bool ,
is_comptime : bool ,
},
) !Zir .Inst .Ref {
const astgen = gz .astgen ;
const gpa = astgen .gpa ;
try gz .instructions .ensureUnusedCapacity (gpa , 1 );
try astgen .instructions .ensureUnusedCapacity (gpa , 1 );
try astgen .extra .ensureUnusedCapacity (
gpa ,
@typeInfo (Zir .Inst .AllocExtended ).@"struct" .field_names .len +
@intFromBool (args .type_inst != .none ) +
@intFromBool (args .align_inst != .none ),
);
const payload_index = gz .astgen .addExtraAssumeCapacity (Zir .Inst .AllocExtended {
.src_node = gz .nodeIndexToRelative (args .node ),
});
if (args .type_inst != .none ) {
astgen .extra .appendAssumeCapacity (@backingInt (args .type_inst ));
}
if (args .align_inst != .none ) {
astgen .extra .appendAssumeCapacity (@backingInt (args .align_inst ));
}
const has_type : u4 = @intFromBool (args .type_inst != .none );
const has_align : u4 = @intFromBool (args .align_inst != .none );
const is_const : u4 = @intFromBool (args .is_const );
const is_comptime : u4 = @intFromBool (args .is_comptime );
const small : u16 = has_type | (has_align << 1 ) | (is_const << 2 ) | (is_comptime << 3 );
const new_index : Zir .Inst .Index = @fromBackingInt (@intCast (astgen .instructions .len ));
astgen .instructions .appendAssumeCapacity (.{
.tag = .extended ,
.data = .{ .extended = .{
.opcode = .alloc ,
.small = small ,
.operand = payload_index ,
} },
});
gz .instructions .appendAssumeCapacity (new_index );
return new_index .toRef ();
}