Initial revision of lua 'doc' function

This commit is contained in:
2021-12-15 23:03:43 -05:00
parent e0001127c7
commit 1cfdb4fa09
22 changed files with 301 additions and 199 deletions

View File

@@ -1,13 +1,6 @@
#include "table.hpp"
#include "source.hpp"
LuaDefine(table_getregistry, "f") {
LuaArg key;
LuaRet result;
LuaStack LS(L, key, result);
LS.rawget(result, LuaRegistry, key);
return LS.result();
}
bool table_equal(LuaStack &LS, LuaSlot t1, LuaSlot t2) {
lua_State *L = LS.state();
@@ -33,7 +26,7 @@ bool table_equal(LuaStack &LS, LuaSlot t1, LuaSlot t2) {
return total1 == total2;
}
LuaDefine(table_equal, "c") {
LuaDefine(table_equal, "table1,table2", "return true if two tables contain the same keys and values") {
LuaArg t1, t2;
LuaRet eql;
LuaStack LS(L, t1, t2, eql);
@@ -41,7 +34,7 @@ LuaDefine(table_equal, "c") {
return LS.result();
}
LuaDefine(table_findremove, "c") {
LuaDefine(table_findremove, "vector,value", "remove all occurrences of value from vector") {
luaL_checktype(L, -2, LUA_TTABLE);
int src = 1;
int dst = 1;
@@ -78,7 +71,7 @@ LuaDefine(table_findremove, "c") {
}
LuaDefine(table_push, "c") {
LuaDefine(table_push, "vector,value", "push a value onto the end of a vector") {
luaL_checktype(L, -2, LUA_TTABLE);
int len = lua_rawlen(L, -2);
lua_pushinteger(L, len+1);
@@ -88,7 +81,7 @@ LuaDefine(table_push, "c") {
return 0;
}
LuaDefine(table_find, "c") {
LuaDefine(table_find, "vector,value", "find the first occurrence of value in vector") {
luaL_checktype(L, -2, LUA_TTABLE);
for (int i = 1; ; i++) {
lua_pushinteger(L, i);
@@ -107,28 +100,21 @@ LuaDefine(table_find, "c") {
}
}
LuaDefine(table_empty, "c") {
LuaDefine(table_empty, "table", "return true if the table is empty") {
luaL_checktype(L, -1, LUA_TTABLE);
lua_pushnil(L);
if (lua_next(L, -2) != 0) {
lua_pop(L, 3);
lua_pushboolean(L, 0);
return 1;
} else {
lua_pop(L, 1);
lua_pushboolean(L, 1);
return 1;
}
int total = lua_nkeys(L, -1);
lua_pushboolean(L, (total == 0)?1:0);
return 1;
}
LuaDefine(table_count, "c") {
LuaDefine(table_count, "table", "return the number of keys in table") {
luaL_checktype(L, -1, LUA_TTABLE);
int total = lua_nkeys(L, -1);
lua_pushinteger(L, total);
return 1;
}
LuaDefine(table_clear, "c") {
LuaDefine(table_clear, "table,metaflag", "clear all keys, and optionally the metatable") {
LuaArg tab, clearmeta;
LuaVar metatable, metafield;
LuaStack LS(L, tab, clearmeta, metatable, metafield);
@@ -148,7 +134,7 @@ LuaDefine(table_clear, "c") {
return LS.result();
}
LuaDefine(table_getflagbits, "c") {
LuaDefine(table_getflagbits, "table", "get the table's flag bits (debugging only)") {
LuaArg tab;
LuaRet bits;
LuaStack LS(L, tab, bits);
@@ -157,7 +143,7 @@ LuaDefine(table_getflagbits, "c") {
return LS.result();
}
LuaDefine(table_setflagbits, "c") {
LuaDefine(table_setflagbits, "table,bits", "set the table's flag bits (debugging only)") {
LuaArg tab, bits;
LuaStack LS(L, tab, bits);
uint16_t ubits = LS.ckinteger(bits);
@@ -238,7 +224,7 @@ int deque_make_room(lua_State *L, int deque, int left, int fill, int max) {
return max;
}
LuaDefine(deque_create, "c") {
LuaDefine(deque_create, "", "create a deque") {
LuaRet rdeque;
LuaVar classobj;
LuaStack LS(L, rdeque, classobj);
@@ -255,7 +241,7 @@ LuaDefine(deque_create, "c") {
return LS.result();
}
LuaDefine(deque_pushl, "c") {
LuaDefine(deque_pushl, "deque,value", "push onto the left end of a deque") {
LuaArg deque, elt;
LuaStack LS(L, deque, elt);
int left, fill, max;
@@ -269,7 +255,7 @@ LuaDefine(deque_pushl, "c") {
return LS.result();
}
LuaDefine(deque_pushr, "c") {
LuaDefine(deque_pushr, "deque,value", "push onto the right end of a deque") {
LuaArg deque, elt;
LuaStack LS(L, deque, elt);
int left, fill, max;
@@ -282,7 +268,7 @@ LuaDefine(deque_pushr, "c") {
return LS.result();
}
LuaDefine(deque_popl, "c") {
LuaDefine(deque_popl, "deque", "pop the left end of a deque") {
LuaArg deque;
LuaRet result;
LuaStack LS(L, deque, result);
@@ -300,7 +286,7 @@ LuaDefine(deque_popl, "c") {
return LS.result();
}
LuaDefine(deque_popr, "c") {
LuaDefine(deque_popr, "deque", "pop the right end of a deque") {
LuaArg deque;
LuaRet result;
LuaStack LS(L, deque, result);
@@ -318,7 +304,7 @@ LuaDefine(deque_popr, "c") {
return LS.result();
}
LuaDefine(deque_nthl, "c") {
LuaDefine(deque_nthl, "deque,n", "return the nth item from the left end of a deque") {
LuaArg deque, nn;
LuaRet result;
LuaStack LS(L, deque, nn, result);
@@ -334,7 +320,7 @@ LuaDefine(deque_nthl, "c") {
return LS.result();
}
LuaDefine(deque_nthr, "c") {
LuaDefine(deque_nthr, "deque,n", "return the nth item from the right end of a deque") {
LuaArg deque, nn;
LuaRet result;
LuaStack LS(L, deque, nn, result);
@@ -350,7 +336,7 @@ LuaDefine(deque_nthr, "c") {
return LS.result();
}
LuaDefine(deque_setl, "c") {
LuaDefine(deque_setl, "deque,n,value", "set the nth item from the left end of a deque") {
LuaArg deque, nn, val;
LuaStack LS(L, deque, nn, val);
int left, fill, max;
@@ -365,7 +351,7 @@ LuaDefine(deque_setl, "c") {
return LS.result();
}
LuaDefine(deque_setr, "c") {
LuaDefine(deque_setr, "deque,n,value", "set the nth item from the right end of a deque") {
LuaArg deque, nn, val;
LuaStack LS(L, deque, nn, val);
int left, fill, max;
@@ -380,7 +366,7 @@ LuaDefine(deque_setr, "c") {
return LS.result();
}
LuaDefine(deque_findl, "c") {
LuaDefine(deque_findl, "deque,value", "find the first occurence of value in deque, starting from left") {
LuaArg deque, val;
LuaRet pos;
LuaVar check;
@@ -399,7 +385,7 @@ LuaDefine(deque_findl, "c") {
return LS.result();
}
LuaDefine(deque_findr, "c") {
LuaDefine(deque_findr, "deque,value", "find the first occurrence of value in deque, starting from right") {
LuaArg deque, val;
LuaRet pos;
LuaVar check;
@@ -419,7 +405,7 @@ LuaDefine(deque_findr, "c") {
return LS.result();
}
LuaDefine(deque_size, "c") {
LuaDefine(deque_size, "deque", "return the number of items in the deque") {
LuaArg deque;
LuaRet size;
LuaStack LS(L, deque, size);
@@ -576,7 +562,7 @@ bool table_getpairs(LuaStack &LS0, LuaSlot tab, LuaSlot pairs, bool sort) {
//
/////////////////////////////////////////////////////////////
LuaDefine(table_nextsortedpair, "c") {
LuaDefine(table_nextsortedpair, "sortedpairs,dummy", "next function used by sortedpairs") {
if (lua_gettop(L) < 2) {
luaL_error(L, "Not enough arguments to nextpair");
}
@@ -595,20 +581,20 @@ LuaDefine(table_nextsortedpair, "c") {
}
}
LuaDefine(table_sortedpairs, "c") {
LuaDefine(table_sortedpairs, "table", "iterate over table, sorting all keys") {
LuaArg tab;
LuaRet closure, rtab, key;
LuaStack LS(L, tab, closure, rtab, key);
bool sorted = table_getpairs(LS, tab, rtab, true);
if (!sorted) {
luaL_error(L, "Cannot iterate over a table with unsortable keys");
luaL_error(L, "Cannot sort the table keys");
}
LS.set(closure, lfn_table_nextsortedpair);
LS.set(key, LuaNil);
return LS.result();
}
LuaDefine(table_semisortedpairs, "c") {
LuaDefine(table_semisortedpairs, "table", "iterate over table, sorting those keys that can be sorted") {
LuaArg tab;
LuaRet closure, rtab, key;
LuaStack LS(L, tab, closure, rtab, key);
@@ -618,7 +604,7 @@ LuaDefine(table_semisortedpairs, "c") {
return LS.result();
}
LuaDefine(table_genlt, "f") {
LuaDefine(genlt, "obj1,obj2", "return true if obj1 is less than obj2 in general ordering") {
LuaArg o1,o2;
LuaRet lt;
LuaStack LS(L, o1, o2, lt);