diff options
Diffstat (limited to 'util/queue.lua')
-rw-r--r-- | util/queue.lua | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/util/queue.lua b/util/queue.lua index 728e905f..c94c62ae 100644 --- a/util/queue.lua +++ b/util/queue.lua @@ -51,19 +51,28 @@ local function new(size, allow_wrapping) end return t[tail]; end; + replace = function (self, data) + if items == 0 then + return self:push(data); + end + t[tail] = data; + return true; + end; items = function (self) - --luacheck: ignore 431/t - return function (t, pos) - if pos >= t:count() then + return function (_, pos) + if pos >= items then return nil; end local read_pos = tail + pos; - if read_pos > t.size then + if read_pos > self.size then read_pos = (read_pos%size); end - return pos+1, t._items[read_pos]; + return pos+1, t[read_pos]; end, self, 0; end; + consume = function (self) + return self.pop, self; + end; }; end |