From f5780905df0a71ba2d29fff0c4543bb51cc3ddc5 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 5 Oct 2006 02:43:36 +0000 Subject: [PATCH] __type metamethod --- stepmania/src/lua-5.1/src/lauxlib.c | 12 ++++++++++-- stepmania/src/lua-5.1/src/lauxlib.h | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/stepmania/src/lua-5.1/src/lauxlib.c b/stepmania/src/lua-5.1/src/lauxlib.c index 7eb9779aa4..536a3db82d 100644 --- a/stepmania/src/lua-5.1/src/lauxlib.c +++ b/stepmania/src/lua-5.1/src/lauxlib.c @@ -57,10 +57,18 @@ LUALIB_API int luaL_argerror (lua_State *L, int narg, const char *extramsg) { narg, ar.name, extramsg); } +LUALIB_API int luaL_pushtype (lua_State *L, int narg) { + if (!luaL_callmeta(L, narg, "__type")) + lua_pushstring (L, luaL_typename(L, narg)); + + return 1; +} LUALIB_API int luaL_typerror (lua_State *L, int narg, const char *tname) { - const char *msg = lua_pushfstring(L, "%s expected, got %s", - tname, luaL_typename(L, narg)); + const char *msg; + luaL_pushtype(L, narg); + msg = lua_pushfstring(L, "%s expected, got %s", + tname, lua_tostring(L, -1)); return luaL_argerror(L, narg, msg); } diff --git a/stepmania/src/lua-5.1/src/lauxlib.h b/stepmania/src/lua-5.1/src/lauxlib.h index d58f290527..9d234efcb9 100644 --- a/stepmania/src/lua-5.1/src/lauxlib.h +++ b/stepmania/src/lua-5.1/src/lauxlib.h @@ -107,6 +107,7 @@ LUALIB_API const char *(luaL_findtable) (lua_State *L, int idx, #define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) #define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) +LUALIB_API int (luaL_pushtype) (lua_State *L, int idx); #define luaL_dofile(L, fn) \ (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))