public ObjectTranslator(Lua interpreter,IntPtr luaState)
        {
            this.interpreter=interpreter;
            typeChecker=new CheckType(this);
            metaFunctions=new MetaFunctions(this);
            objects=new ArrayList();
            assemblies=new ArrayList();

            importTypeFunction=new LuaCSFunction(this.importType);
            importType__indexFunction=new LuaCSFunction(this.importType__index);
            loadAssemblyFunction=new LuaCSFunction(this.loadAssembly);
            loadAssemblyFromFunction=new LuaCSFunction(this.loadAssemblyFrom);
            registerTableFunction=new LuaCSFunction(this.registerTable);
            unregisterTableFunction=new LuaCSFunction(this.unregisterTable);
            getMethodSigFunction=new LuaCSFunction(this.getMethodSignature);
            getConstructorSigFunction=new LuaCSFunction(this.getConstructorSignature);

            createLuaObjectList(luaState);
            createIndexingMetaFunction(luaState);
            createBaseClassMetatable(luaState);
            createClassMetatable(luaState);
            createFunctionMetatable(luaState);
            setGlobalFunctions(luaState);

            LuaDLL.lua_dostring(luaState, "load_assembly('mscorlib')");
        }
Ejemplo n.º 2
0
        public ObjectTranslator(LuaState interpreter,IntPtr luaState)
        {
            this.interpreter=interpreter;
            typeChecker=new CheckType(this);
            metaFunctions=new MetaFunctions(this);
            assemblies=new List<Assembly>();
            assemblies.Add(Assembly.GetExecutingAssembly());

            importTypeFunction = new LuaCSFunction(ObjectTranslator.importType);
            loadAssemblyFunction = new LuaCSFunction(ObjectTranslator.loadAssembly);
            registerTableFunction = new LuaCSFunction(ObjectTranslator.registerTable);
            unregisterTableFunction = new LuaCSFunction(ObjectTranslator.unregisterTable);
            getMethodSigFunction = new LuaCSFunction(ObjectTranslator.getMethodSignature);
            getConstructorSigFunction = new LuaCSFunction(ObjectTranslator.getConstructorSignature);

            ctypeFunction = new LuaCSFunction(ObjectTranslator.ctype);
            enumFromIntFunction = new LuaCSFunction(ObjectTranslator.enumFromInt);

            createLuaObjectList(luaState);
            createIndexingMetaFunction(luaState);
            createBaseClassMetatable(luaState);
            createClassMetatable(luaState);
            createFunctionMetatable(luaState);
            setGlobalFunctions(luaState);
        }
Ejemplo n.º 3
0
 public LuaFunction(int reference, LuaState interpreter)
 {            
     _Reference = reference;
     this.function = null;
     _Interpreter = interpreter;
     L = _Interpreter.L;
     translator = _Interpreter.translator;            
 }
Ejemplo n.º 4
0
 public LuaFunction(LuaCSFunction function, LuaState interpreter)
 {
     _Reference = 0;
     this.function = function;
     _Interpreter = interpreter;
     L = _Interpreter.L;
     translator = _Interpreter.translator;            
 }
Ejemplo n.º 5
0
 public LuaFunction(int reference, IntPtr l)
 {            
     _Reference = reference;
     this.function = null;             
     L = l;
     translator = ObjectTranslator.FromState(L);
     _Interpreter = translator.interpreter;            
 }
Ejemplo n.º 6
0
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.UI.BusinessCardDescUpdateNetTask");
     if (Lua_BlackJack_ProjectL_UI_BusinessCardDescUpdateNetTask.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_UI_BusinessCardDescUpdateNetTask.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_UI_BusinessCardDescUpdateNetTask.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_UI_BusinessCardDescUpdateNetTask.< > f__mg$cache0, typeof(BusinessCardDescUpdateNetTask), typeof(UINetTask));
 }
Ejemplo n.º 7
0
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.UI.ArenaPlayerInfoGetNetTask");
     if (Lua_BlackJack_ProjectL_UI_ArenaPlayerInfoGetNetTask.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_UI_ArenaPlayerInfoGetNetTask.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_UI_ArenaPlayerInfoGetNetTask.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_UI_ArenaPlayerInfoGetNetTask.< > f__mg$cache0, typeof(ArenaPlayerInfoGetNetTask), typeof(UINetTask));
 }
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.Scene.ClientActorActActionEnd");
     if (Lua_BlackJack_ProjectL_Scene_ClientActorActActionEnd.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_Scene_ClientActorActActionEnd.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_Scene_ClientActorActActionEnd.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_Scene_ClientActorActActionEnd.< > f__mg$cache0, typeof(ClientActorActActionEnd), typeof(ClientActorAct));
 }
Ejemplo n.º 9
0
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "UnityEngine.UnassignedReferenceException");
     if (Lua_UnityEngine_UnassignedReferenceException.< > f__mg$cache0 == null)
     {
         Lua_UnityEngine_UnassignedReferenceException.< > f__mg$cache0 = new LuaCSFunction(Lua_UnityEngine_UnassignedReferenceException.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_UnityEngine_UnassignedReferenceException.< > f__mg$cache0, typeof(UnassignedReferenceException), typeof(SystemException));
 }
