From 3062e0e9320a3ce9447e4611919cbe93296a1ce1 Mon Sep 17 00:00:00 2001 From: daurnimator Date: Sat, 16 Nov 2019 22:15:06 +1100 Subject: [PATCH] std: add fifo.writeItem --- lib/std/fifo.zig | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/std/fifo.zig b/lib/std/fifo.zig index 9fe46fedad..de8e7a55de 100644 --- a/lib/std/fifo.zig +++ b/lib/std/fifo.zig @@ -273,6 +273,20 @@ pub fn LinearFifo( } } + /// Write a single item to the fifo + pub fn writeItem(self: *Self, item: T) !void { + try self.ensureUnusedCapacity(1); + + var tail = self.head + self.count; + if (powers_of_two) { + tail &= self.buf.len - 1; + } else { + tail %= self.buf.len; + } + self.buf[tail] = byte; + self.update(1); + } + /// Appends the data in `src` to the fifo. /// Allocates more memory as necessary pub fn write(self: *Self, src: []const T) !void {