コード例 #1
0
ファイル: LuaState.cs プロジェクト: inkiu0/ExcelTools
        internal static int print(IntPtr L)
        {
            int    n = LuaDLL.lua_gettop(L);
            string s = "";

            LuaDLL.lua_getglobal(L, "tostring");

            for (int i = 1; i <= n; i++)
            {
                if (i > 1)
                {
                    s += "    ";
                }

                LuaDLL.lua_pushvalue(L, -1);
                LuaDLL.lua_pushvalue(L, i);

                LuaDLL.lua_call(L, 1, 1);
                s += LuaDLL.lua_tostring(L, -1);
                LuaDLL.lua_pop(L, 1);
            }
            LuaDLL.lua_settop(L, n);
            SluaLogger.Log(s);
            if (logDelegate != null)
            {
                logDelegate(s);
            }
            return(0);
        }
コード例 #2
0
ファイル: LuaState.cs プロジェクト: inkiu0/ExcelTools
 public static int errorReport(IntPtr L)
 {
     LuaDLL.lua_getglobal(L, "debug");
     LuaDLL.lua_getfield(L, -1, "traceback");
     LuaDLL.lua_pushvalue(L, 1);
     LuaDLL.lua_pushnumber(L, 2);
     LuaDLL.lua_call(L, 2, 1);
     LuaDLL.lua_remove(L, -2);
     SluaLogger.LogError(LuaDLL.lua_tostring(L, -1));
     if (errorDelegate != null)
     {
         errorDelegate(LuaDLL.lua_tostring(L, -1));
     }
     LuaDLL.lua_pop(L, 1);
     return(0);
 }
コード例 #3
0
ファイル: LuaState.cs プロジェクト: inkiu0/ExcelTools
        public object doFile(string fn)
        {
            byte[] bytes = loadFile(fn);
            if (bytes == null)
            {
                SluaLogger.LogError(string.Format("Can't find {0}", fn));
                return(null);
            }

            object obj;

            if (doBuffer(bytes, "@" + fn, out obj))
            {
                return(obj);
            }
            return(null);
        }
コード例 #4
0
ファイル: LuaState.cs プロジェクト: inkiu0/ExcelTools
        public void Close()
        {
            if (L != IntPtr.Zero)
            {
                if (LuaState.main == this)
                {
                    SluaLogger.Log("Finalizing Lua State.");
                    // be careful, if you close lua vm, make sure you don't use lua state again,
                    // comment this line as default for avoid unexpected crash.
                    LuaDLL.lua_close(L);

                    ObjectCache.del(L);
                    ObjectCache.clear();

                    statemap.Clear();
                    oldptr   = IntPtr.Zero;
                    oldstate = null;
                    L        = IntPtr.Zero;

                    LuaState.main = null;
                }
            }
        }