From d766e2ae175495da85714d00e61d76174c5acc5b Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Sun, 25 Feb 2018 09:48:16 -0300 Subject: first (parcial) implementation of 'keyin'/'removekey' (still no metamethods, no raw verssions) --- lbaselib.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'lbaselib.c') diff --git a/lbaselib.c b/lbaselib.c index c95a6e53..443bf066 100644 --- a/lbaselib.c +++ b/lbaselib.c @@ -1,5 +1,5 @@ /* -** $Id: lbaselib.c,v 1.318 2017/11/16 13:19:06 roberto Exp roberto $ +** $Id: lbaselib.c,v 1.319 2018/02/05 17:10:52 roberto Exp roberto $ ** Basic library ** See Copyright Notice in lua.h */ @@ -170,6 +170,24 @@ static int luaB_rawset (lua_State *L) { } +static int luaB_keyin (lua_State *L) { + luaL_checktype(L, 1, LUA_TTABLE); + luaL_checkany(L, 2); + lua_settop(L, 2); + lua_pushboolean(L, lua_keyin(L, 1)); + return 1; +} + + +static int luaB_removekey (lua_State *L) { + luaL_checktype(L, 1, LUA_TTABLE); + luaL_checkany(L, 2); + lua_settop(L, 2); + lua_removekey(L, 1); + return 0; +} + + static int pushmode (lua_State *L, int oldmode) { lua_pushstring(L, (oldmode == LUA_GCINC) ? "incremental" : "generational"); return 1; @@ -501,6 +519,8 @@ static const luaL_Reg base_funcs[] = { {"rawlen", luaB_rawlen}, {"rawget", luaB_rawget}, {"rawset", luaB_rawset}, + {"keyin", luaB_keyin}, + {"removekey", luaB_removekey}, {"select", luaB_select}, {"setmetatable", luaB_setmetatable}, {"tonumber", luaB_tonumber}, -- cgit v1.2.3-55-g6feb