From 05f0e90a185cb04a09b96f686dffc6375c420e9b Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Wed, 22 Nov 2023 01:26:43 -0800 Subject: [PATCH] add RingBuffer --- src/lib.zig | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/lib.zig b/src/lib.zig index 94f8cf6d11e074959e72f291eb33beb7b313578a..b3b361a276f620a8bee6443ebe4daedba46ffee8 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -814,3 +814,22 @@ pub fn sum(comptime T: type, slice: []const T) T { for (slice) |item| res += item; return res; } + +pub fn RingBuffer(comptime T: type, comptime capacity: usize) type { + return struct { + items: [capacity]T = undefined, + len: usize = 0, + comptime capacity: usize = capacity, + + const Self = @This(); + + pub fn append(self: *Self, new_item: T) void { + if (self.len == self.capacity) { + for (1..self.len) |i| self.items[i - 1] = self.items[i]; + self.len -= 1; + } + self.items[self.len] = new_item; + self.len += 1; + } + }; +} -- 2.54.0