Ejemplo n.º 10
0
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "UnityEngine.Security");
     if (Lua_UnityEngine_Security.< > f__mg$cache0 == null)
     {
         Lua_UnityEngine_Security.< > f__mg$cache0 = new LuaCSFunction(Lua_UnityEngine_Security.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_UnityEngine_Security.< > f__mg$cache0, typeof(Security));
 }
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.UI.SoldierSkinTakeOffNetTask");
     if (Lua_BlackJack_ProjectL_UI_SoldierSkinTakeOffNetTask.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_UI_SoldierSkinTakeOffNetTask.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_UI_SoldierSkinTakeOffNetTask.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_UI_SoldierSkinTakeOffNetTask.< > f__mg$cache0, typeof(SoldierSkinTakeOffNetTask), typeof(UINetTask));
 }
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.Common.EnchantStoneBagItem");
     if (Lua_BlackJack_ProjectL_Common_EnchantStoneBagItem.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_Common_EnchantStoneBagItem.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_EnchantStoneBagItem.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_Common_EnchantStoneBagItem.< > f__mg$cache0, typeof(EnchantStoneBagItem), typeof(BagItemBase));
 }
Ejemplo n.º 13
0
        public static void PushCFunction(LuaCSFunction function)
        {
#if SLUA_STANDALONE
            // Add all LuaCSFunction�� or they will be GC collected!  (problem at windows, .net framework 4.5, `CallbackOnCollectedDelegated` exception)
            GCHandle.Alloc(function);
#endif
            IntPtr fn = Marshal.GetFunctionPointerForDelegate(function);
            lua_pushcclosure(LuaState, fn, 0);
        }
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.UI.TeamRoomAuthorityChangeNetTask");
     if (Lua_BlackJack_ProjectL_UI_TeamRoomAuthorityChangeNetTask.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_UI_TeamRoomAuthorityChangeNetTask.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_UI_TeamRoomAuthorityChangeNetTask.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_UI_TeamRoomAuthorityChangeNetTask.< > f__mg$cache0, typeof(TeamRoomAuthorityChangeNetTask), typeof(UINetTask));
 }
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.UI.FriendLeaveChatGroupNetTask");
     if (Lua_BlackJack_ProjectL_UI_FriendLeaveChatGroupNetTask.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_UI_FriendLeaveChatGroupNetTask.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_UI_FriendLeaveChatGroupNetTask.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_UI_FriendLeaveChatGroupNetTask.< > f__mg$cache0, typeof(FriendLeaveChatGroupNetTask), typeof(UINetTask));
 }
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.UI.EquipmentStarLevelUpNetTask");
     if (Lua_BlackJack_ProjectL_UI_EquipmentStarLevelUpNetTask.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_UI_EquipmentStarLevelUpNetTask.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_UI_EquipmentStarLevelUpNetTask.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_UI_EquipmentStarLevelUpNetTask.< > f__mg$cache0, typeof(EquipmentStarLevelUpNetTask), typeof(UINetTask));
 }
Ejemplo n.º 17
0
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "UnityEngine.WaitForSeconds");
     if (Lua_UnityEngine_WaitForSeconds.< > f__mg$cache0 == null)
     {
         Lua_UnityEngine_WaitForSeconds.< > f__mg$cache0 = new LuaCSFunction(Lua_UnityEngine_WaitForSeconds.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_UnityEngine_WaitForSeconds.< > f__mg$cache0, typeof(WaitForSeconds), typeof(YieldInstruction));
 }
Ejemplo n.º 18
0
        public LuaState()
        {
            this.L = LuaDLL.luaL_newstate();
            LuaDLL.luaL_openlibs(this.L);
            LuaDLL.lua_pushstring(this.L, "LUAINTERFACE LOADED");
            LuaDLL.lua_pushboolean(this.L, true);
            LuaDLL.lua_settable(this.L, LuaIndexes.LUA_REGISTRYINDEX);
            LuaDLL.lua_newtable(this.L);
            LuaDLL.lua_setglobal(this.L, "luanet");
            LuaDLL.lua_pushvalue(this.L, LuaIndexes.LUA_GLOBALSINDEX);
            LuaDLL.lua_getglobal(this.L, "luanet");
            LuaDLL.lua_pushstring(this.L, "getmetatable");
            LuaDLL.lua_getglobal(this.L, "getmetatable");
            LuaDLL.lua_settable(this.L, -3);
            LuaDLL.lua_pushstring(this.L, "rawget");
            LuaDLL.lua_getglobal(this.L, "rawget");
            LuaDLL.lua_settable(this.L, -3);
            LuaDLL.lua_pushstring(this.L, "rawset");
            LuaDLL.lua_getglobal(this.L, "rawset");
            LuaDLL.lua_settable(this.L, -3);
            LuaDLL.lua_replace(this.L, LuaIndexes.LUA_GLOBALSINDEX);
            this.translator = new ObjectTranslator(this, this.L);
            LuaDLL.lua_replace(this.L, LuaIndexes.LUA_GLOBALSINDEX);
            this.translator.PushTranslator(this.L);
            this.panicCallback = new LuaCSFunction(LuaStatic.panic);
            LuaDLL.lua_atpanic(this.L, this.panicCallback);
            this.printFunction = new LuaCSFunction(LuaStatic.print);
            LuaDLL.lua_pushstdcallcfunction(this.L, this.printFunction, 0);
            LuaDLL.lua_setfield(this.L, LuaIndexes.LUA_GLOBALSINDEX, "print");
            this.loadfileFunction = new LuaCSFunction(LuaStatic.loadfile);
            LuaDLL.lua_pushstdcallcfunction(this.L, this.loadfileFunction, 0);
            LuaDLL.lua_setfield(this.L, LuaIndexes.LUA_GLOBALSINDEX, "loadfile");
            this.dofileFunction = new LuaCSFunction(LuaStatic.dofile);
            LuaDLL.lua_pushstdcallcfunction(this.L, this.dofileFunction, 0);
            LuaDLL.lua_setfield(this.L, LuaIndexes.LUA_GLOBALSINDEX, "dofile");
            this.import_wrapFunction = new LuaCSFunction(LuaStatic.importWrap);
            LuaDLL.lua_pushstdcallcfunction(this.L, this.import_wrapFunction, 0);
            LuaDLL.lua_setfield(this.L, LuaIndexes.LUA_GLOBALSINDEX, "import");
            this.loaderFunction = new LuaCSFunction(LuaStatic.loader);
            LuaDLL.lua_pushstdcallcfunction(this.L, this.loaderFunction, 0);
            int index = LuaDLL.lua_gettop(this.L);

            LuaDLL.lua_getfield(this.L, LuaIndexes.LUA_GLOBALSINDEX, "package");
            LuaDLL.lua_getfield(this.L, -1, "loaders");
            int num = LuaDLL.lua_gettop(this.L);

            for (int i = LuaDLL.luaL_getn(this.L, num) + 1; i > 1; i--)
            {
                LuaDLL.lua_rawgeti(this.L, num, i - 1);
                LuaDLL.lua_rawseti(this.L, num, i);
            }
            LuaDLL.lua_pushvalue(this.L, index);
            LuaDLL.lua_rawseti(this.L, num, 1);
            LuaDLL.lua_settop(this.L, 0);
            this.DoString(LuaStatic.init_luanet);
            this.tracebackFunction = new LuaCSFunction(LuaStatic.traceback);
        }
