aboutsummaryrefslogtreecommitdiffstats
path: root/src/vector.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/vector.zig')
-rw-r--r--src/vector.zig25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/vector.zig b/src/vector.zig
index 2453992..492a1c2 100644
--- a/src/vector.zig
+++ b/src/vector.zig
@@ -25,6 +25,20 @@ pub fn Vector(comptime N: usize) type {
return .{ .values = values };
}
+ pub fn format(
+ self: Self,
+ comptime fmt: []const u8,
+ options: std.fmt.FormatOptions,
+ writer: anytype,
+ ) !void {
+ try writer.print("Vec{}[{}", .{N, self.values[0]});
+ comptime var i = 1;
+ inline while (i < N) : (i += 1) {
+ try writer.print(", {}", .{self.values[i]});
+ }
+ try writer.writeAll("]");
+ }
+
/// Creates a vector filled with zeroes.
pub fn zeroes() Self {
return comptime Self.filled(0);
@@ -183,6 +197,17 @@ pub fn Vector(comptime N: usize) type {
return Self{ .values = values };
}
+
+ pub fn shrink(self: Self, comptime L: usize) Vector(L) {
+ if (L > N) unreachable;
+
+ var result: Vector(L) = undefined;
+ comptime var i = 0;
+ inline while (i < L) : (i += 1) {
+ result.values[i] = self.values[i];
+ }
+ return result;
+ }
};
}