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 library itself.
Zig › std/ › zig/ › Zir.zig › getOpaqueDecl
getOpaqueDecl
Zir.getOpaqueDecl
pub fn getOpaqueDecl (zir : *const Zir , opaque_decl : Inst .Index ) UnwrappedOpaqueDecl
File
Code
pub fn getOpaqueDecl (zir : *const Zir , opaque_decl : Inst .Index ) UnwrappedOpaqueDecl {
const inst_data = zir .instructions .get (@backingInt (opaque_decl ));
assert (inst_data .tag == .extended );
assert (inst_data .data .extended .opcode == .opaque_decl );
const small : Inst .OpaqueDecl .Small = @bitCast (inst_data .data .extended .small );
const extra = zir .extraData (Inst .OpaqueDecl , inst_data .data .extended .operand );
var extra_index = extra .end ;
const captures_len : u32 = if (small .has_captures_len ) blk : {
const captures_len = zir .extra [extra_index ];
extra_index += 1 ;
break :blk captures_len ;
} else 0 ;
const decls_len : u32 = if (small .has_decls_len ) blk : {
const decls_len = zir .extra [extra_index ];
extra_index += 1 ;
break :blk decls_len ;
} else 0 ;
const captures : []const Inst .Capture = @ptrCast (zir .extra [extra_index ..][0 ..captures_len ]);
extra_index += captures_len ;
const capture_names : []const NullTerminatedString = @ptrCast (zir .extra [extra_index ..][0 ..captures_len ]);
extra_index += captures_len ;
const decls : []const Inst .Index = @ptrCast (zir .extra [extra_index ..][0 ..decls_len ]);
extra_index += decls_len ;
return .{
.src_line = extra .data .src_line ,
.src_node = extra .data .src_node ,
.name_strategy = small .name_strategy ,
.captures = captures ,
.capture_names = capture_names ,
.decls = decls ,
};
}