From cd8af079c3b729283f8dba28a17320c58fd15110 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sun, 18 Oct 2015 21:42:33 +0100 Subject: util.queue: Add :items() iterator --- util/queue.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'util') diff --git a/util/queue.lua b/util/queue.lua index 203da0e3..ac782e84 100644 --- a/util/queue.lua +++ b/util/queue.lua @@ -18,6 +18,7 @@ local function new(size, allow_wrapping) local t = have_utable and utable.create(size, 0) or {}; -- Table to hold items return { + _items = t; size = size; count = function (self) return items; end; push = function (self, item) @@ -50,6 +51,18 @@ local function new(size, allow_wrapping) end return t[tail]; end; + items = function (self) + return function (t, pos) + if pos >= t:count() then + return nil; + end + local read_pos = tail + pos; + if read_pos > t.size then + read_pos = (read_pos%size); + end + return pos+1, t._items[read_pos]; + end, self, 0; + end; }; end -- cgit v1.2.3 From 7592b57bc634f514570cb70e0b38347c13085ffe Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sun, 18 Oct 2015 21:54:17 +0100 Subject: util.queue: Add luacheck annotations --- util/queue.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'util') diff --git a/util/queue.lua b/util/queue.lua index ac782e84..728e905f 100644 --- a/util/queue.lua +++ b/util/queue.lua @@ -16,7 +16,7 @@ local function new(size, allow_wrapping) local head, tail = 1, 1; local items = 0; -- Number of stored items local t = have_utable and utable.create(size, 0) or {}; -- Table to hold items - + --luacheck: ignore 212/self return { _items = t; size = size; @@ -52,6 +52,7 @@ local function new(size, allow_wrapping) return t[tail]; end; items = function (self) + --luacheck: ignore 431/t return function (t, pos) if pos >= t:count() then return nil; -- cgit v1.2.3