summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/clua.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/clua.cc')
-rw-r--r--crawl-ref/source/clua.cc30
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);
+}