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.

initArgsList

Serialize.initArgsList
fn initArgsList(s: *Serialize, args: []const Step.Run.Arg) ![]const Configuration.Step.Run.Arg.Index

File

lib/std/Build/Serialize.zig:858

Code

fn initArgsList(s: *Serialize, args: []const Step.Run.Arg) ![]const Configuration.Step.Run.Arg.Index {
    const wc = s.wc;
    const result = try s.arena.alloc(Configuration.Step.Run.Arg.Index, args.len);
    for (result, args) |*dest, src| {
        dest.* = try wc.addExtra(Configuration.Step.Run.Arg, switch (src) {
            .artifact => |a| .{
                .flags = .{
                    .tag = .artifact,
                    .prefix = a.prefix.len != 0,
                    .suffix = a.suffix.len != 0,
                    .basename = false,
                    .path = false,
                    .producer = true,
                    .generated = false,
                    .dep_file = false,
                    .make_absolute = a.make_absolute,
                },
                .prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
                .suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
                .basename = .{ .value = null },
                .path = .{ .value = null },
                .producer = .{ .value = stepIndex(s, &a.artifact.step) },
                .generated = .{ .value = null },
            },
            .lazy_path => |a| .{
                .flags = .{
                    .tag = .path_file,
                    .prefix = a.prefix.len != 0,
                    .suffix = a.suffix.len != 0,
                    .basename = false,
                    .path = true,
                    .producer = false,
                    .generated = false,
                    .dep_file = false,
                    .make_absolute = a.make_absolute,
                },
                .prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
                .suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
                .basename = .{ .value = null },
                .path = .{ .value = try addLazyPath(s, a.lazy_path) },
                .producer = .{ .value = null },
                .generated = .{ .value = null },
            },
            .decorated_directory => |a| .{
                .flags = .{
                    .tag = .path_directory,
                    .prefix = a.prefix.len != 0,
                    .suffix = a.suffix.len != 0,
                    .basename = false,
                    .path = true,
                    .producer = false,
                    .generated = false,
                    .dep_file = false,
                    .make_absolute = a.make_absolute,
                },
                .prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
                .suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
                .basename = .{ .value = null },
                .path = .{ .value = try addLazyPath(s, a.lazy_path) },
                .producer = .{ .value = null },
                .generated = .{ .value = null },
            },
            .file_content => |a| .{
                .flags = .{
                    .tag = .file_content,
                    .prefix = a.prefix.len != 0,
                    .suffix = a.suffix.len != 0,
                    .basename = false,
                    .path = true,
                    .producer = false,
                    .generated = false,
                    .dep_file = false,
                    .make_absolute = false,
                },
                .prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
                .suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
                .basename = .{ .value = null },
                .path = .{ .value = try addLazyPath(s, a.lazy_path) },
                .producer = .{ .value = null },
                .generated = .{ .value = null },
            },
            .bytes => |a| .{
                .flags = .{
                    .tag = .string,
                    .prefix = true,
                    .suffix = false,
                    .basename = false,
                    .path = false,
                    .producer = false,
                    .generated = false,
                    .dep_file = false,
                    .make_absolute = false,
                },
                .prefix = .{ .value = try wc.addString(a) },
                .suffix = .{ .value = null },
                .basename = .{ .value = null },
                .path = .{ .value = null },
                .producer = .{ .value = null },
                .generated = .{ .value = null },
            },
            .output_file, .output_file_dep => |a, tag| .{
                .flags = .{
                    .tag = .output_file,
                    .prefix = a.prefix.len != 0,
                    .suffix = a.suffix.len != 0,
                    .basename = a.basename.len != 0,
                    .path = false,
                    .producer = false,
                    .generated = true,
                    .dep_file = tag == .output_file_dep,
                    .make_absolute = a.make_absolute,
                },
                .prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
                .suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
                .basename = .{ .value = if (a.basename.len != 0) try wc.addString(a.basename) else null },
                .path = .{ .value = null },
                .producer = .{ .value = null },
                .generated = .{ .value = a.generated_file },
            },
            .output_directory => |a| .{
                .flags = .{
                    .tag = .output_directory,
                    .prefix = a.prefix.len != 0,
                    .suffix = a.suffix.len != 0,
                    .basename = a.basename.len != 0,
                    .path = false,
                    .producer = false,
                    .generated = true,
                    .dep_file = false,
                    .make_absolute = a.make_absolute,
                },
                .prefix = .{ .value = if (a.prefix.len != 0) try wc.addString(a.prefix) else null },
                .suffix = .{ .value = if (a.suffix.len != 0) try wc.addString(a.suffix) else null },
                .basename = .{ .value = if (a.basename.len != 0) try wc.addString(a.basename) else null },
                .path = .{ .value = null },
                .producer = .{ .value = null },
                .generated = .{ .value = a.generated_file },
            },
            .passthru => .{
                .flags = .{
                    .tag = .passthru,
                    .prefix = false,
                    .suffix = false,
                    .basename = false,
                    .path = false,
                    .producer = false,
                    .generated = false,
                    .dep_file = false,
                    .make_absolute = false,
                },
                .prefix = .{ .value = null },
                .suffix = .{ .value = null },
                .basename = .{ .value = null },
                .path = .{ .value = null },
                .producer = .{ .value = null },
                .generated = .{ .value = null },
            },
        });
    }
    return result;
}