From f53ac491b1ec74ad9c44d20065517467c1877190 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Fri, 10 Dec 2021 18:48:20 +0700 Subject: [aoc/2021] Finish day 10 --- aoc/2021/10/stack.zig | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 aoc/2021/10/stack.zig (limited to 'aoc/2021/10/stack.zig') diff --git a/aoc/2021/10/stack.zig b/aoc/2021/10/stack.zig new file mode 100644 index 0000000..1002d61 --- /dev/null +++ b/aoc/2021/10/stack.zig @@ -0,0 +1,39 @@ +const Allocator = @import("std").mem.Allocator; + +pub fn Stack(comptime T: type) type { + return struct { + allocator: *Allocator, + memory: []T, + len: usize, + + const Self = @This(); + + pub fn alloc(allocator: *Allocator, size: usize) !Self { + return Self{ + .allocator = allocator, + .memory = try allocator.alloc(T, size), + .len = 0, + }; + } + + pub fn free(self: *Self) void { + self.allocator.free(self.memory); + self.* = undefined; + } + + pub fn push(self: *Self, node: T) void { + self.memory[self.len] = node; + self.len += 1; + } + + pub fn pop(self: *Self) T { + self.len -= 1; + return self.memory[self.len]; + } + + pub fn reset(self: *Self) void { + self.len = 0; + } + }; +} + -- cgit 1.4.1