summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/clua.h
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-11-28 21:29:47 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-11-28 21:29:47 +0000
commitfde21eb9a22782da835911ea2a0d3b70836a81a5 (patch)
treec3fbd63c29e39a71cea9d5a7fe4d8d3a345e89a9 /crawl-ref/source/clua.h
parentc8e9d5bb28e0c9d478d97b329ad504958a9ccc84 (diff)
downloadcrawl-ref-fde21eb9a22782da835911ea2a0d3b70836a81a5.tar.gz
crawl-ref-fde21eb9a22782da835911ea2a0d3b70836a81a5.zip
Fixed slow ziggurat level build, fixed ziggurat dismissals of simulacra resulting in messages.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7679 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/clua.h')
-rw-r--r--crawl-ref/source/clua.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/crawl-ref/source/clua.h b/crawl-ref/source/clua.h
index 014939c92a..7880eabcb6 100644
--- a/crawl-ref/source/clua.h
+++ b/crawl-ref/source/clua.h
@@ -280,9 +280,18 @@ inline static T *util_get_userdata(lua_State *ls, int ndx)
}
template <class T>
-inline static T *clua_get_userdata(lua_State *ls, const char *mt)
+inline static T *clua_get_userdata(lua_State *ls, const char *mt, int ndx = 1)
{
- return static_cast<T*>( luaL_checkudata( ls, 1, mt ) );
+ return static_cast<T*>( luaL_checkudata( ls, ndx, mt ) );
+}
+
+template <class T>
+static int lua_object_gc(lua_State *ls)
+{
+ T **pptr = static_cast<T**>( lua_touserdata(ls, 1) );
+ if (pptr)
+ delete *pptr;
+ return (0);
}
std::string quote_lua_string(const std::string &s);
@@ -306,6 +315,10 @@ template <class T> T *clua_new_userdata(
void push_monster(lua_State *ls, monsters *mons);
+void clua_register_metatable(lua_State *ls, const char *tn,
+ const luaL_reg *lr,
+ int (*gcfn)(lua_State *ls) = NULL);
+
#define MAP_METATABLE "dgn.mtmap"
#define DEVENT_METATABLE "dgn.devent"
#define MAPMARK_METATABLE "dgn.mapmark"