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 › constantExtraDataTrail Private Type Function constantExtraDataTrail Doc Source Private Type Function std.zig.llvm.Builder.constantExtraDataTrail
fn constantExtraDataTrail (
self : *const Builder ,
comptime T : type ,
index : Constant .Item .ExtraIndex ,
) struct File zig/llvm/Builder.zig: 13177
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197
13198
13199 fn constantExtraDataTrail (
self : *const Builder ,
comptime T : type ,
index : Constant .Item .ExtraIndex ,
) struct { data : T , trail : ConstantExtraDataTrail } {
var result : T = undefined ;
const info = @typeInfo (T ).@"struct" ;
inline for (
info .field_names ,
info .field_types ,
self .constant_extra .items [index ..][0 ..info .field_names .len ],
) |field_name , field_type , value |
@field (result , field_name ) = switch (field_type ) {
u32 => value ,
String , Type , Constant , Function .Index , Function .Block .Index => @fromBackingInt (value ),
Constant .GetElementPtr .Info => @bitCast (value ),
else => @compileError ("bad field type: " ++ @typeName (field_type )),
};
return .{
.data = result ,
.trail = .{ .index = index + @as (Constant .Item .ExtraIndex , @intCast (info .field_names .len )) },
};
}