structstd.fmt.ArgState[src]

Fields

next_arg: usize = 0
used_args: ArgSetType = 0
args_len: usize

Functions

FunctionhasUnusedArgs[src]

pub fn hasUnusedArgs(self: *@This()) bool

Parameters

self: *@This()

Source Code

Source code
pub fn hasUnusedArgs(self: *@This()) bool {
    return @popCount(self.used_args) != self.args_len;
}

FunctionnextArg[src]

pub fn nextArg(self: *@This(), arg_index: ?usize) ?usize

Parameters

self: *@This()
arg_index: ?usize

Source Code

Source code
pub fn nextArg(self: *@This(), arg_index: ?usize) ?usize {
    const next_index = arg_index orelse init: {
        const arg = self.next_arg;
        self.next_arg += 1;
        break :init arg;
    };

    if (next_index >= self.args_len) {
        return null;
    }

    // Mark this argument as used
    self.used_args |= @as(ArgSetType, 1) << @as(u5, @intCast(next_index));
    return next_index;
}

Source Code

Source code
pub const ArgState = struct {
    next_arg: usize = 0,
    used_args: ArgSetType = 0,
    args_len: usize,

    pub fn hasUnusedArgs(self: *@This()) bool {
        return @popCount(self.used_args) != self.args_len;
    }

    pub fn nextArg(self: *@This(), arg_index: ?usize) ?usize {
        const next_index = arg_index orelse init: {
            const arg = self.next_arg;
            self.next_arg += 1;
            break :init arg;
        };

        if (next_index >= self.args_len) {
            return null;
        }

        // Mark this argument as used
        self.used_args |= @as(ArgSetType, 1) << @as(u5, @intCast(next_index));
        return next_index;
    }
}