From ad3491890872721b7cfb81517c1465c7bdbd53a8 Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Wed, 12 Apr 2017 16:26:13 +0200 Subject: debug.setmetatable debug.getmetatable --- src/ldblib.js | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/ldblib.js b/src/ldblib.js index 7dde1c4..2edc507 100644 --- a/src/ldblib.js +++ b/src/ldblib.js @@ -23,6 +23,22 @@ const db_getregistry = function(L) { return 1; }; +const db_getmetatable = function(L) { + lauxlib.luaL_checkany(L, 1); + if (!lapi.lua_getmetatable(L, 1)) { + lapi.lua_pushnil(L); /* no metatable */ + } + return 1; +}; + +const db_setmetatable = function(L) { + const t = lapi.lua_type(L, 2); + lauxlib.luaL_argcheck(L, t == lua.CT.LUA_TNIL || t == lua.CT.LUA_TTABLE, 2, lua.to_luastring("nil or table expected")); + lapi.lua_settop(L, 2); + lapi.lua_setmetatable(L, 1); + return 1; /* return 1st argument */ +}; + /* ** Auxiliary function used by several library functions: check for ** an optional thread as function's first argument and set 'arg' with @@ -194,11 +210,13 @@ const db_traceback = function(L) { }; const dblib = { - "getinfo": db_getinfo, - "getlocal": db_getlocal, - "getregistry": db_getregistry, - "traceback": db_traceback, - "upvalueid": db_upvalueid + "getinfo": db_getinfo, + "getlocal": db_getlocal, + "getmetatable": db_getmetatable, + "getregistry": db_getregistry, + "setmetatable": db_setmetatable, + "traceback": db_traceback, + "upvalueid": db_upvalueid }; // Only with Node -- cgit v1.2.3-54-g00ecf