Ejemplo n.º 19
0
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.UI.HeroPhantomLevelAttackNetTask");
     if (Lua_BlackJack_ProjectL_UI_HeroPhantomLevelAttackNetTask.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_UI_HeroPhantomLevelAttackNetTask.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_UI_HeroPhantomLevelAttackNetTask.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_UI_HeroPhantomLevelAttackNetTask.< > f__mg$cache0, typeof(HeroPhantomLevelAttackNetTask), typeof(UINetTask));
 }
Ejemplo n.º 20
0
        static void SetOutMethods(IntPtr L, string table, LuaCSFunction getOutFunc = null)
        {
            LuaDLL.lua_getglobal(L, table);
            IntPtr get = Marshal.GetFunctionPointerForDelegate(getOutFunc);

            LuaDLL.tolua_variable(L, "out", get, IntPtr.Zero);

            LuaDLL.lua_pop(L, 1);
        }
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "BlackJack.ProjectL.UI.GetRandomStoreItemListNetTask");
     if (Lua_BlackJack_ProjectL_UI_GetRandomStoreItemListNetTask.< > f__mg$cache0 == null)
     {
         Lua_BlackJack_ProjectL_UI_GetRandomStoreItemListNetTask.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_UI_GetRandomStoreItemListNetTask.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_UI_GetRandomStoreItemListNetTask.< > f__mg$cache0, typeof(GetRandomStoreItemListNetTask), typeof(UINetTask));
 }
Ejemplo n.º 22
0
        public static void lua_pushcclosure(IntPtr l, LuaCSFunction f, int nup)
        {
#if SLUA_STANDALONE
            // Add all LuaCSFunction£¬ or they will be GC collected!  (problem at windows, .net framework 4.5, `CallbackOnCollectedDelegated` exception)
            GCHandle.Alloc(f);
#endif
            IntPtr fn = Marshal.GetFunctionPointerForDelegate(f);
            lua_pushcclosure(l, fn, nup);
        }
Ejemplo n.º 23
0
        protected static void addMember(IntPtr l, LuaCSFunction func, bool instance)
        {
            checkMethodValid(func);

            pushValue(l, func);
            string name = func.Method.Name;

            LuaDLL.lua_setfield(l, instance ? -2 : -3, name);
        }
Ejemplo n.º 24
0
        public static void reg(IntPtr l, LuaCSFunction func, string ns)
        {
            checkMethodValid(func);

            newTypeTable(l, ns);
            pushValue(l, func);
            LuaDLL.lua_setfield(l, -2, func.Method.Name);
            LuaDLL.lua_pop(l, 1);
        }
