Move lua library headers to separate l_libs.h, fixing another compilation error…
3A5FX3Y4RPKWQEHKKXZKXZJ7RKV6RKWT7GTR4WFE5UBWKV2HT4RQC D6A2MLKI7UQPZ4A4D6QSM6STFVDY77IY5APXCBT3LNH6CDVKT67QC LE5U6CTXEIETQN5GOVYF2K2VCISRXR3ULORXDKIKWYDVBG5GS3WAC T7CCGLOZ25B7BQKKGR6IA6LWBRKUWTXLTIRXUQ4YKQRVAA7AHZKQC MQ62OAMLGJVRW2QIL4PAZRAU6PC52ZVGY2FCOBIY6IWGQIHMU5CAC UL7XFKMUX3WIU4O2LZANK4ECJ654UZPDBFGNXUEYZYOLKBYBCG6AC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC AUXHSGS4EFOPZ6TVZYWNVOUDO7NYKUKE3HBKGQQWTALSVFOE3HAAC #include "clua.h"extern const struct luaL_reg crawl_lib[];extern const struct luaL_reg dgn_lib[];extern const struct luaL_reg file_lib[];extern const struct luaL_reg los_lib[];void luaopen_ray(lua_State *ls);void register_mapdef_tables(lua_State *ls);
#include "AppHdr.h"#include "dlua.h"#include "l_libs.h"#include "tags.h"static int file_marshall(lua_State *ls){if (lua_gettop(ls) != 2)luaL_error(ls, "Need two arguments: tag header and value");writer &th(*static_cast<writer*>( lua_touserdata(ls, 1) ));if (lua_isnumber(ls, 2))marshallLong(th, luaL_checklong(ls, 2));else if (lua_isboolean(ls, 2))marshallByte(th, lua_toboolean(ls, 2));else if (lua_isstring(ls, 2))marshallString(th, lua_tostring(ls, 2));else if (lua_isfunction(ls, 2)){dlua_chunk chunk(ls);marshallString(th, chunk.compiled_chunk());}return (0);}static int file_unmarshall_boolean(lua_State *ls){if (lua_gettop(ls) != 1)luaL_error(ls, "Need reader as one argument");reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));lua_pushboolean(ls, unmarshallByte(th));return (1);}static int file_unmarshall_number(lua_State *ls){if (lua_gettop(ls) != 1)luaL_error(ls, "Need reader as one argument");reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));lua_pushnumber(ls, unmarshallLong(th));return (1);}static int file_unmarshall_string(lua_State *ls){if (lua_gettop(ls) != 1)luaL_error(ls, "Need reader as one argument");reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));lua_pushstring(ls, unmarshallString(th).c_str());return (1);}static int file_unmarshall_fn(lua_State *ls){if (lua_gettop(ls) != 1)luaL_error(ls, "Need reader as one argument");reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));const std::string s(unmarshallString(th, LUA_CHUNK_MAX_SIZE));dlua_chunk chunk = dlua_chunk::precompiled(s);if (chunk.load(dlua))lua_pushnil(ls);return (1);}enum lua_persist_type{LPT_NONE,LPT_NUMBER,LPT_STRING,LPT_FUNCTION,LPT_NIL,LPT_BOOLEAN};static int file_marshall_meta(lua_State *ls){if (lua_gettop(ls) != 2)luaL_error(ls, "Need two arguments: tag header and value");writer &th(*static_cast<writer*>( lua_touserdata(ls, 1) ));lua_persist_type ptype = LPT_NONE;if (lua_isnumber(ls, 2))ptype = LPT_NUMBER;else if (lua_isboolean(ls, 2))ptype = LPT_BOOLEAN;else if (lua_isstring(ls, 2))ptype = LPT_STRING;else if (lua_isfunction(ls, 2))ptype = LPT_FUNCTION;else if (lua_isnil(ls, 2))ptype = LPT_NIL;elseluaL_error(ls,make_stringf("Cannot marshall %s",lua_typename(ls, lua_type(ls, 2))).c_str());marshallByte(th, ptype);if (ptype != LPT_NIL)file_marshall(ls);return (0);}static int file_unmarshall_meta(lua_State *ls){reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));const lua_persist_type ptype =static_cast<lua_persist_type>(unmarshallByte(th));switch (ptype){case LPT_BOOLEAN:return file_unmarshall_boolean(ls);case LPT_NUMBER:return file_unmarshall_number(ls);case LPT_STRING:return file_unmarshall_string(ls);case LPT_FUNCTION:return file_unmarshall_fn(ls);case LPT_NIL:lua_pushnil(ls);return (1);default:luaL_error(ls, "Unexpected type signature.");}// Never get here.return (0);}const struct luaL_reg file_lib[] ={{ "marshall", file_marshall },{ "marshall_meta", file_marshall_meta },{ "unmarshall_meta", file_unmarshall_meta },{ "unmarshall_number", file_unmarshall_number },{ "unmarshall_string", file_unmarshall_string },{ "unmarshall_fn", file_unmarshall_fn },{ NULL, NULL }};
extern const struct luaL_reg crawl_lib[];extern const struct luaL_reg dgn_lib[];extern const struct luaL_reg los_lib[];void luaopen_ray(lua_State *ls);void register_mapdef_tables(lua_State *ls);
}static int file_marshall(lua_State *ls){if (lua_gettop(ls) != 2)luaL_error(ls, "Need two arguments: tag header and value");writer &th(*static_cast<writer*>( lua_touserdata(ls, 1) ));if (lua_isnumber(ls, 2))marshallLong(th, luaL_checklong(ls, 2));else if (lua_isboolean(ls, 2))marshallByte(th, lua_toboolean(ls, 2));else if (lua_isstring(ls, 2))marshallString(th, lua_tostring(ls, 2));else if (lua_isfunction(ls, 2)){dlua_chunk chunk(ls);marshallString(th, chunk.compiled_chunk());}return (0);}static int file_unmarshall_boolean(lua_State *ls){if (lua_gettop(ls) != 1)luaL_error(ls, "Need reader as one argument");reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));lua_pushboolean(ls, unmarshallByte(th));return (1);}static int file_unmarshall_number(lua_State *ls){if (lua_gettop(ls) != 1)luaL_error(ls, "Need reader as one argument");reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));lua_pushnumber(ls, unmarshallLong(th));return (1);}static int file_unmarshall_string(lua_State *ls){if (lua_gettop(ls) != 1)luaL_error(ls, "Need reader as one argument");reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));lua_pushstring(ls, unmarshallString(th).c_str());return (1);}static int file_unmarshall_fn(lua_State *ls){if (lua_gettop(ls) != 1)luaL_error(ls, "Need reader as one argument");reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));const std::string s(unmarshallString(th, LUA_CHUNK_MAX_SIZE));dlua_chunk chunk = dlua_chunk::precompiled(s);if (chunk.load(dlua))lua_pushnil(ls);return (1);}enum lua_persist_type{LPT_NONE,LPT_NUMBER,LPT_STRING,LPT_FUNCTION,LPT_NIL,LPT_BOOLEAN};static int file_marshall_meta(lua_State *ls){if (lua_gettop(ls) != 2)luaL_error(ls, "Need two arguments: tag header and value");writer &th(*static_cast<writer*>( lua_touserdata(ls, 1) ));lua_persist_type ptype = LPT_NONE;if (lua_isnumber(ls, 2))ptype = LPT_NUMBER;else if (lua_isboolean(ls, 2))ptype = LPT_BOOLEAN;else if (lua_isstring(ls, 2))ptype = LPT_STRING;else if (lua_isfunction(ls, 2))ptype = LPT_FUNCTION;else if (lua_isnil(ls, 2))ptype = LPT_NIL;elseluaL_error(ls,make_stringf("Cannot marshall %s",lua_typename(ls, lua_type(ls, 2))).c_str());marshallByte(th, ptype);if (ptype != LPT_NIL)file_marshall(ls);return (0);}static int file_unmarshall_meta(lua_State *ls){reader &th(*static_cast<reader*>( lua_touserdata(ls, 1) ));const lua_persist_type ptype =static_cast<lua_persist_type>(unmarshallByte(th));switch (ptype){case LPT_BOOLEAN:return file_unmarshall_boolean(ls);case LPT_NUMBER:return file_unmarshall_number(ls);case LPT_STRING:return file_unmarshall_string(ls);case LPT_FUNCTION:return file_unmarshall_fn(ls);case LPT_NIL:lua_pushnil(ls);return (1);default:luaL_error(ls, "Unexpected type signature.");}// Never get here.return (0);
static const struct luaL_reg file_lib[] ={{ "marshall", file_marshall },{ "marshall_meta", file_marshall_meta },{ "unmarshall_meta", file_unmarshall_meta },{ "unmarshall_number", file_unmarshall_number },{ "unmarshall_string", file_unmarshall_string },{ "unmarshall_fn", file_unmarshall_fn },{ NULL, NULL }};