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/ › start.zig › callMain
callMain
start.callMain
inline fn callMain (args : std .process .Args .Vector , environ : std .process .Environ .Block ) u8
File
Code
inline fn callMain (args : std .process .Args .Vector , environ : std .process .Environ .Block ) u8 {
const fn_info = @typeInfo (@TypeOf (root .main )).@"fn" ;
if (fn_info .param_types .len == 0 ) return wrapMain (root .main ());
if (fn_info .param_types [0 ].? == std .process .Init .Minimal ) return wrapMain (root .main (.{
.args = .{ .vector = args },
.environ = .{ .block = environ },
}));
const gpa = if (use_safe_allocator )
safe_allocator .allocator ()
else if (builtin .link_libc )
std .heap .c_allocator
else if (is_wasm )
std .heap .wasm_allocator
else if (!builtin .single_threaded )
std .heap .smp_allocator
else
comptime unreachable ;
defer if (use_safe_allocator ) {
_ = safe_allocator .deinit ();
};
const arena_backing_allocator = if (is_wasm ) gpa else std .heap .page_allocator ;
var arena_allocator = std .heap .ArenaAllocator .init (arena_backing_allocator );
defer arena_allocator .deinit ();
var threaded : std .Io .Threaded = .init (gpa , .{
.argv0 = .init (.{ .vector = args }),
.environ = .{ .block = environ },
});
defer threaded .deinit ();
var environ_map = std .process .Environ .createMap (.{ .block = environ }, gpa ) catch |err |
std .process .fatal ("failed to parse environment variables: {t}" , .{err });
defer environ_map .deinit ();
const preopens = std .process .Preopens .init (arena_allocator .allocator ()) catch |err |
std .process .fatal ("failed to init preopens: {t}" , .{err });
return wrapMain (root .main (.{
.minimal = .{
.args = .{ .vector = args },
.environ = .{ .block = environ },
},
.arena = &arena_allocator ,
.gpa = gpa ,
.io = threaded .io (),
.environ_map = &environ_map ,
.preopens = preopens ,
}));
}