Ejemplo n.º 25
0
        static void checkMethodValid(LuaCSFunction f)
        {
#if UNITY_EDITOR
            if (f != null && !Attribute.IsDefined(f.Method, typeof(MonoPInvokeCallbackAttribute)))
            {
                Logger.LogError(string.Format("MonoPInvokeCallbackAttribute not defined for LuaCSFunction {0}.", f.Method));
            }
#endif
        }
    public static void reg(IntPtr l)
    {
        LuaObject.getTypeTable(l, "UnityEngine.UI.MaskableGraphic");
        if (Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache0 == null)
        {
            Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache0 = new LuaCSFunction(Lua_UnityEngine_UI_MaskableGraphic.GetModifiedMaterial);
        }
        LuaObject.addMember(l, Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache0);
        if (Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache1 == null)
        {
            Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache1 = new LuaCSFunction(Lua_UnityEngine_UI_MaskableGraphic.Cull);
        }
        LuaObject.addMember(l, Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache1);
        if (Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache2 == null)
        {
            Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache2 = new LuaCSFunction(Lua_UnityEngine_UI_MaskableGraphic.SetClipRect);
        }
        LuaObject.addMember(l, Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache2);
        if (Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache3 == null)
        {
            Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache3 = new LuaCSFunction(Lua_UnityEngine_UI_MaskableGraphic.RecalculateClipping);
        }
        LuaObject.addMember(l, Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache3);
        if (Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache4 == null)
        {
            Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache4 = new LuaCSFunction(Lua_UnityEngine_UI_MaskableGraphic.RecalculateMasking);
        }
        LuaObject.addMember(l, Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache4);
        string name = "onCullStateChanged";

        if (Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache5 == null)
        {
            Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache5 = new LuaCSFunction(Lua_UnityEngine_UI_MaskableGraphic.get_onCullStateChanged);
        }
        LuaCSFunction get = Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache5;

        if (Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache6 == null)
        {
            Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache6 = new LuaCSFunction(Lua_UnityEngine_UI_MaskableGraphic.set_onCullStateChanged);
        }
        LuaObject.addMember(l, name, get, Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache6, true);
        string name2 = "maskable";

        if (Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache7 == null)
        {
            Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache7 = new LuaCSFunction(Lua_UnityEngine_UI_MaskableGraphic.get_maskable);
        }
        LuaCSFunction get2 = Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache7;

        if (Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache8 == null)
        {
            Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache8 = new LuaCSFunction(Lua_UnityEngine_UI_MaskableGraphic.set_maskable);
        }
        LuaObject.addMember(l, name2, get2, Lua_UnityEngine_UI_MaskableGraphic.< > f__mg$cache8, true);
        LuaObject.createTypeMetatable(l, null, typeof(MaskableGraphic), typeof(Graphic));
    }
 public static void reg(IntPtr l)
 {
     LuaUnityEvent_int.reg(l);
     LuaObject.getTypeTable(l, "UnityEngine.UI.Dropdown.DropdownEvent");
     if (Lua_UnityEngine_UI_Dropdown_DropdownEvent.< > f__mg$cache0 == null)
     {
         Lua_UnityEngine_UI_Dropdown_DropdownEvent.< > f__mg$cache0 = new LuaCSFunction(Lua_UnityEngine_UI_Dropdown_DropdownEvent.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_UnityEngine_UI_Dropdown_DropdownEvent.< > f__mg$cache0, typeof(Dropdown.DropdownEvent), typeof(LuaUnityEvent_int));
 }
Ejemplo n.º 28
0
 public static void reg(IntPtr l)
 {
     LuaObject.getTypeTable(l, "UnityEngine.EventSystems.ISelectHandler");
     if (Lua_UnityEngine_EventSystems_ISelectHandler.< > f__mg$cache0 == null)
     {
         Lua_UnityEngine_EventSystems_ISelectHandler.< > f__mg$cache0 = new LuaCSFunction(Lua_UnityEngine_EventSystems_ISelectHandler.OnSelect);
     }
     LuaObject.addMember(l, Lua_UnityEngine_EventSystems_ISelectHandler.< > f__mg$cache0);
     LuaObject.createTypeMetatable(l, null, typeof(ISelectHandler));
 }
 public static void reg(IntPtr l)
 {
     LuaUnityEvent_string.reg(l);
     LuaObject.getTypeTable(l, "UnityEngine.UI.InputField.OnChangeEvent");
     if (Lua_UnityEngine_UI_InputField_OnChangeEvent.< > f__mg$cache0 == null)
     {
         Lua_UnityEngine_UI_InputField_OnChangeEvent.< > f__mg$cache0 = new LuaCSFunction(Lua_UnityEngine_UI_InputField_OnChangeEvent.constructor);
     }
     LuaObject.createTypeMetatable(l, Lua_UnityEngine_UI_InputField_OnChangeEvent.< > f__mg$cache0, typeof(InputField.OnChangeEvent), typeof(LuaUnityEvent_string));
 }
Ejemplo n.º 30
0
        /// <summary>
        /// NOTE: A reference to the function pointer to a managed delegate held by unmanaged code does not prevent the common language runtime from performing garbage collection on the managed object.
        /// </summary>
        /// <param name="luaState"></param>
        /// <param name="function"></param>
        public static void lua_pushcfunction(IntPtr luaState, LuaCSFunction function)
        {
#if SLUA_STANDALONE
            // Add all LuaCSFunction?? or they will be GC collected!  (problem at windows, .net framework 4.5, `CallbackOnCollectedDelegated` exception)
            //See https://manski.net/2012/06/pinvoke-tutorial-pinning-part-4/
            //防止GC收集
            GCHandle.Alloc(function);
#endif
            IntPtr fn = Marshal.GetFunctionPointerForDelegate(function);
            lua_pushcclosure(luaState, fn, 0);
        }
Ejemplo n.º 31
0
 private static void LuaPCall(IntPtr L, LuaCSFunction func)
 {
     LuaDLL.tolua_pushcfunction(L, func);
     if (LuaDLL.lua_pcall(L, 0, -1, 0) != 0)
     {
         string    msg      = LuaDLL.lua_tostring(L, -1);
         Exception luaStack = LuaException.luaStack;
         LuaException.luaStack = null;
         throw new LuaException(msg, luaStack, 1);
     }
 }
Ejemplo n.º 32
0
        public LuaState() {
            // Create State
            L = LuaDLL.luaL_newstate();

            // Create LuaInterface library
            LuaDLL.luaL_openlibs(L);
            LuaDLL.lua_pushstring(L, "LUAINTERFACE LOADED");
            LuaDLL.lua_pushboolean(L, true);
            LuaDLL.lua_settable(L, (int)LuaIndexes.LUA_REGISTRYINDEX);

            tracebackFunction = new LuaCSFunction(error_traceback);

            // We need to keep this in a managed reference so the delegate doesn't get garbage collected
            panicCallback = new LuaCSFunction(panic);
            LuaDLL.lua_atpanic(L, panicCallback);
            printFunction = new LuaCSFunction(print);
            LuaDLL.lua_pushstdcallcfunction(L, printFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "print");

            loadfileFunction = new LuaCSFunction(loadfile);
            LuaDLL.lua_pushstdcallcfunction(L, loadfileFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "loadfile");

            dofileFunction = new LuaCSFunction(dofile);
            LuaDLL.lua_pushstdcallcfunction(L, dofileFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "dofile");
            LuaDLL.lua_pushstdcallcfunction(L, dofileFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "require");

            LuaDLL.lua_newtable(L);
            LuaDLL.lua_newtable(L);
            LuaDLL.lua_pushstring(L, "v");
            LuaDLL.lua_setfield(L, -2, "__mode");
            LuaDLL.lua_setmetatable(L, -2);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_REGISTRYINDEX, LuaStatic.CACHE_CSHARP_OBJECT_TABLE);

            // Insert our loader FIRST
            loaderFunction = new LuaCSFunction(loader);
            LuaDLL.lua_pushstdcallcfunction(L, loaderFunction);
            int loaderFunc = LuaDLL.lua_gettop(L);

            LuaDLL.lua_getfield(L, LuaIndexes.LUA_GLOBALSINDEX, "package");
            LuaDLL.lua_getfield(L, -1, "loaders");
            int loaderTable = LuaDLL.lua_gettop(L);

            // Shift table elements right
            for (int e = LuaDLL.luaL_getn(L, loaderTable) + 1; e > 1; e--) {
                LuaDLL.lua_rawgeti(L, loaderTable, e - 1);
                LuaDLL.lua_rawseti(L, loaderTable, e);
            }
            LuaDLL.lua_pushvalue(L, loaderFunc);
            LuaDLL.lua_rawseti(L, loaderTable, 1);
            LuaDLL.lua_settop(L, 0);
        }
