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