From fcf99bf7889ab33d8be84504378c32865f4a60f3 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 10 Jul 2013 17:57:05 -0300 Subject: 'math.isfloat' replaced by 'debug.subtype' --- ldblib.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'ldblib.c') diff --git a/ldblib.c b/ldblib.c index 0e761aee..9da5e49f 100644 --- a/ldblib.c +++ b/ldblib.c @@ -1,5 +1,5 @@ /* -** $Id: ldblib.c,v 1.132 2012/01/19 20:14:44 roberto Exp roberto $ +** $Id: ldblib.c,v 1.133 2013/06/25 19:37:00 roberto Exp roberto $ ** Interface from Lua to its debug API ** See Copyright Notice in lua.h */ @@ -34,6 +34,38 @@ static int db_numbits (lua_State *L) { } +static int db_subtype (lua_State *L) { + int tp = lua_type(L, 1); + switch (tp) { + case LUA_TNONE: + luaL_checkany(L, 1); + break; + case LUA_TNUMBER: + if (lua_isinteger(L, 1)) + lua_pushliteral(L, "integer"); + else + lua_pushliteral(L, "float"); + break; + case LUA_TFUNCTION: + if (lua_iscfunction(L, 1)) + lua_pushliteral(L, "Cfunction"); + else + lua_pushliteral(L, "Luafunction"); + break; + case LUA_TUSERDATA: + if (lua_islightuserdata(L, 1)) + lua_pushliteral(L, "lightudata"); + else + lua_pushliteral(L, "fulludata"); + break; + default: + lua_pushstring(L, lua_typename(L, tp)); + break; + } + return 1; +} + + static int db_getregistry (lua_State *L) { lua_pushvalue(L, LUA_REGISTRYINDEX); return 1; @@ -399,6 +431,7 @@ static const luaL_Reg dblib[] = { {"setlocal", db_setlocal}, {"setmetatable", db_setmetatable}, {"setupvalue", db_setupvalue}, + {"subtype", db_subtype}, {"traceback", db_traceback}, {NULL, NULL} }; -- cgit v1.2.3-55-g6feb