Ejemplo n.º 33
0
        internal static void pcall(IntPtr l, LuaCSFunction f)
        {
            int err = LuaObject.pushTry(l);

            LuaDLL.lua_pushcfunction(l, f);
            if (LuaDLL.lua_pcall(l, 0, 0, err) != 0)
            {
                LuaDLL.lua_pop(l, 1);
            }
            LuaDLL.lua_remove(l, err);
        }
    public static void reg(IntPtr l)
    {
        LuaObject.getTypeTable(l, "BlackJack.ProjectL.Common.GuildPlayerMassiveCombatInfo");
        if (Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache0 == null)
        {
            Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.ToPro);
        }
        LuaObject.addMember(l, Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache0);
        string name = "UsedHeroIds";

        if (Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache1 == null)
        {
            Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache1 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.get_UsedHeroIds);
        }
        LuaCSFunction get = Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache1;

        if (Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache2 == null)
        {
            Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache2 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.set_UsedHeroIds);
        }
        LuaObject.addMember(l, name, get, Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache2, true);
        string name2 = "BindedGuildId";

        if (Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache3 == null)
        {
            Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache3 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.get_BindedGuildId);
        }
        LuaCSFunction get2 = Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache3;

        if (Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache4 == null)
        {
            Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache4 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.set_BindedGuildId);
        }
        LuaObject.addMember(l, name2, get2, Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache4, true);
        string name3 = "Points";

        if (Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache5 == null)
        {
            Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache5 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.get_Points);
        }
        LuaCSFunction get3 = Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache5;

        if (Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache6 == null)
        {
            Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache6 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.set_Points);
        }
        LuaObject.addMember(l, name3, get3, Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache6, true);
        if (Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache7 == null)
        {
            Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache7 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.constructor);
        }
        LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_Common_GuildPlayerMassiveCombatInfo.< > f__mg$cache7, typeof(GuildPlayerMassiveCombatInfo));
    }
    public static void reg(IntPtr l)
    {
        LuaObject.getTypeTable(l, "BlackJack.ProjectL.Common.HeroDungeonLevel");
        if (Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache0 == null)
        {
            Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache0 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.ToPBLevel_s);
        }
        LuaObject.addMember(l, Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache0);
        string name = "LevelId";

        if (Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache1 == null)
        {
            Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache1 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.get_LevelId);
        }
        LuaCSFunction get = Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache1;

        if (Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache2 == null)
        {
            Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache2 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.set_LevelId);
        }
        LuaObject.addMember(l, name, get, Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache2, true);
        string name2 = "Stars";

        if (Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache3 == null)
        {
            Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache3 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.get_Stars);
        }
        LuaCSFunction get2 = Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache3;

        if (Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache4 == null)
        {
            Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache4 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.set_Stars);
        }
        LuaObject.addMember(l, name2, get2, Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache4, true);
        string name3 = "Nums";

        if (Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache5 == null)
        {
            Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache5 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.get_Nums);
        }
        LuaCSFunction get3 = Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache5;

        if (Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache6 == null)
        {
            Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache6 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.set_Nums);
        }
        LuaObject.addMember(l, name3, get3, Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache6, true);
        if (Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache7 == null)
        {
            Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache7 = new LuaCSFunction(Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.constructor);
        }
        LuaObject.createTypeMetatable(l, Lua_BlackJack_ProjectL_Common_HeroDungeonLevel.< > f__mg$cache7, typeof(HeroDungeonLevel));
    }
Ejemplo n.º 36
0
    public static void reg(IntPtr l)
    {
        LuaObject.getTypeTable(l, "UnityEngine.UI.ILayoutIgnorer");
        string name = "ignoreLayout";

        if (Lua_UnityEngine_UI_ILayoutIgnorer.< > f__mg$cache0 == null)
        {
            Lua_UnityEngine_UI_ILayoutIgnorer.< > f__mg$cache0 = new LuaCSFunction(Lua_UnityEngine_UI_ILayoutIgnorer.get_ignoreLayout);
        }
        LuaObject.addMember(l, name, Lua_UnityEngine_UI_ILayoutIgnorer.< > f__mg$cache0, null, true);
        LuaObject.createTypeMetatable(l, null, typeof(ILayoutIgnorer));
    }
