Skip to main content

Queue

Common.Queue class. Queue implementation based on table.insert and table.remove.

note

Part of Common namespace.

tip

In LuaJIT it's almost as fast as alternative implementation from https://www.lua.org/pil/11.4.html and even though it's slightly slower - it provides much more functionality.

Functions​

PushLeft​

Queue:PushLeft( val: any ) → void

ArgumentTypeDescription
valanyAny value

Push the value to the beginning of the queue.


PushRight​

Queue:PushRight( val: any ) → void

ArgumentTypeDescription
valanyAny value

Push the value to the end of the queue.


PopLeft​

Queue:PopLeft() → any

Pop the value from the beginning of the queue. Returns the popped value.


PopRight​

Queue:PopRight() → any

Pop the value from the end of the queue. Returns the popped value.


Pairs​

Queue:Pairs() → void

Iterator. Implemented as pairs(Queue.list).


__newindex​

Queue:__newindex( key: number, val: any ) → void

ArgumentTypeDescription
keynumberIndex
valanyAny value

You can push values directly even in the middle of the queue. Implemented as table.insert(Queue.list, key, value).


Examples​

Basic usage

local q = Queue({1, 2, 3})
q:PushLeft(1)
q:PushRight(2)
q:PushLeft(0)
for i=1, #q do
print(q[i])
end

local q = Queue()
q:PushRight(function() print("Action 1") end)
q:PushRight(function()
print("Action 2")
q:PushLeft(function() print("Top Priority Action!") end)
end)
q:PushRight(function() print("Action 3") end)
while #q > 0 do
q:PopLeft()()
end