summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-10-21 10:26:44 +0200
committerRobert Vollmert <rvollmert@gmx.net>2009-10-21 10:54:13 +0200
commitfccc2460c9eb17ecb89cd02e9fac580a32ec794b (patch)
tree87e6bf8a924fd69147c1f86641a9b730cea392c3
parent6b4885b07d0a5228d7dc20cbbb210a1a168bc8da (diff)
downloadcrawl-ref-fccc2460c9eb17ecb89cd02e9fac580a32ec794b.tar.gz
crawl-ref-fccc2460c9eb17ecb89cd02e9fac580a32ec794b.zip
Move utility functions from clua.cc to cluautil.cc.
cluautil.cc should eventually contain all of the functions for passing objects from and to lua, at least the shared ones. Also cut down on clua.cc include list.
-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"