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 standard library. Public Function
pubfnaddScalar(r: *Mutable, a: Const, scalar: anytype) void {
// Normally we could just determine the number of limbs needed with calcLimbLen,// but that is not comptime-known when scalar is not a comptime_int. Instead, we// use calcTwosCompLimbCount for a non-comptime_int scalar, which can be pessimistic// in the case that scalar happens to be small in magnitude within its type, but it// is well worth being able to use the stack and not needing an allocator passed in.// Note that Mutable.init still sets len to calcLimbLen(scalar) in any case.constlimbs_len = comptimeswitch (@typeInfo(@TypeOf(scalar))) {
.comptime_int => calcLimbLen(scalar),
.int => |info| calcTwosCompLimbCount(info.bits),
else => @compileError("expected scalar to be an int"),
};
varlimbs: [limbs_len]Limb = undefined;
constoperand = init(&limbs, scalar).toConst();
returnadd(r, a, operand);
}
r = a + scalar
r and a may be aliases. scalar is a primitive integer type.
Asserts the result fits in
r. An upper bound on the number of limbs needed by r is@max(a.limbs.len, calcLimbLen(scalar)) + 1.