Ejemplo n.º 37
0
 public MetaFunctions(ObjectTranslator translator)
 {
     this.translator = translator;
     gcFunction = new LuaCSFunction(this.collectObject);
     toStringFunction = new LuaCSFunction(this.toString);
     indexFunction = new LuaCSFunction(this.getMethod);
     newindexFunction = new LuaCSFunction(this.setFieldOrProperty);
     baseIndexFunction = new LuaCSFunction(this.getBaseMethod);
     callConstructorFunction = new LuaCSFunction(this.callConstructor);
     classIndexFunction = new LuaCSFunction(this.getClassMethod);
     classNewindexFunction = new LuaCSFunction(this.setClassFieldOrProperty);
     execDelegateFunction = new LuaCSFunction(this.runFunctionDelegate);
 }
Ejemplo n.º 38
0
 public ObjectTranslator(Lua interpreter, IntPtr luaState)
 {
     this.interpreter = interpreter;
     this.typeChecker = new CheckType(this);
     this.metaFunctions = new MetaFunctions(this);
     this.assemblies = new List<Assembly>();
     this.importTypeFunction = new LuaCSFunction(this.importType);
     this.loadAssemblyFunction = new LuaCSFunction(this.loadAssembly);
     this.registerTableFunction = new LuaCSFunction(this.registerTable);
     this.unregisterTableFunction = new LuaCSFunction(this.unregisterTable);
     this.getMethodSigFunction = new LuaCSFunction(this.getMethodSignature);
     this.getConstructorSigFunction = new LuaCSFunction(this.getConstructorSignature);
     this.createLuaObjectList(luaState);
     this.createIndexingMetaFunction(luaState);
     this.createBaseClassMetatable(luaState);
     this.createClassMetatable(luaState);
     this.createFunctionMetatable(luaState);
     this.setGlobalFunctions(luaState);
 }
Ejemplo n.º 39
0
 public Lua()
 {
     this.luaLock = new object();
     this.luaState = LuaJIT.luaL_newstate();
     LuaJIT.luaL_openlibs(this.luaState);
     LuaJIT.lua_pushstring(this.luaState, "LUAINTERFACE LOADED");
     LuaJIT.lua_pushboolean(this.luaState, 1);
     LuaJIT.lua_settable(this.luaState, -10000);
     LuaJIT.lua_newtable(this.luaState);
     LuaJIT.lua_setglobal(this.luaState, "luanet");
     LuaJIT.lua_pushvalue(this.luaState, -10002);
     LuaJIT.lua_getglobal(this.luaState, "luanet");
     LuaJIT.lua_pushstring(this.luaState, "getmetatable");
     LuaJIT.lua_getglobal(this.luaState, "getmetatable");
     LuaJIT.lua_settable(this.luaState, -3);
     LuaJIT.lua_replace(this.luaState, -10002);
     this.translator = new ObjectTranslator(this, this.luaState);
     LuaJIT.lua_replace(this.luaState, -10002);
     LuaJIT.luaL_dostring(this.luaState, init_luanet);
     this.panicCallback = new LuaCSFunction(Lua.PanicCallback);
     LuaJIT.lua_atpanic(this.luaState, this.panicCallback);
 }
Ejemplo n.º 40
0
 public static extern IntPtr lua_atpanic(IntPtr luaState, LuaCSFunction panicf);
Ejemplo n.º 41
0
        /*
         * Pushes the value of a member or a delegate to call it, depending on the type of
         * the member. Works with static or instance members.
         * Uses reflection to find members, and stores the reflected MemberInfo object in
         * a cache (indexed by the type of the object and the name of the member).
         */
        private int getMember(IntPtr luaState, IReflect objType, object obj, string methodName, BindingFlags bindingType)
        {
            bool implicitStatic = false;
            MemberInfo member = null;
            object cachedMember = checkMemberCache(memberCache, objType, methodName);
            //object cachedMember=null;
            if (cachedMember is LuaCSFunction)
            {
                translator.pushFunction(luaState, (LuaCSFunction)cachedMember);
                translator.push(luaState, true);
                return 2;
            }
            else if (cachedMember != null)
            {
                member = (MemberInfo)cachedMember;
            }
            else
            {
                MemberInfo[] members = objType.GetMember(methodName, bindingType | BindingFlags.Public | BindingFlags.NonPublic);
                if (members.Length > 0)
                    member = members[0];
                else
                {
                    // If we can't find any suitable instance members, try to find them as statics - but we only want to allow implicit static
                    // lookups for fields/properties/events -kevinh
                    members = objType.GetMember(methodName, bindingType | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);

                    if (members.Length > 0)
                    {
                        member = members[0];
                        implicitStatic = true;
                    }
                }
            }
            if (member != null)
            {
                if (member.MemberType == MemberTypes.Field)
                {
                    FieldInfo field = (FieldInfo)member;
                    if (cachedMember == null) setMemberCache(memberCache, objType, methodName, member);
                    try
                    {
                        translator.push(luaState, field.GetValue(obj));
                    }
                    catch
                    {
                        LuaDLL.lua_pushnil(luaState);
                    }
                }
                else if (member.MemberType == MemberTypes.Property)
                {
                    PropertyInfo property = (PropertyInfo)member;
                    if (cachedMember == null) setMemberCache(memberCache, objType, methodName, member);
                    try
                    {
                        object val = property.GetValue(obj, null);

                        translator.push(luaState, val);
                    }
                    catch (ArgumentException)
                    {
                        // If we can't find the getter in our class, recurse up to the base class and see
                        // if they can help.

                        if (objType is Type && !(((Type)objType) == typeof(object)))
                            return getMember(luaState, ((Type)objType).BaseType, obj, methodName, bindingType);
                        else
                            LuaDLL.lua_pushnil(luaState);
                    }
                    catch
                    {
                        LuaDLL.lua_pushnil(luaState);
                    }
                }
                else if (member.MemberType == MemberTypes.Event)
                {
                    EventInfo eventInfo = (EventInfo)member;
                    if (cachedMember == null) setMemberCache(memberCache, objType, methodName, member);
                    translator.push(luaState, new RegisterEventHandler(translator.pendingEvents, obj, eventInfo));
                }
                else if(!implicitStatic)
                {
                    if (member.MemberType == MemberTypes.NestedType)
                    {
                        // kevinh - added support for finding nested types

                        // cache us
                        if (cachedMember == null) setMemberCache(memberCache, objType, methodName, member);

                        // Find the name of our class
                        string name = member.Name;
                        Type dectype = member.DeclaringType;

                        // Build a new long name and try to find the type by name
                        string longname = dectype.FullName + "+" + name;
                        Type nestedType = translator.FindType(longname);

                        translator.pushType(luaState, nestedType);
                    }
                    else
                    {
                        // Member type must be 'method'
                        LuaCSFunction wrapper = new LuaCSFunction((new LuaMethodWrapper(translator, objType, methodName, bindingType)).call);
                        if (cachedMember == null) setMemberCache(memberCache, objType, methodName, wrapper);
                        translator.pushFunction(luaState, wrapper);
                        translator.push(luaState, true);
                        return 2;
                    }
                }
                else
                {
                    // If we reach this point we found a static method, but can't use it in this context because the user passed in an instance
                    translator.throwError(luaState, "can't pass instance to static method " + methodName);

                    LuaDLL.lua_pushnil(luaState);
                }
            }
            else
            {
                // kevinh - we want to throw an exception because meerly returning 'nil' in this case
                // is not sufficient.  valid data members may return nil and therefore there must be some
                // way to know the member just doesn't exist.

                translator.throwError(luaState, "unknown member name " + methodName);

                LuaDLL.lua_pushnil(luaState);
            }

            // push false because we are NOT returning a function (see luaIndexFunction)
            translator.push(luaState, false);
            return 2;
        }
