From 6c5acd6f230c2935221107c7ae7c236443fd8295 Mon Sep 17 00:00:00 2001 From: Alessandro Mauri Date: Tue, 3 Jun 2025 18:15:12 +0200 Subject: [PATCH] enable foreach for FIFO --- lib/ugui.c3l/src/fifo.c3 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/ugui.c3l/src/fifo.c3 b/lib/ugui.c3l/src/fifo.c3 index b4c49d4..59802e5 100644 --- a/lib/ugui.c3l/src/fifo.c3 +++ b/lib/ugui.c3l/src/fifo.c3 @@ -44,3 +44,23 @@ fn Type*? Fifo.dequeue(&fifo) fifo.out = (fifo.out + 1) % fifo.arr.len; return ret; } + +macro Type Fifo.get(&fifo, usz i) @operator([]) +{ + return fifo.arr[(fifo.out + i) % fifo.arr.len]; +} + +fn void Fifo.set(&fifo, usz i, Type val) @operator([]=) +{ + fifo.arr[(fifo.out + i) % fifo.arr.len] = val; +} + +macro Type* Fifo.get_ref(&fifo, usz i) @operator(&[]) +{ + return &fifo.arr[(fifo.out + i) % fifo.arr.len]; +} + +macro usz Fifo.len(&fifo) @operator(len) +{ + return fifo.count; +} \ No newline at end of file