2021-01-12 14:14:38 -05:00
|
|
|
////////////////////////////////////////////////////////////
|
|
|
|
|
//
|
|
|
|
|
// TABLE
|
|
|
|
|
//
|
|
|
|
|
// This module contains a library of lua functions
|
|
|
|
|
// for manipulating tables. Some of the functions only
|
|
|
|
|
// work on vectors (ie, tables with integer keys starting
|
|
|
|
|
// at one). When a function only works on vectors, it
|
|
|
|
|
// is noted.
|
|
|
|
|
//
|
|
|
|
|
// QUEUE
|
|
|
|
|
//
|
|
|
|
|
// This module contains a library of lua functions for
|
|
|
|
|
// manipulating queues. Queues are represented as a table
|
|
|
|
|
// with a "head" and a "tail", and with integer-keyed values.
|
|
|
|
|
// For example:
|
|
|
|
|
//
|
|
|
|
|
// {
|
|
|
|
|
// "tail": 100,
|
|
|
|
|
// "head": 103,
|
|
|
|
|
// 100: "a",
|
|
|
|
|
// 101: "b",
|
|
|
|
|
// 102: "c"
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// Values are pushed onto the head, and values are popped
|
|
|
|
|
// from the tail.
|
|
|
|
|
//
|
|
|
|
|
////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
2020-11-27 13:21:07 -05:00
|
|
|
#ifndef TABLE_HPP
|
|
|
|
|
#define TABLE_HPP
|
2020-11-13 18:17:47 -05:00
|
|
|
|
2020-11-27 13:21:07 -05:00
|
|
|
#include "luastack.hpp"
|
2020-11-13 18:17:47 -05:00
|
|
|
|
2021-01-12 14:14:38 -05:00
|
|
|
// table_equal
|
|
|
|
|
//
|
|
|
|
|
// True if two tables contain the same key/value pairs.
|
|
|
|
|
//
|
2021-01-02 13:31:18 -05:00
|
|
|
int table_equal(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
// table_findremove
|
|
|
|
|
//
|
|
|
|
|
// Given a vector and a value, remove the specified value from
|
|
|
|
|
// the vector, and shift elements downward to fill the gaps.
|
|
|
|
|
//
|
2021-01-02 13:31:18 -05:00
|
|
|
int table_findremove(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
// table_push
|
|
|
|
|
//
|
|
|
|
|
// Given a vector and a value, push the value onto the end.
|
|
|
|
|
//
|
|
|
|
|
int table_push(lua_State *L);
|
|
|
|
|
|
|
|
|
|
// table_find
|
|
|
|
|
//
|
|
|
|
|
// Given a vector and a value, search for the first occurrence
|
|
|
|
|
// of that value. Return the index.
|
|
|
|
|
//
|
2021-01-02 13:31:18 -05:00
|
|
|
int table_find(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
// table_empty
|
|
|
|
|
//
|
|
|
|
|
// Return true if the table has no key/value pairs.
|
|
|
|
|
//
|
2021-01-02 13:31:18 -05:00
|
|
|
int table_empty(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
// table_count
|
|
|
|
|
//
|
|
|
|
|
// Return the number of key/value pairs in the table.
|
|
|
|
|
//
|
2021-01-02 13:31:18 -05:00
|
|
|
int table_count(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
// table_clear
|
|
|
|
|
//
|
|
|
|
|
// Remove all key/value pairs from the table. Does not
|
|
|
|
|
// remove the metatable.
|
|
|
|
|
//
|
2020-12-05 18:57:53 -05:00
|
|
|
int table_clear(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
//
|
2021-07-09 18:07:06 -04:00
|
|
|
// Create and return an empty queue. Queues are implemented
|
|
|
|
|
// as tables which are used as dynamically-expandable circular
|
|
|
|
|
// buffers.
|
2021-01-12 14:14:38 -05:00
|
|
|
//
|
2021-07-12 00:37:07 -04:00
|
|
|
int deque_create(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
//
|
2021-07-12 00:37:07 -04:00
|
|
|
// Given a deque and a value, pushes the value onto the
|
|
|
|
|
// left or right end.
|
2021-01-12 14:14:38 -05:00
|
|
|
//
|
2021-07-12 00:37:07 -04:00
|
|
|
int deque_pushl(lua_State *L);
|
|
|
|
|
int deque_pushr(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
//
|
2021-07-12 00:37:07 -04:00
|
|
|
// Given a deque, pop from the left or right end. Returns the
|
|
|
|
|
// value and removes it from the deque. If the deque is
|
|
|
|
|
// empty, returns nil.
|
2021-01-12 14:14:38 -05:00
|
|
|
//
|
2021-07-12 00:37:07 -04:00
|
|
|
int deque_popl(lua_State *L);
|
|
|
|
|
int deque_popr(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
//
|
2021-07-12 00:37:07 -04:00
|
|
|
// Return the nth element from the left or right end of a deque.
|
2021-01-12 14:14:38 -05:00
|
|
|
//
|
2021-07-12 00:37:07 -04:00
|
|
|
int deque_nthl(lua_State *L);
|
|
|
|
|
int deque_nthr(lua_State *L);
|
2021-01-12 14:14:38 -05:00
|
|
|
|
|
|
|
|
//
|
2021-07-12 00:37:07 -04:00
|
|
|
// Return the number of values in the deque.
|
2021-01-12 14:14:38 -05:00
|
|
|
//
|
2021-07-12 00:37:07 -04:00
|
|
|
int deque_size(lua_State *L);
|
|
|
|
|
|
2020-11-13 18:17:47 -05:00
|
|
|
|
2020-11-27 13:21:07 -05:00
|
|
|
#endif // TABLE_HPP
|