Ejemplo n.º 42
0
 //internal int reference;
 public LuaFunction(int reference, LuaState interpreter)
 {
     _Reference = reference;
     this.function = null;
     _Interpreter = interpreter;
 }
Ejemplo n.º 43
0
        public static void tolua_bindthis(IntPtr L, LuaCSFunction get, LuaCSFunction set)
        {
            IntPtr pGet = IntPtr.Zero;
            IntPtr pSet = IntPtr.Zero;

            if (get != null)
            {
                pGet = Marshal.GetFunctionPointerForDelegate(get);
            }

            if (set != null)
            {
                pSet = Marshal.GetFunctionPointerForDelegate(set);
            }

            tolua_regthis(L, pGet, pSet);
        }
Ejemplo n.º 44
0
 public static void lua_register(IntPtr luaState, string name, LuaCSFunction func)
 {
     lua_pushcfunction(luaState, func);
     lua_setglobal(luaState, name);
 }
Ejemplo n.º 45
0
		void init()
		{
			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, Lua.init_luanet);	// steffenj: lua_dostring renamed to luaL_dostring

            // We need to keep this in a managed reference so the delegate doesn't get garbage collected
            panicCallback = new LuaCSFunction(PanicCallback);
            LuaDLL.lua_atpanic(luaState, panicCallback);

            //LuaDLL.lua_atlock(luaState, lockCallback = new LuaCSFunction(LockCallback));
            //LuaDLL.lua_atunlock(luaState, unlockCallback = new LuaCSFunction(UnlockCallback));
        }
Ejemplo n.º 46
0
        public static void lua_pushcclosure(IntPtr l, LuaCSFunction f, int nup)
        {
#if SLUA_STANDALONE
            // Add all LuaCSFunction£¬ or they will be GC collected!  (problem at windows, .net framework 4.5, `CallbackOnCollectedDelegated` exception)
            GCHandle.Alloc(f);
#endif
            IntPtr fn = Marshal.GetFunctionPointerForDelegate(f);
            lua_pushcclosure(l, fn, nup);
        }
Ejemplo n.º 47
0
 public static void lua_atunlock(Lua.lua_State luaState, LuaCSFunction^ unlockf);
Ejemplo n.º 48
0
		// not yet implemented
        public static void lua_atlock(Lua.lua_State luaState, LuaCSFunction^ lockf)
		{
			IntPtr p = Marshal::GetFunctionPointerForDelegate(lockf);
			Lua.lua_atlock(luaState, (lua_CFunction) p.ToPointer());
		}
Ejemplo n.º 49
0
 internal void pushCSFunction(LuaCSFunction function)
 {
     this.translator.pushFunction(this.luaState, function);
 }
Ejemplo n.º 50
0
 public static void lua_pushcclosure(IntPtr l, LuaCSFunction f, int nup)
 {
     IntPtr fn = Marshal.GetFunctionPointerForDelegate(f);
     lua_pushcclosure(l, fn, nup);
 }
Ejemplo n.º 51
0
 public static void lua_pushcfunction(IntPtr luaState, LuaCSFunction func)
 {
     IntPtr fn = Marshal.GetFunctionPointerForDelegate(func);
     lua_pushcclosure(luaState, fn, 0);
 }
