1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2024-12-14 10:13:13 +02:00
RedMew/utils/queue.lua

35 lines
570 B
Lua
Raw Normal View History

2018-01-26 01:31:09 +02:00
local Queue = {}
function Queue.new()
local queue = {_head = 0, _tail = 0}
2018-01-26 01:31:09 +02:00
return queue
end
function Queue.size(queue)
return queue._tail - queue._head
end
function Queue.push(queue, element)
local index = queue._head
queue[index] = element
queue._head = index - 1
end
function Queue.peek(queue)
return queue[queue._tail]
end
function Queue.pop(queue)
local index = queue._tail
local element = queue[index]
queue[index] = nil
if element then
queue._tail = index - 1
end
2018-01-26 01:31:09 +02:00
return element
end
return Queue