// lockCallback, unlockCallback; used by debug code commented out for now public LuaInterface() { luaState = LuaDLL.luaL_newstate(); // steffenj: Lua 5.1.1 API change (lua_open is gone) //LuaDLL.luaopen_base(luaState); // steffenj: luaopen_* no longer used LuaDLL.luaL_openlibs(luaState); // steffenj: Lua 5.1.1 API change (luaopen_base is gone, just open all libs right here) LuaDLL.lua_pushstring(luaState, "LUAINTERFACE LOADED"); LuaDLL.lua_pushboolean(luaState, true); LuaDLL.lua_settable(luaState, (int)LuaIndexes.LUA_REGISTRYINDEX); LuaDLL.lua_newtable(luaState); LuaDLL.lua_setglobal(luaState, "luanet"); LuaDLL.lua_pushvalue(luaState, (int)LuaIndexes.LUA_GLOBALSINDEX); LuaDLL.lua_getglobal(luaState, "luanet"); LuaDLL.lua_pushstring(luaState, "getmetatable"); LuaDLL.lua_getglobal(luaState, "getmetatable"); LuaDLL.lua_settable(luaState, -3); LuaDLL.lua_replace(luaState, (int)LuaIndexes.LUA_GLOBALSINDEX); translator = new ObjectTranslator(this, luaState); LuaDLL.lua_replace(luaState, (int)LuaIndexes.LUA_GLOBALSINDEX); LuaDLL.luaL_dostring(luaState, ScriptStrings.InitLuaNet); // steffenj: lua_dostring renamed to luaL_dostring tracebackFunction = new SharpLua.Lua.lua_CFunction(traceback); // We need to keep this in a managed reference so the delegate doesn't get garbage collected panicCallback = new SharpLua.Lua.lua_CFunction(PanicCallback); Lua.lua_CFunction oldpanicFunc = //LuaDLL.lua_atpanic(luaState, tracebackFunction); LuaDLL.lua_atpanic(luaState, panicCallback); LuaDLL.luaL_dostring(luaState, ScriptStrings.InitClrLib); LuaDLL.luaL_dostring(luaState, ScriptStrings.InitExtLib); luaState.SetInterface(this); }
// lockCallback, unlockCallback; used by debug code commented out for now public LuaInterface() { luaState = LuaDLL.luaL_newstate(); // steffenj: Lua 5.1.1 API change (lua_open is gone) luaState.initializing = true; //LuaDLL.luaopen_base(luaState); // steffenj: luaopen_* no longer used LuaDLL.luaL_openlibs(luaState); // steffenj: Lua 5.1.1 API change (luaopen_base is gone, just open all libs right here) LuaDLL.lua_pushstring(luaState, "LUAINTERFACE LOADED"); LuaDLL.lua_pushboolean(luaState, true); LuaDLL.lua_settable(luaState, (int)LuaIndexes.LUA_REGISTRYINDEX); LuaDLL.lua_newtable(luaState); LuaDLL.lua_setglobal(luaState, "luanet"); LuaDLL.lua_pushvalue(luaState, (int)LuaIndexes.LUA_GLOBALSINDEX); LuaDLL.lua_getglobal(luaState, "luanet"); LuaDLL.lua_pushstring(luaState, "getmetatable"); LuaDLL.lua_getglobal(luaState, "getmetatable"); LuaDLL.lua_settable(luaState, -3); LuaDLL.lua_replace(luaState, (int)LuaIndexes.LUA_GLOBALSINDEX); translator = new ObjectTranslator(this, luaState); LuaDLL.lua_replace(luaState, (int)LuaIndexes.LUA_GLOBALSINDEX); tracebackFunction = new SharpLua.Lua.lua_CFunction(traceback); // We need to keep this in a managed reference so the delegate doesn't get garbage collected panicCallback = new SharpLua.Lua.lua_CFunction(PanicCallback); Lua.lua_CFunction oldpanicFunc = //LuaDLL.lua_atpanic(luaState, tracebackFunction); LuaDLL.lua_atpanic(luaState, panicCallback); DoString(ScriptStrings.InitLuaNet, "LuaNet"); DoString(ScriptStrings.InitClrLib, "ClrLib"); DoString(ScriptStrings.InitExtLib, "ExtLib"); luaState.initializing = false; luaState.SetInterface(this); }