summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/clua.cc100
-rw-r--r--crawl-ref/source/clua.h19
-rw-r--r--crawl-ref/source/cluautil.cc60
-rw-r--r--crawl-ref/source/cluautil.h22
-rw-r--r--crawl-ref/source/dlua.h5
-rw-r--r--crawl-ref/source/l_dgn.cc2
-rw-r--r--crawl-ref/source/l_dgngrd.cc1
-rw-r--r--crawl-ref/source/l_dgnit.cc2
-rw-r--r--crawl-ref/source/l_dgnmon.cc2
-rw-r--r--crawl-ref/source/l_item.cc2
-rw-r--r--crawl-ref/source/l_libs.h13
-rw-r--r--crawl-ref/source/l_los.cc1
-rw-r--r--crawl-ref/source/l_you.cc1
-rw-r--r--crawl-ref/source/makefile.obj3
-rw-r--r--crawl-ref/source/mapmark.cc2
15 files changed, 110 insertions, 125 deletions
diff --git a/crawl-ref/source/clua.cc b/crawl-ref/source/clua.cc
index d7e525da6c..5c15de7389 100644
--- a/crawl-ref/source/clua.cc
+++ b/crawl-ref/source/clua.cc
@@ -5,49 +5,15 @@
#include "AppHdr.h"
-#include <algorithm>
-#include <sstream>
-
#include "clua.h"
+
+#include "cluautil.h"
+#include "dlua.h"
#include "l_libs.h"
-#include "abl-show.h"
-#include "artefact.h"
-#include "command.h"
-#include "chardump.h"
-#include "cio.h"
-#include "delay.h"
-#include "dgnevent.h"
-#include "dungeon.h"
#include "files.h"
-#include "food.h"
-#include "invent.h"
-#include "initfile.h"
-#include "itemname.h"
-#include "itemprop.h"
-#include "items.h"
-#include "item_use.h"
-#include "libutil.h"
-#include "macro.h"
-#include "mapdef.h"
-#include "message.h"
-#include "monstuff.h"
-#include "mon-util.h"
-#include "newgame.h"
-#include "notes.h"
-#include "output.h"
-#include "player.h"
-#include "religion.h"
-#include "skills2.h"
-#include "spl-util.h"
#include "state.h"
#include "stuff.h"
-#include "transfor.h"
-#include "travel.h"
-
-#include <cstring>
-#include <map>
-#include <cctype>
#define BUGGY_PCALL_ERROR "667: Malformed response to guarded pcall."
#define BUGGY_SCRIPT_ERROR "666: Killing badly-behaved Lua script."
@@ -392,7 +358,6 @@ void CLua::vfnreturns(const char *format, va_list args)
lua_pop(ls, nrets);
}
-static int push_activity_interrupt(lua_State *ls, activity_interrupt_data *t);
int CLua::push_args(lua_State *ls, const char *format, va_list args,
va_list *targ)
{
@@ -713,65 +678,6 @@ void clua_register_metatable(lua_State *ls, const char *tn,
}
}
-
-
-// Pushing various objects.
-
-static int push_activity_interrupt(lua_State *ls, activity_interrupt_data *t)
-{
- if (!t->data)
- {
- lua_pushnil(ls);
- return 0;
- }
-
- switch (t->apt)
- {
- case AIP_HP_LOSS:
- {
- const ait_hp_loss *ahl = (const ait_hp_loss *) t->data;
- lua_pushnumber(ls, ahl->hp);
- lua_pushnumber(ls, ahl->hurt_type);
- return 1;
- }
- case AIP_INT:
- lua_pushnumber(ls, *(const int *) t->data);
- break;
- case AIP_STRING:
- lua_pushstring(ls, (const char *) t->data);
- break;
- case AIP_MONSTER:
- // FIXME: We're casting away the const...
- push_monster(ls, (monsters *) t->data);
- break;
- default:
- lua_pushnil(ls);
- break;
- }
- return 0;
-}
-
-void clua_push_map(lua_State *ls, map_def *map)
-{
- map_def **mapref = clua_new_userdata<map_def *>(ls, MAP_METATABLE);
- *mapref = map;
-}
-
-void clua_push_coord(lua_State *ls, const coord_def &c)
-{
- lua_pushnumber(ls, c.x);
- lua_pushnumber(ls, c.y);
-}
-
-void clua_push_dgn_event(lua_State *ls, const dgn_event *devent)
-{
- const dgn_event **de =
- clua_new_userdata<const dgn_event *>(ls, DEVENT_METATABLE);
- *de = devent;
-}
-
-
-
////////////////////////////////////////////////////////////////////////
// lua_text_pattern
diff --git a/crawl-ref/source/clua.h b/crawl-ref/source/clua.h
index bc723c0d90..ed35813dd5 100644
--- a/crawl-ref/source/clua.h
+++ b/crawl-ref/source/clua.h
@@ -19,9 +19,6 @@ extern "C" {
#include <map>
#include <set>
-#include "libutil.h"
-#include "externs.h"
-
#ifndef CLUA_MAX_MEMORY_USE
#define CLUA_MAX_MEMORY_USE (6 * 1024)
#endif
@@ -292,14 +289,6 @@ static int lua_object_gc(lua_State *ls)
std::string quote_lua_string(const std::string &s);
-class map_def;
-class dgn_event;
-void clua_push_map(lua_State *ls, map_def *map);
-void clua_push_coord(lua_State *ls, const coord_def &c);
-void clua_push_dgn_event(lua_State *ls, const dgn_event *devent);
-
-void lua_push_items(lua_State *ls, int link);
-
template <class T> T *clua_new_userdata(
lua_State *ls, const char *mt)
{
@@ -309,18 +298,10 @@ template <class T> T *clua_new_userdata(
return static_cast<T*>( udata );
}
-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);
void print_clua_stack();
-#define MAP_METATABLE "dgn.mtmap"
-#define DEVENT_METATABLE "dgn.devent"
-#define MAPMARK_METATABLE "dgn.mapmark"
-#define MAPGRD_METATABLE "dgn.mapgrd"
-#define MAPGRD_COL_METATABLE "dgn.mapgrdcol"
-
#endif
diff --git a/crawl-ref/source/cluautil.cc b/crawl-ref/source/cluautil.cc
new file mode 100644
index 0000000000..291b717a21
--- /dev/null
+++ b/crawl-ref/source/cluautil.cc
@@ -0,0 +1,60 @@
+#include "AppHdr.h"
+
+#include "cluautil.h"
+#include "clua.h"
+#include "l_libs.h"
+
+#include "delay.h"
+
+int push_activity_interrupt(lua_State *ls, activity_interrupt_data *t)
+{
+ if (!t->data)
+ {
+ lua_pushnil(ls);
+ return 0;
+ }
+
+ switch (t->apt)
+ {
+ case AIP_HP_LOSS:
+ {
+ const ait_hp_loss *ahl = (const ait_hp_loss *) t->data;
+ lua_pushnumber(ls, ahl->hp);
+ lua_pushnumber(ls, ahl->hurt_type);
+ return 1;
+ }
+ case AIP_INT:
+ lua_pushnumber(ls, *(const int *) t->data);
+ break;
+ case AIP_STRING:
+ lua_pushstring(ls, (const char *) t->data);
+ break;
+ case AIP_MONSTER:
+ // FIXME: We're casting away the const...
+ push_monster(ls, (monsters *) t->data);
+ break;
+ default:
+ lua_pushnil(ls);
+ break;
+ }
+ return 0;
+}
+
+void clua_push_map(lua_State *ls, map_def *map)
+{
+ map_def **mapref = clua_new_userdata<map_def *>(ls, MAP_METATABLE);
+ *mapref = map;
+}
+
+void clua_push_coord(lua_State *ls, const coord_def &c)
+{
+ lua_pushnumber(ls, c.x);
+ lua_pushnumber(ls, c.y);
+}
+
+void clua_push_dgn_event(lua_State *ls, const dgn_event *devent)
+{
+ const dgn_event **de =
+ clua_new_userdata<const dgn_event *>(ls, DEVENT_METATABLE);
+ *de = devent;
+}
diff --git a/crawl-ref/source/cluautil.h b/crawl-ref/source/cluautil.h
new file mode 100644
index 0000000000..da7d3a5531
--- /dev/null
+++ b/crawl-ref/source/cluautil.h
@@ -0,0 +1,22 @@
+#ifndef CLUAUTIL_H
+#define CLUAUTIL_H
+
+struct lua_State;
+
+struct activity_interrupt_data;
+int push_activity_interrupt(lua_State *ls, activity_interrupt_data *t);
+
+class map_def;
+void clua_push_map(lua_State *ls, map_def *map);
+
+void clua_push_coord(lua_State *ls, const coord_def &c);
+
+class dgn_event;
+void clua_push_dgn_event(lua_State *ls, const dgn_event *devent);
+
+// XXX: currently defined outside cluautil.cc.
+class monsters;
+void push_monster(lua_State *ls, monsters* mons);
+void lua_push_items(lua_State *ls, int link);
+
+#endif
diff --git a/crawl-ref/source/dlua.h b/crawl-ref/source/dlua.h
index dc6a30f531..7dc8c1bbb1 100644
--- a/crawl-ref/source/dlua.h
+++ b/crawl-ref/source/dlua.h
@@ -4,11 +4,10 @@
* Created by: dshaligram on Sat Jun 23 20:02:09 2007 UTC
*/
-#ifndef LUADGN_H
-#define LUADGN_H
+#ifndef DLUA_H
+#define DLUA_H
#include "clua.h"
-#include "stuff.h" // for COORDS macro
// Defined in acr.cc
extern CLua dlua;
diff --git a/crawl-ref/source/l_dgn.cc b/crawl-ref/source/l_dgn.cc
index 4da61a80dd..3fcf3ac5a6 100644
--- a/crawl-ref/source/l_dgn.cc
+++ b/crawl-ref/source/l_dgn.cc
@@ -1,7 +1,7 @@
#include "AppHdr.h"
-#include "dlua.h"
#include "l_libs.h"
+#include "cluautil.h"
#include <cmath>
diff --git a/crawl-ref/source/l_dgngrd.cc b/crawl-ref/source/l_dgngrd.cc
index 5a9454bcf9..f85f7ed305 100644
--- a/crawl-ref/source/l_dgngrd.cc
+++ b/crawl-ref/source/l_dgngrd.cc
@@ -9,6 +9,7 @@
#include "l_libs.h"
#include "directn.h"
+#include "stuff.h"
#include "terrain.h"
const char *dngn_feature_names[] =
diff --git a/crawl-ref/source/l_dgnit.cc b/crawl-ref/source/l_dgnit.cc
index 4f9cebd86c..4ed148940f 100644
--- a/crawl-ref/source/l_dgnit.cc
+++ b/crawl-ref/source/l_dgnit.cc
@@ -5,7 +5,7 @@
#include "AppHdr.h"
-#include "dlua.h"
+#include "cluautil.h"
#include "l_libs.h"
#include "dungeon.h"
diff --git a/crawl-ref/source/l_dgnmon.cc b/crawl-ref/source/l_dgnmon.cc
index ca1eef82a5..4b8a7bc5ba 100644
--- a/crawl-ref/source/l_dgnmon.cc
+++ b/crawl-ref/source/l_dgnmon.cc
@@ -5,7 +5,7 @@
#include "AppHdr.h"
-#include "dlua.h"
+#include "cluautil.h"
#include "l_libs.h"
#include "dungeon.h"
diff --git a/crawl-ref/source/l_item.cc b/crawl-ref/source/l_item.cc
index 3152b7d9ef..e9c0048562 100644
--- a/crawl-ref/source/l_item.cc
+++ b/crawl-ref/source/l_item.cc
@@ -2,7 +2,7 @@
#include <sstream>
-#include "clua.h"
+#include "cluautil.h"
#include "l_libs.h"
#include "artefact.h"
diff --git a/crawl-ref/source/l_libs.h b/crawl-ref/source/l_libs.h
index b274ee269d..705ff65aae 100644
--- a/crawl-ref/source/l_libs.h
+++ b/crawl-ref/source/l_libs.h
@@ -24,8 +24,18 @@ void cluaopen_you(lua_State *ls);
void cluaopen_globals(lua_State *ls);
/*
+ * (Shared) metatable names.
+ */
+
+#define MAP_METATABLE "dgn.mtmap"
+#define DEVENT_METATABLE "dgn.devent"
+#define MAPMARK_METATABLE "dgn.mapmark"
+#define MAPGRD_METATABLE "dgn.mapgrd"
+#define MAPGRD_COL_METATABLE "dgn.mapgrdcol"
+
+/*
* Libraries and loaders for dlua, accessed from init_dungeon_lua().
- * TODO: Move these to dluaopen_*.
+ * TODO: Rename these to dluaopen_*.
*/
extern const struct luaL_reg debug_dlib[];
@@ -55,6 +65,7 @@ void dluaopen_you(lua_State *ls);
/*
* Macros for processing object arguments.
+ * TODO: Collect these in cluautil.{h,cc}.
*/
#define GETCOORD(c, p1, p2, boundfn) \
coord_def c; \
diff --git a/crawl-ref/source/l_los.cc b/crawl-ref/source/l_los.cc
index e83c9358c7..5c841fc50d 100644
--- a/crawl-ref/source/l_los.cc
+++ b/crawl-ref/source/l_los.cc
@@ -11,6 +11,7 @@
#include "los.h"
#include "ray.h"
+#include "stuff.h"
#define RAY_METATABLE "dgn.ray"
diff --git a/crawl-ref/source/l_you.cc b/crawl-ref/source/l_you.cc
index 4e9809094d..5718402139 100644
--- a/crawl-ref/source/l_you.cc
+++ b/crawl-ref/source/l_you.cc
@@ -16,6 +16,7 @@
#include "skills2.h"
#include "spells3.h"
#include "spl-util.h"
+#include "stuff.h"
#include "transfor.h"
/////////////////////////////////////////////////////////////////////
diff --git a/crawl-ref/source/makefile.obj b/crawl-ref/source/makefile.obj
index 30c76c95af..3beea95de9 100644
--- a/crawl-ref/source/makefile.obj
+++ b/crawl-ref/source/makefile.obj
@@ -115,4 +115,5 @@ view.o \
xom.o \
kills.o \
mt19937ar.o \
-clua.o
+clua.o \
+cluautil.o
diff --git a/crawl-ref/source/mapmark.cc b/crawl-ref/source/mapmark.cc
index ecef3cd297..2003f87325 100644
--- a/crawl-ref/source/mapmark.cc
+++ b/crawl-ref/source/mapmark.cc
@@ -11,9 +11,11 @@
#include "mapmark.h"
#include "clua.h"
+#include "cluautil.h"
#include "directn.h"
#include "dlua.h"
#include "libutil.h"
+#include "l_libs.h"
#include "stuff.h"
#include "tags.h"