mirror of
https://github.com/ThePhD/sol2.git
synced 2024-03-22 13:10:44 +08:00
partial implementation of lua_version...
It's a bit more reliable than before, but... not really that much better!
This commit is contained in:
parent
8b13e6df6f
commit
b8d81cb927
|
@ -271,9 +271,32 @@ inline void luaL_traceback(lua_State *L, lua_State *L1,
|
|||
}
|
||||
#endif
|
||||
|
||||
inline const lua_Number *lua_version(lua_State *L) {
|
||||
static const lua_Number version = LUA_VERSION_NUM;
|
||||
if (L == NULL) return &version;
|
||||
// TODO: wonky hacks to get at the inside of the incomplete type lua_State?
|
||||
//else return L->l_G->version;
|
||||
else return &version;
|
||||
}
|
||||
|
||||
inline void luaL_checkversion(lua_State *L) {
|
||||
(void)L;
|
||||
inline static void luaL_checkversion_(lua_State *L, lua_Number ver) {
|
||||
const lua_Number* v = lua_version(L);
|
||||
if (v != lua_version(NULL))
|
||||
luaL_error(L, "multiple Lua VMs detected");
|
||||
else if (*v != ver)
|
||||
luaL_error(L, "version mismatch: app. needs %f, Lua core provides %f",
|
||||
ver, *v);
|
||||
/* check conversions number -> integer types */
|
||||
lua_pushnumber(L, -(lua_Number)0x1234);
|
||||
if (lua_tointeger(L, -1) != -0x1234 ||
|
||||
lua_tounsigned(L, -1) != (lua_Unsigned)-0x1234)
|
||||
luaL_error(L, "bad conversion number->int;"
|
||||
" must recompile Lua with proper settings");
|
||||
lua_pop(L, 1);
|
||||
}
|
||||
|
||||
inline void luaL_checkversion(lua_State* L) {
|
||||
luaL_checkversion_(L, LUA_VERSION_NUM);
|
||||
}
|
||||
|
||||
#ifndef SOL_LUAJIT
|
||||
|
|
Loading…
Reference in New Issue
Block a user