From 07ae23cd40ffccd1007ed4f6f736e769daaa6d6a Mon Sep 17 00:00:00 2001 From: luca salmin Date: Mon, 22 Nov 2021 10:44:39 +0100 Subject: [PATCH] luaL_checkboolean luaL_optboolean --- VM/include/lualib.h | 2 ++ VM/src/laux.cpp | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/VM/include/lualib.h b/VM/include/lualib.h index fa836955..596b0104 100644 --- a/VM/include/lualib.h +++ b/VM/include/lualib.h @@ -20,6 +20,8 @@ LUALIB_API int luaL_getmetafield(lua_State* L, int obj, const char* e); LUALIB_API int luaL_callmeta(lua_State* L, int obj, const char* e); LUALIB_API l_noret luaL_typeerrorL(lua_State* L, int narg, const char* tname); LUALIB_API l_noret luaL_argerrorL(lua_State* L, int narg, const char* extramsg); +LUALIB_API bool luaL_checkboolean(lua_State* L, int numArg); +LUALIB_API bool luaL_optboolean(lua_State* L, int numArg, bool def); LUALIB_API const char* luaL_checklstring(lua_State* L, int numArg, size_t* l); LUALIB_API const char* luaL_optlstring(lua_State* L, int numArg, const char* def, size_t* l); LUALIB_API double luaL_checknumber(lua_State* L, int numArg); diff --git a/VM/src/laux.cpp b/VM/src/laux.cpp index 2a684ee4..141f40f9 100644 --- a/VM/src/laux.cpp +++ b/VM/src/laux.cpp @@ -149,6 +149,21 @@ LUALIB_API void luaL_checkany(lua_State* L, int narg) luaL_error(L, "missing argument #%d", narg); } +LUALIB_API bool luaL_checkboolean(lua_State* L, int narg) +{ + if(!lua_isboolean(L, narg)) + tag_error(L, narg, LUA_TBOOLEAN); + return lua_toboolean(L, narg); +} + +LUALIB_API bool luaL_optboolean(lua_State* L, int narg, bool def) +{ + if (lua_isnoneornil(L, narg)) + return def; + else + return luaL_checkboolean(L, narg); +} + LUALIB_API const char* luaL_checklstring(lua_State* L, int narg, size_t* len) { const char* s = lua_tolstring(L, narg, len);