diff options
Diffstat (limited to 'crawl-ref/source/clua.cc')
-rw-r--r-- | crawl-ref/source/clua.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/crawl-ref/source/clua.cc b/crawl-ref/source/clua.cc index 7fb7a310a7..c0c6e6845f 100644 --- a/crawl-ref/source/clua.cc +++ b/crawl-ref/source/clua.cc @@ -2946,3 +2946,33 @@ void lua_datum::cleanup() lua_settable(lua, LUA_REGISTRYINDEX); } } + +#define LUA_CHECK_TYPE(check) \ + lua_stack_cleaner clean(lua); \ + push(); \ + return check(lua, -1) + +bool lua_datum::is_table() const +{ + LUA_CHECK_TYPE(lua_istable); +} + +bool lua_datum::is_function() const +{ + LUA_CHECK_TYPE(lua_isfunction); +} + +bool lua_datum::is_number() const +{ + LUA_CHECK_TYPE(lua_isnumber); +} + +bool lua_datum::is_string() const +{ + LUA_CHECK_TYPE(lua_isstring); +} + +bool lua_datum::is_udata() const +{ + LUA_CHECK_TYPE(lua_isuserdata); +} |