/* toType* functions with a bonus error message */ void* expectType(lua_State* luaSt, int idx, const char* typeName) { void* p; p = mw_tonamedudata(luaSt, idx, typeName); if (!p) mw_lua_typecheck(luaSt, idx, LUA_TUSERDATA, typeName); return p; }
static int evaluateConstants(lua_State* luaSt) { const SeparationConstant* p = constants; while (p->name) { lua_getglobal(luaSt, p->name); if (mw_lua_typecheck(luaSt, -1, LUA_TNUMBER, NULL)) { return luaL_error(luaSt, "Expected constant '%s' to be a number\n", p->name); } *p->value = lua_tonumber(luaSt, -1); ++p; } return 0; }
static int evaluateConstants(lua_State* luaSt) { const SeparationConstant* c = constants; while (c->name) { lua_getglobal(luaSt, c->name); if (mw_lua_typecheck(luaSt, -1, LUA_TNUMBER, NULL)) { return luaL_error(luaSt, "constant '%s': %s", c->name, lua_tostring(luaSt, -1)); } *c->value = lua_tonumber(luaSt, -1); ++c; } return 0; }
int expectTable(lua_State* luaSt, int idx) { return mw_lua_typecheck(luaSt, idx, LUA_TTABLE, NULL); }