authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-11-22 01:26:43 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2023-11-22 01:26:43 -08:00
log05f0e90a185cb04a09b96f686dffc6375c420e9b
tree393a4a1751bd9e90ead13eab6ac68d67db28c38a
parent4b372230234b6ed12e62778972a1bf869e331743

add RingBuffer


1 files changed, 19 insertions(+), 0 deletions(-)

src/lib.zig+19
......@@ -814,3 +814,22 @@ pub fn sum(comptime T: type, slice: []const T) T {
814814 for (slice) |item| res += item;
815815 return res;
816816}
817
818pub fn RingBuffer(comptime T: type, comptime capacity: usize) type {
819 return struct {
820 items: [capacity]T = undefined,
821 len: usize = 0,
822 comptime capacity: usize = capacity,
823
824 const Self = @This();
825
826 pub fn append(self: *Self, new_item: T) void {
827 if (self.len == self.capacity) {
828 for (1..self.len) |i| self.items[i - 1] = self.items[i];
829 self.len -= 1;
830 }
831 self.items[self.len] = new_item;
832 self.len += 1;
833 }
834 };
835}