diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-11-28 21:29:47 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-11-28 21:29:47 +0000 |
commit | fde21eb9a22782da835911ea2a0d3b70836a81a5 (patch) | |
tree | c3fbd63c29e39a71cea9d5a7fe4d8d3a345e89a9 /crawl-ref/source/clua.h | |
parent | c8e9d5bb28e0c9d478d97b329ad504958a9ccc84 (diff) | |
download | crawl-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.h | 17 |
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" |