Ejemplo n.º 52
0
        public LuaState()
        {
            // Create State
            L = LuaDLL.luaL_newstate();

            // Create LuaInterface library
            LuaDLL.luaL_openlibs(L);
            LuaDLL.lua_pushstring(L, "LUAINTERFACE LOADED");
            LuaDLL.lua_pushboolean(L, true);
            LuaDLL.lua_settable(L, (int) LuaIndexes.LUA_REGISTRYINDEX);
            LuaDLL.lua_newtable(L);
            LuaDLL.lua_setglobal(L, "luanet");
            LuaDLL.lua_pushvalue(L, (int)LuaIndexes.LUA_GLOBALSINDEX);
            LuaDLL.lua_getglobal(L, "luanet");
            LuaDLL.lua_pushstring(L, "getmetatable");
            LuaDLL.lua_getglobal(L, "getmetatable");
            LuaDLL.lua_settable(L, -3);

            // Set luanet as global for object translator
            LuaDLL.lua_replace(L, (int)LuaIndexes.LUA_GLOBALSINDEX);
            translator = new ObjectTranslator(this,L);
            LuaDLL.lua_replace(L, (int)LuaIndexes.LUA_GLOBALSINDEX);

            translator.PushTranslator(L);
            //GCHandle handle = GCHandle.Alloc(translator, GCHandleType.Pinned);
            //IntPtr thisptr = GCHandle.ToIntPtr(handle);
            //LuaDLL.lua_pushlightuserdata(L, thisptr);
            //LuaDLL.lua_setglobal(L, "_translator");            

            // We need to keep this in a managed reference so the delegate doesn't get garbage collected
			panicCallback = new LuaCSFunction(LuaStatic.panic);
            LuaDLL.lua_atpanic(L, panicCallback);

            printFunction = new LuaCSFunction(LuaStatic.print);
            LuaDLL.lua_pushstdcallcfunction(L, printFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "print");

            loadfileFunction = new LuaCSFunction(LuaStatic.loadfile);
            LuaDLL.lua_pushstdcallcfunction(L, loadfileFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "loadfile");

            dofileFunction = new LuaCSFunction(LuaStatic.dofile);
            LuaDLL.lua_pushstdcallcfunction(L, dofileFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "dofile");

            // Insert our loader FIRST
            loaderFunction = new LuaCSFunction(LuaStatic.loader);
            LuaDLL.lua_pushstdcallcfunction(L, loaderFunction);
            int loaderFunc = LuaDLL.lua_gettop( L );

            LuaDLL.lua_getfield( L, LuaIndexes.LUA_GLOBALSINDEX, "package" );
            LuaDLL.lua_getfield( L, -1, "loaders" );
            int loaderTable = LuaDLL.lua_gettop( L );

            // Shift table elements right
            for( int e = LuaDLL.luaL_getn( L, loaderTable ) + 1; e > 1; e-- ) 
            {
                LuaDLL.lua_rawgeti( L, loaderTable, e-1 );
                LuaDLL.lua_rawseti( L, loaderTable, e );
            }
            LuaDLL.lua_pushvalue( L, loaderFunc );
            LuaDLL.lua_rawseti( L, loaderTable, 1 );
            LuaDLL.lua_settop( L, 0 );

            DoString(LuaStatic.init_luanet);            
            tracebackFunction = new LuaCSFunction(LuaStatic.traceback);
        }
Ejemplo n.º 53
0
 public static IntPtr tolua_atpanic(IntPtr L, LuaCSFunction func)
 {
     IntPtr fn = Marshal.GetFunctionPointerForDelegate(func);
     return lua_atpanic(L, fn);
 }
Ejemplo n.º 54
0
 public static extern LuaCSFunction lua_atpanic(IntPtr l, LuaCSFunction f);
Ejemplo n.º 55
0
		public static void lua_pushstdcallcfunction(IntPtr luaState, LuaCSFunction function, int n = 0)
		{
			IntPtr fn = Marshal.GetFunctionPointerForDelegate(function);			
            lua_pushcclosure(luaState, fn, n);           
		}        
Ejemplo n.º 56
0
	static void InitEnv()
	{
		m_luaState = LuaDLL.luaL_newstate();
		LuaDLL.luaL_openlibs(L);

		ANativeRuntime.Init();
		ANativeRuntime.exp_setup_luastate(L);

		//set panic
		var panicCallback = new LuaCSFunction(LuaStatic.panic);
		LuaDLL.lua_atpanic(L, panicCallback);
		m_refHolder.Add(panicCallback);

		//override print, warn
        var warnFunction = new LuaCSFunction(LuaStatic.warn);
        LuaDLL.lua_pushstdcallcfunction(L, warnFunction);
        LuaDLL.lua_setfield(L, LuaInterface.LuaIndexes.LUA_GLOBALSINDEX, "warn");
		m_refHolder.Add(warnFunction);

        var printFunction = new LuaCSFunction(LuaStatic.print);
        LuaDLL.lua_pushstdcallcfunction(L, printFunction);
        LuaDLL.lua_setfield(L, LuaInterface.LuaIndexes.LUA_GLOBALSINDEX, "print");
		m_refHolder.Add(printFunction);
	}
Ejemplo n.º 57
0
 public LuaFunction(LuaCSFunction function, LuaState interpreter)
 {
     _Reference = 0;
     this.function = function;
     _Interpreter = interpreter;
 }
Ejemplo n.º 58
0
        static void SetOutMethods(IntPtr L, string table, LuaCSFunction getOutFunc = null)
        {
            LuaDLL.lua_getglobal(L, table);
            IntPtr get = Marshal.GetFunctionPointerForDelegate(getOutFunc);
            LuaDLL.tolua_variable(L, "out", get, IntPtr.Zero);

            LuaDLL.lua_pop(L, 1);
        }
Ejemplo n.º 59
0
 internal void pushCSFunction(LuaCSFunction function)
 {
     translator.pushFunction(L,function);
 }
Ejemplo n.º 60
0
 public static void lua_pushcfunction(IntPtr l, LuaCSFunction f)
 {
     lua_pushcclosure(l, f, 0);
 }