Add luaL_checkboolean and luaL_optboolean

This commit is contained in:
Pelanyo Kamara 2021-11-21 21:37:10 +00:00
parent 1bf0c75cfd
commit 5b6d6e6376
No known key found for this signature in database
GPG key ID: 848AD95363B749B5
2 changed files with 20 additions and 0 deletions

View file

@ -24,6 +24,9 @@ LUALIB_API const char* luaL_optlstring(lua_State* L, int numArg, const char* def
LUALIB_API double luaL_checknumber(lua_State* L, int numArg);
LUALIB_API double luaL_optnumber(lua_State* L, int nArg, double def);
LUALIB_API bool luaL_checkboolean(lua_State* L, int narg);
LUALIB_API bool luaL_optboolean(lua_State* L, int narg, bool default);
LUALIB_API int luaL_checkinteger(lua_State* L, int numArg);
LUALIB_API int luaL_optinteger(lua_State* L, int nArg, int def);
LUALIB_API unsigned luaL_checkunsigned(lua_State* L, int numArg);

View file

@ -183,6 +183,23 @@ LUALIB_API double luaL_optnumber(lua_State* L, int narg, double def)
return luaL_opt(L, luaL_checknumber, narg, def);
}
LUALIB_API bool luaL_checkboolean(lua_State* L, int narg)
{
// This checks specifically for boolean values, ignoring
// all other truthy/falsy values. If the desired result
// is true if value is present then lua_toboolean should
// directly be used instead.
const auto val = lua_isboolean(L, narg);
if (!val)
tag_error(L, narg, LUA_TBOOLEAN);
return lua_toboolean(L, narg);
}
LUALIB_API bool luaL_optboolean(lua_State* L, int narg, bool def)
{
return luaL_opt(L, luaL_checkboolean, narg, def);
}
LUALIB_API int luaL_checkinteger(lua_State* L, int narg)
{
int isnum;