//////////////////////////////////////////////////////////// // // 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. // //////////////////////////////////////////////////////////// #ifndef TABLE_HPP #define TABLE_HPP #include "luastack.hpp" // table_equal // // True if two tables contain the same key/value pairs. // int table_equal(lua_State *L); // table_findremove // // Given a vector and a value, remove the specified value from // the vector, and shift elements downward to fill the gaps. // int table_findremove(lua_State *L); // 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. // int table_find(lua_State *L); // table_empty // // Return true if the table has no key/value pairs. // int table_empty(lua_State *L); // table_count // // Return the number of key/value pairs in the table. // int table_count(lua_State *L); // table_clear // // Remove all key/value pairs from the table. Does not // remove the metatable. // int table_clear(lua_State *L); // // Create and return an empty queue. Queues are implemented // as tables which are used as dynamically-expandable circular // buffers. // int deque_create(lua_State *L); // // Given a deque and a value, pushes the value onto the // left or right end. // int deque_pushl(lua_State *L); int deque_pushr(lua_State *L); // // 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. // int deque_popl(lua_State *L); int deque_popr(lua_State *L); // // Return the nth element from the left or right end of a deque. // int deque_nthl(lua_State *L); int deque_nthr(lua_State *L); // // Return the number of values in the deque. // int deque_size(lua_State *L); #endif // TABLE_HPP