128aed1d2b
* custom drawings and animations for video * wip * Work in progress refactor for toolkit * wip * Refactored everything for Lua Compile Tool * Trying out the github action * updated the github action ref * initial working version --------- Co-authored-by: ex61wi <tim.rorije@ing.com> Co-authored-by: dutchie031 <dutchie031>
47 lines
851 B
Lua
47 lines
851 B
Lua
|
|
---@class Queue
|
|
---@field private _items Array
|
|
---@field private _first number
|
|
---@field private _last number
|
|
local Queue = {}
|
|
Queue.__index = Queue
|
|
|
|
---@return Queue
|
|
function Queue.new()
|
|
|
|
local self = setmetatable({}, Queue)
|
|
self._items = {}
|
|
self._first = 1
|
|
self._last = 0
|
|
return self
|
|
end
|
|
|
|
---@return nil
|
|
function Queue:push(item)
|
|
self._last = self._last + 1
|
|
self._items[self._last] = item
|
|
end
|
|
|
|
---@return any?
|
|
function Queue:pop()
|
|
if self._first > self._last then
|
|
return nil
|
|
end
|
|
|
|
local item = self._items[self._first]
|
|
self._items[self._first] = nil
|
|
self._first = self._first + 1
|
|
return item
|
|
end
|
|
|
|
|
|
---@return Array<any>
|
|
function Queue:toList()
|
|
local items = {}
|
|
for i = self._first, self._last do
|
|
items[#items + 1] = self._items[i]
|
|
end
|
|
return items
|
|
end
|
|
|
|
return Queue |