A double queue.
Taken from Programming in Lua Queues and Double Queues and modified to not allow nil values, and returns nil if pop_first or pop_last is used when the queue is empty.
local Queue = require('__stdlib__/stdlib/misc/queue')
local q = Queue() -- create a new empty queue
q('my value') -- push a value onto the queue
q() -- pop the last value off the queue
game.print(#q) -- print the number of items in the queue
new(...) | Constructs a new Queue object. |
load(queue) | Load global.queue or queues during on_load, as metatables are not persisted. |
push_first(queue, value) | Push a new element to the front of the queue. |
push_last(queue, ...) | Push a new element to the back of the queue. |
push() | Shortcut for Queue.push_last |
push_at(queue, index, value) | Push a new element to a specific location of the queue. |
pop_first(queue) | Retrieve the element at the front of the queue and remove it from the queue. |
pop() | Shortcut for Queue.pop_first |
pop_at(queue, index) | Pop an element at a specific location of the queue. |
peek_at(queue, index) | Peek at an element in the queue without disturbing the queue. |
peek_first(queue) | Return the element at the front of the queue and remove it from the queue. |
peek() | Shortcut for Queue.peek_first |
pop_last(queue) | Retrieve the element at the back of the queue and remove it from the queue. |
peek_last(queue) | Return the element at the back of the queue. |
pop_and_push(queue) | Returns the popped value and pushes back into the queue. |
cycle(queue) | Returns the queue after popping the last element and pushing it to the top. |
find(queue, find) | Gets the first index which matches the stored data. |
sort(queue, func) | sort and reorder the queue |
is_empty(queue) | Returns true if the given queue is empty. |
size(queue) | Returns the number of items in the queue. |
count() | Shortcut for Queue.size |
next(queue, index, pop) | Return the next element in the queue |
rnext(queue, index, pop) | Return the previous element in the queue |
pairs(queue, pop) | Iterate the queue forward |
rpairs(queue, pop) | Iterate the queue backwards |
Constructs a new Queue object.
Parameters:
Load global.queue or queues during on_load, as metatables are not persisted.
This is only needed if you are using the queue as an object and storing it in global.
Parameters: Usage:global.myqueue1 = Queue.new()
script.on_load(function() Queue.load(global.myqueue))
Push a new element to the front of the queue.
Parameters:
Push a new element to the back of the queue.
Parameters:
Shortcut for Queue.push_last
Push a new element to a specific location of the queue.
Parameters:
Retrieve the element at the front of the queue and remove it from the queue.
Parameters:
Shortcut for Queue.pop_first
Pop an element at a specific location of the queue.
Parameters:
Peek at an element in the queue without disturbing the queue.
Parameters:
Return the element at the front of the queue and remove it from the queue.
Parameters:
Shortcut for Queue.peek_first
Retrieve the element at the back of the queue and remove it from the queue.
Parameters:
Return the element at the back of the queue.
Parameters:
Returns the popped value and pushes back into the queue.
Parameters:
Returns the queue after popping the last element and pushing it to the top.
Parameters:
Gets the first index which matches the stored data.
does not compare inside tables.
Parameters:sort and reorder the queue
Parameters:
Returns true if the given queue is empty.
Parameters:
Returns the number of items in the queue.
Parameters:
Shortcut for Queue.size
Return the next element in the queue
Parameters:
Return the previous element in the queue
Parameters:
Iterate the queue forward
Parameters:
Iterate the queue backwards
Parameters: