From 7632af3c73fc4e4ae3ad4c98c90c39b47c3b8379 Mon Sep 17 00:00:00 2001 From: Jude Melton-Houghton Date: Tue, 4 Oct 2022 08:31:36 -0400 Subject: Consolidate API object code (#12728) Co-authored-by: sfan5 --- src/script/lua_api/l_nodetimer.cpp | 46 +++++++++----------------------------- 1 file changed, 11 insertions(+), 35 deletions(-) (limited to 'src/script/lua_api/l_nodetimer.cpp') diff --git a/src/script/lua_api/l_nodetimer.cpp b/src/script/lua_api/l_nodetimer.cpp index 8a302149f..c93574144 100644 --- a/src/script/lua_api/l_nodetimer.cpp +++ b/src/script/lua_api/l_nodetimer.cpp @@ -29,18 +29,10 @@ int NodeTimerRef::gc_object(lua_State *L) { return 0; } -NodeTimerRef* NodeTimerRef::checkobject(lua_State *L, int narg) -{ - luaL_checktype(L, narg, LUA_TUSERDATA); - void *ud = luaL_checkudata(L, narg, className); - if(!ud) luaL_typerror(L, narg, className); - return *(NodeTimerRef**)ud; // unbox pointer -} - int NodeTimerRef::l_set(lua_State *L) { MAP_LOCK_REQUIRED; - NodeTimerRef *o = checkobject(L, 1); + NodeTimerRef *o = checkObject(L, 1); f32 t = readParam(L,2); f32 e = readParam(L,3); o->m_map->setNodeTimer(NodeTimer(t, e, o->m_p)); @@ -50,7 +42,7 @@ int NodeTimerRef::l_set(lua_State *L) int NodeTimerRef::l_start(lua_State *L) { MAP_LOCK_REQUIRED; - NodeTimerRef *o = checkobject(L, 1); + NodeTimerRef *o = checkObject(L, 1); f32 t = readParam(L,2); o->m_map->setNodeTimer(NodeTimer(t, 0, o->m_p)); return 0; @@ -59,7 +51,7 @@ int NodeTimerRef::l_start(lua_State *L) int NodeTimerRef::l_stop(lua_State *L) { MAP_LOCK_REQUIRED; - NodeTimerRef *o = checkobject(L, 1); + NodeTimerRef *o = checkObject(L, 1); o->m_map->removeNodeTimer(o->m_p); return 0; } @@ -67,7 +59,7 @@ int NodeTimerRef::l_stop(lua_State *L) int NodeTimerRef::l_is_started(lua_State *L) { MAP_LOCK_REQUIRED; - NodeTimerRef *o = checkobject(L, 1); + NodeTimerRef *o = checkObject(L, 1); NodeTimer t = o->m_map->getNodeTimer(o->m_p); lua_pushboolean(L,(t.timeout != 0)); return 1; @@ -76,7 +68,7 @@ int NodeTimerRef::l_is_started(lua_State *L) int NodeTimerRef::l_get_timeout(lua_State *L) { MAP_LOCK_REQUIRED; - NodeTimerRef *o = checkobject(L, 1); + NodeTimerRef *o = checkObject(L, 1); NodeTimer t = o->m_map->getNodeTimer(o->m_p); lua_pushnumber(L,t.timeout); return 1; @@ -85,7 +77,7 @@ int NodeTimerRef::l_get_timeout(lua_State *L) int NodeTimerRef::l_get_elapsed(lua_State *L) { MAP_LOCK_REQUIRED; - NodeTimerRef *o = checkobject(L, 1); + NodeTimerRef *o = checkObject(L, 1); NodeTimer t = o->m_map->getNodeTimer(o->m_p); lua_pushnumber(L,t.elapsed); return 1; @@ -103,27 +95,11 @@ void NodeTimerRef::create(lua_State *L, v3s16 p, ServerMap *map) void NodeTimerRef::Register(lua_State *L) { - lua_newtable(L); - int methodtable = lua_gettop(L); - luaL_newmetatable(L, className); - int metatable = lua_gettop(L); - - lua_pushliteral(L, "__metatable"); - lua_pushvalue(L, methodtable); - lua_settable(L, metatable); // hide metatable from Lua getmetatable() - - lua_pushliteral(L, "__index"); - lua_pushvalue(L, methodtable); - lua_settable(L, metatable); - - lua_pushliteral(L, "__gc"); - lua_pushcfunction(L, gc_object); - lua_settable(L, metatable); - - lua_pop(L, 1); // drop metatable - - luaL_register(L, nullptr, methods); // fill methodtable - lua_pop(L, 1); // drop methodtable + static const luaL_Reg metamethods[] = { + {"__gc", gc_object}, + {0, 0} + }; + registerClass(L, className, methods, metamethods); // Cannot be created from Lua //lua_register(L, className, create_object); -- cgit v1.2.3