enable foreach for FIFO

This commit is contained in:
Alessandro Mauri 2025-06-03 18:15:12 +02:00
parent 24bc2c67bc
commit 6c5acd6f23

View File

@ -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;
}