lua_isfunction() 공개 정적인 메소드

public static lua_isfunction ( IntPtr luaState, int stackPos ) : bool
luaState System.IntPtr
stackPos int
리턴 bool
예제 #1
0
 public string GetFunctionInfo()
 {
     LuaDLL.lua_getglobal(L, "FormatFunctionInfo");  //-> f, FormatFunctionInfo
     if (LuaDLL.lua_isfunction(L, -1))
     {
         LuaDLL.lua_pushvalue(L, -2); //-> f, FormatFunctionInfo, f
         if (PCall(1, 1))             //-> f, callbackInfo
         {
             string callbackInfo = LuaDLL.lua_tostring(L, -1);
             LuaDLL.lua_pop(L, 2);
             return(callbackInfo);
         }
         else    //-> f, err
         {
             string errInfo = LuaDLL.lua_tostring(L, -1);
             LuaDLL.lua_pop(L, 2);
             return(errInfo);
         }
     }
     else    //-> f, xx
     {
         LuaDLL.lua_pop(L, 2);
         return("failed to call FormatFunctionInfo");
     }
 }
예제 #2
0
        public static int msgHandler(IntPtr L)
        {
            if (!LuaDLL.lua_isstring(L, 1))
            {
                return(1);
            }
            LuaDLL.wlua_getglobal(L, "debug");            //msg,debug
            if (!LuaDLL.lua_istable(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                return(1);
            }
            LuaDLL.wlua_getfield(L, -1, "traceback");             //msg,debug,traceback
            if (!LuaDLL.lua_isfunction(L, -1))
            {
                LuaDLL.lua_pop(L, 2);
                return(1);
            }
            LuaStateCache cache = LuaStateCacheMan.GetLuaStateCache(L);

            LuaDLL.lua_pushvalue(L, 1);                                   //msg,debug,traceback,msg
            LuaDLL.lua_pushinteger(L, 2 + (cache.isException() ? 2 : 0)); //msg,debug,traceback,msg,level
            LuaDLL.lua_pcall(L, 2, 1, 0);                                 //msg,debug,tracebackstring
            cache.clearException();
            return(1);
        }
예제 #3
0
 public static int errorFunc_traceback(IntPtr L)
 {
     if (!LuaDLL.lua_isstring(L, 1)) /* 'message' not a string? */
     {
         return(1);                  /* keep it intact */
     }
     LuaDLL.lua_getfield(L, LuaIndexes.LUA_GLOBALSINDEX, "debug");
     if (LuaDLL.lua_istable(L, -1))
     {
         LuaDLL.lua_pop(L, 1);
         return(1);
     }
     LuaDLL.lua_getfield(L, -1, "traceback");
     if (LuaDLL.lua_isfunction(L, -1))
     {
         LuaDLL.lua_pop(L, 2);
         return(1);
     }
     LuaDLL.lua_pushvalue(L, 1);   /* pass error message */
     LuaDLL.lua_pushinteger(L, 2); /* skip this function and traceback */
     LuaDLL.lua_call(L, 2, 1);     /* call debug.traceback */
     return(1);
 }