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/ › Ast.zig › fullFnProtoComponents
fullFnProtoComponents
Ast.fullFnProtoComponents
fn fullFnProtoComponents (tree : Ast , info : full .FnProto .Components ) full .FnProto
File
Code
fn fullFnProtoComponents (tree : Ast , info : full .FnProto .Components ) full .FnProto {
var result : full .FnProto = .{
.ast = info ,
.visib_token = null ,
.extern_export_inline_token = null ,
.lib_name = null ,
.name_token = null ,
.lparen = undefined ,
};
var i = info .fn_token ;
while (i > 0 ) {
i -= 1 ;
switch (tree .tokenTag (i )) {
.keyword_extern ,
.keyword_export ,
.keyword_inline ,
.keyword_noinline ,
=> result .extern_export_inline_token = i ,
.keyword_pub => result .visib_token = i ,
.string_literal => result .lib_name = i ,
else => break ,
}
}
const after_fn_token = info .fn_token + 1 ;
if (tree .tokenTag (after_fn_token ) == .identifier ) {
result .name_token = after_fn_token ;
result .lparen = after_fn_token + 1 ;
} else {
result .lparen = after_fn_token ;
}
assert (tree .tokenTag (result .lparen ) == .l_paren );
return result ;
}