diff options
Diffstat (limited to 'ldblib.c')
-rw-r--r-- | ldblib.c | 35 |
1 files changed, 34 insertions, 1 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: ldblib.c,v 1.132 2012/01/19 20:14:44 roberto Exp roberto $ | 2 | ** $Id: ldblib.c,v 1.133 2013/06/25 19:37:00 roberto Exp roberto $ |
3 | ** Interface from Lua to its debug API | 3 | ** Interface from Lua to its debug API |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -34,6 +34,38 @@ static int db_numbits (lua_State *L) { | |||
34 | } | 34 | } |
35 | 35 | ||
36 | 36 | ||
37 | static int db_subtype (lua_State *L) { | ||
38 | int tp = lua_type(L, 1); | ||
39 | switch (tp) { | ||
40 | case LUA_TNONE: | ||
41 | luaL_checkany(L, 1); | ||
42 | break; | ||
43 | case LUA_TNUMBER: | ||
44 | if (lua_isinteger(L, 1)) | ||
45 | lua_pushliteral(L, "integer"); | ||
46 | else | ||
47 | lua_pushliteral(L, "float"); | ||
48 | break; | ||
49 | case LUA_TFUNCTION: | ||
50 | if (lua_iscfunction(L, 1)) | ||
51 | lua_pushliteral(L, "Cfunction"); | ||
52 | else | ||
53 | lua_pushliteral(L, "Luafunction"); | ||
54 | break; | ||
55 | case LUA_TUSERDATA: | ||
56 | if (lua_islightuserdata(L, 1)) | ||
57 | lua_pushliteral(L, "lightudata"); | ||
58 | else | ||
59 | lua_pushliteral(L, "fulludata"); | ||
60 | break; | ||
61 | default: | ||
62 | lua_pushstring(L, lua_typename(L, tp)); | ||
63 | break; | ||
64 | } | ||
65 | return 1; | ||
66 | } | ||
67 | |||
68 | |||
37 | static int db_getregistry (lua_State *L) { | 69 | static int db_getregistry (lua_State *L) { |
38 | lua_pushvalue(L, LUA_REGISTRYINDEX); | 70 | lua_pushvalue(L, LUA_REGISTRYINDEX); |
39 | return 1; | 71 | return 1; |
@@ -399,6 +431,7 @@ static const luaL_Reg dblib[] = { | |||
399 | {"setlocal", db_setlocal}, | 431 | {"setlocal", db_setlocal}, |
400 | {"setmetatable", db_setmetatable}, | 432 | {"setmetatable", db_setmetatable}, |
401 | {"setupvalue", db_setupvalue}, | 433 | {"setupvalue", db_setupvalue}, |
434 | {"subtype", db_subtype}, | ||
402 | {"traceback", db_traceback}, | 435 | {"traceback", db_traceback}, |
403 | {NULL, NULL} | 436 | {NULL, NULL} |
404 | }; | 437 | }; |