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 › Zir › extraData Public Function extraData Doc Source Public Function std.zig.Zir.extraData
pub fn extraData (code : Zir , comptime T : type , index : usize ) ExtraData (T ) Params code : Zir T : type index : usize File zig/Zir.zig: 70
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 pub fn extraData (code : Zir , comptime T : type , index : usize ) ExtraData (T ) {
const info = @typeInfo (T ).@"struct" ;
var i : usize = index ;
var result : T = undefined ;
inline for (info .field_names , info .field_types ) |field_name , field_type | {
@field (result , field_name ) = switch (field_type ) {
u32 => code .extra [i ],
Inst .Ref ,
Inst .Index ,
Inst .Declaration .Name ,
std .zig .SimpleComptimeReason ,
NullTerminatedString ,
// Ast.TokenIndex is missing because it is a u32.
Ast .OptionalTokenIndex ,
Ast .Node .Index ,
Ast .Node .OptionalIndex ,
=> @fromBackingInt (@intCast (code .extra [i ])),
Ast .TokenOffset ,
Ast .OptionalTokenOffset ,
Ast .Node .Offset ,
Ast .Node .OptionalOffset ,
=> @fromBackingInt (@intCast (@as (i32 , @bitCast (code .extra [i ])))),
Inst .Call .Flags ,
Inst .BuiltinCall .Flags ,
Inst .SwitchBlock .Bits ,
Inst .FuncFancy .Bits ,
Inst .Declaration .Flags ,
Inst .Param .Type ,
Inst .Func .RetTy ,
=> @bitCast (code .extra [i ]),
else => @compileError ("bad field type" ),
};
i += 1 ;
}
return .{
.data = result ,
.end = i ,
};
}
Returns the requested data, as well as the new index which is at the start of the trailers for the object.