MINOR: lua: Add a function to get a reference on a table in the stack

The hlua_checktable() function may now be used to create and return a
reference on a table in stack, given its position. This function ensures it
is really a table and throws an exception if not.

This patch is mandatory to allow the support of the filters written in lua.
This commit is contained in:
Christopher Faulet 2020-02-25 10:20:04 +01:00
parent 03fb1b26f7
commit ba9e21dc68

View File

@ -350,6 +350,20 @@ __LJMP unsigned int hlua_checkfunction(lua_State *L, int argno)
return luaL_ref(L, LUA_REGISTRYINDEX);
}
/* Used to check an Lua table type in the stack. It creates and
* returns a reference of the table. This function throws an
* error if the rgument is not a "table".
*/
__LJMP unsigned int hlua_checktable(lua_State *L, int argno)
{
if (!lua_istable(L, argno)) {
const char *msg = lua_pushfstring(L, "table expected, got %s", luaL_typename(L, argno));
WILL_LJMP(luaL_argerror(L, argno, msg));
}
lua_pushvalue(L, argno);
return luaL_ref(L, LUA_REGISTRYINDEX);
}
/* Return the string that is of the top of the stack. */
const char *hlua_get_top_error_string(lua_State *L)
{