Esempio n. 1
0
        static int _m_EndObjectRegister_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);



                {
                    System.Type                _type            = (System.Type)translator.GetObject(L, 1, typeof(System.Type));
                    System.IntPtr              _L               = LuaAPI.lua_touserdata(L, 2);
                    XLua.ObjectTranslator      _translator      = (XLua.ObjectTranslator)translator.GetObject(L, 3, typeof(XLua.ObjectTranslator));
                    XLua.LuaDLL.lua_CSFunction _csIndexer       = translator.GetDelegate <XLua.LuaDLL.lua_CSFunction>(L, 4);
                    XLua.LuaDLL.lua_CSFunction _csNewIndexer    = translator.GetDelegate <XLua.LuaDLL.lua_CSFunction>(L, 5);
                    System.Type                _base_type       = (System.Type)translator.GetObject(L, 6, typeof(System.Type));
                    XLua.LuaDLL.lua_CSFunction _arrayIndexer    = translator.GetDelegate <XLua.LuaDLL.lua_CSFunction>(L, 7);
                    XLua.LuaDLL.lua_CSFunction _arrayNewIndexer = translator.GetDelegate <XLua.LuaDLL.lua_CSFunction>(L, 8);

                    XLua.Utils.EndObjectRegister(_type, _L, _translator, _csIndexer, _csNewIndexer, _base_type, _arrayIndexer, _arrayNewIndexer);



                    return(0);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Esempio n. 2
0
        static int _m_BeginObjectRegister_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);



                int gen_param_count = LuaAPI.lua_gettop(L);

                if (gen_param_count == 8 && translator.Assignable <System.Type>(L, 1) && LuaTypes.LUA_TLIGHTUSERDATA == LuaAPI.lua_type(L, 2) && translator.Assignable <XLua.ObjectTranslator>(L, 3) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 4) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 5) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 6) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 7) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 8))
                {
                    System.Type           _type       = (System.Type)translator.GetObject(L, 1, typeof(System.Type));
                    System.IntPtr         _L          = LuaAPI.lua_touserdata(L, 2);
                    XLua.ObjectTranslator _translator = (XLua.ObjectTranslator)translator.GetObject(L, 3, typeof(XLua.ObjectTranslator));
                    int _meta_count   = LuaAPI.xlua_tointeger(L, 4);
                    int _method_count = LuaAPI.xlua_tointeger(L, 5);
                    int _getter_count = LuaAPI.xlua_tointeger(L, 6);
                    int _setter_count = LuaAPI.xlua_tointeger(L, 7);
                    int _type_id      = LuaAPI.xlua_tointeger(L, 8);

                    XLua.Utils.BeginObjectRegister(_type, _L, _translator, _meta_count, _method_count, _getter_count, _setter_count, _type_id);



                    return(0);
                }
                if (gen_param_count == 7 && translator.Assignable <System.Type>(L, 1) && LuaTypes.LUA_TLIGHTUSERDATA == LuaAPI.lua_type(L, 2) && translator.Assignable <XLua.ObjectTranslator>(L, 3) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 4) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 5) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 6) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 7))
                {
                    System.Type           _type       = (System.Type)translator.GetObject(L, 1, typeof(System.Type));
                    System.IntPtr         _L          = LuaAPI.lua_touserdata(L, 2);
                    XLua.ObjectTranslator _translator = (XLua.ObjectTranslator)translator.GetObject(L, 3, typeof(XLua.ObjectTranslator));
                    int _meta_count   = LuaAPI.xlua_tointeger(L, 4);
                    int _method_count = LuaAPI.xlua_tointeger(L, 5);
                    int _getter_count = LuaAPI.xlua_tointeger(L, 6);
                    int _setter_count = LuaAPI.xlua_tointeger(L, 7);

                    XLua.Utils.BeginObjectRegister(_type, _L, _translator, _meta_count, _method_count, _getter_count, _setter_count);



                    return(0);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }

            return(LuaAPI.luaL_error(L, "invalid arguments to XLua.Utils.BeginObjectRegister!"));
        }
Esempio n. 3
0
        static int __CreateInstance(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                if (LuaAPI.lua_gettop(L) == 2 && translator.Assignable <XLua.ObjectTranslator>(L, 2))
                {
                    XLua.ObjectTranslator _translator = (XLua.ObjectTranslator)translator.GetObject(L, 2, typeof(XLua.ObjectTranslator));

                    XLua.ObjectCasters gen_ret = new XLua.ObjectCasters(_translator);
                    translator.Push(L, gen_ret);

                    return(1);
                }
            }
            catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
            return(LuaAPI.luaL_error(L, "invalid arguments to XLua.ObjectCasters constructor!"));
        }
        static int __CreateInstance(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                if (LuaAPI.lua_gettop(L) == 4 && translator.Assignable <XLua.ObjectTranslator>(L, 2) && translator.Assignable <System.Type>(L, 3) && translator.Assignable <System.Reflection.MethodBase>(L, 4))
                {
                    XLua.ObjectTranslator        _translator = (XLua.ObjectTranslator)translator.GetObject(L, 2, typeof(XLua.ObjectTranslator));
                    System.Type                  _targetType = (System.Type)translator.GetObject(L, 3, typeof(System.Type));
                    System.Reflection.MethodBase _method     = (System.Reflection.MethodBase)translator.GetObject(L, 4, typeof(System.Reflection.MethodBase));

                    XLua.OverloadMethodWrap gen_ret = new XLua.OverloadMethodWrap(_translator, _targetType, _method);
                    translator.Push(L, gen_ret);

                    return(1);
                }
            }
            catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
            return(LuaAPI.luaL_error(L, "invalid arguments to XLua.OverloadMethodWrap constructor!"));
        }
Esempio n. 5
0
        static int __CreateInstance(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                if (LuaAPI.lua_gettop(L) == 4 && translator.Assignable <XLua.ObjectTranslator>(L, 2) && translator.Assignable <XLua.ObjectCheckers>(L, 3) && translator.Assignable <XLua.ObjectCasters>(L, 4))
                {
                    XLua.ObjectTranslator _translator  = (XLua.ObjectTranslator)translator.GetObject(L, 2, typeof(XLua.ObjectTranslator));
                    XLua.ObjectCheckers   _objCheckers = (XLua.ObjectCheckers)translator.GetObject(L, 3, typeof(XLua.ObjectCheckers));
                    XLua.ObjectCasters    _objCasters  = (XLua.ObjectCasters)translator.GetObject(L, 4, typeof(XLua.ObjectCasters));

                    XLua.MethodWrapsCache gen_ret = new XLua.MethodWrapsCache(_translator, _objCheckers, _objCasters);
                    translator.Push(L, gen_ret);

                    return(1);
                }
            }
            catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
            return(LuaAPI.luaL_error(L, "invalid arguments to XLua.MethodWrapsCache constructor!"));
        }
        static int _m_FindTranslator_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);



                {
                    System.IntPtr _L = LuaAPI.lua_touserdata(L, 1);

                    XLua.ObjectTranslator gen_ret = XLua.ObjectTranslatorPool.FindTranslator(_L);
                    translator.Push(L, gen_ret);



                    return(1);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Esempio n. 7
0
        static int _m_EndClassRegister_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);



                {
                    System.Type           _type       = (System.Type)translator.GetObject(L, 1, typeof(System.Type));
                    System.IntPtr         _L          = LuaAPI.lua_touserdata(L, 2);
                    XLua.ObjectTranslator _translator = (XLua.ObjectTranslator)translator.GetObject(L, 3, typeof(XLua.ObjectTranslator));

                    XLua.Utils.EndClassRegister(_type, _L, _translator);



                    return(0);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Esempio n. 8
0
        static LuaCSFunction genFieldSetter(Type type, FieldInfo field)
        {
            if (field.IsStatic)
            {
                return((RealStatePtr L) =>
                {
                    ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                    object val = translator.GetObject(L, 1, field.FieldType);
                    if (field.FieldType.IsValueType && val == null)
                    {
                        return LuaAPI.luaL_error(L, type.Name + "." + field.Name + " Expected type " + field.FieldType);
                    }
                    field.SetValue(null, val);
                    return 0;
                });
            }
            else
            {
                return((RealStatePtr L) =>
                {
                    ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);

                    object obj = translator.FastGetCSObj(L, 1);
                    if (obj == null || !type.IsInstanceOfType(obj))
                    {
                        return LuaAPI.luaL_error(L, "Expected type " + type + ", but got " + (obj == null ? "null" : obj.GetType().ToString()) + ", while set field " + field);
                    }

                    object val = translator.GetObject(L, 2, field.FieldType);
                    if (field.FieldType.IsValueType && val == null)
                    {
                        return LuaAPI.luaL_error(L, type.Name + "." + field.Name + " Expected type " + field.FieldType);
                    }
                    field.SetValue(obj, val);
                    return 0;
                });
            }
        }
Esempio n. 9
0
        public static int LoadAssembly(RealStatePtr L)
        {
#if UNITY_WSA && !UNITY_EDITOR
            return(LuaAPI.luaL_error(L, "xlua.load_assembly no support in uwp!"));
#else
            try
            {
                ObjectTranslator translator   = ObjectTranslatorPool.Instance.Find(L);
                string           assemblyName = LuaAPI.lua_tostring(L, 1);

                Assembly assembly = null;

                try
                {
                    assembly = Assembly.Load(assemblyName);
                }
                catch (BadImageFormatException)
                {
                    // The assemblyName was invalid.  It is most likely a path.
                }

                if (assembly == null)
                {
                    assembly = Assembly.Load(AssemblyName.GetAssemblyName(assemblyName));
                }

                if (assembly != null && !translator.assemblies.Contains(assembly))
                {
                    translator.assemblies.Add(assembly);
                }
                return(0);
            }
            catch (System.Exception e)
            {
                return(LuaAPI.luaL_error(L, "c# exception in xlua.load_assembly:" + e));
            }
#endif
        }
Esempio n. 10
0
        public static int ImportGenericType(RealStatePtr L)
        {
            try
            {
                int top = LuaAPI.lua_gettop(L);
                if (top < 2)
                {
                    return(LuaAPI.luaL_error(L, "import generic type need at lease 2 arguments"));
                }
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                string           className  = LuaAPI.lua_tostring(L, 1);
                if (className.EndsWith("<>"))
                {
                    className = className.Substring(0, className.Length - 2);
                }
                Type genericDef = translator.FindType(className + "`" + (top - 1));
                if (genericDef is null || !genericDef.IsGenericTypeDefinition())
                {
                    LuaAPI.lua_pushnil(L);
                }
                else
                {
                    Type[] typeArguments = new Type[top - 1];
                    for (int i = 2; i <= top; i++)
                    {
                        typeArguments[i - 2] = getType(L, translator, i);
                        if (typeArguments[i - 2] is null)
                        {
                            return(LuaAPI.luaL_error(L, "param need a type"));
                        }
                    }
                    Type genericInc = genericDef.MakeGenericType(typeArguments);
                    translator.GetTypeId(L, genericInc);
                    translator.PushAny(L, genericInc);
                }

                return(1);
            }
Esempio n. 11
0
        public static int XLuaPrivateAccessible(RealStatePtr L)
        {
            try
            {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Type             type       = getType(L, translator, 1);;
                if (type == null)
                {
                    return(LuaAPI.luaL_error(L, "xlua.private_accessible, can not find c# type"));
                }

                while (type != null)
                {
                    translator.PrivateAccessible(L, type);
                    type = type.BaseType();
                }
                return(0);
            }
            catch (Exception e)
            {
                return(LuaAPI.luaL_error(L, "c# exception in xlua.private_accessible: " + e));
            }
        }
Esempio n. 12
0
		public UnityEngine.GameObject __Gen_Delegate_Imp19(IFramework.Hotfix.Lua.StructTest p0, int p1, object p2)
		{
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.Push(L, p0);
                LuaAPI.xlua_pushinteger(L, p1);
                translator.PushAny(L, p2);
                
                PCall(L, 3, 1, errFunc);
                
                
                UnityEngine.GameObject __gen_ret = (UnityEngine.GameObject)translator.GetObject(L, errFunc + 1, typeof(UnityEngine.GameObject));
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
		}
Esempio n. 13
0
		public UnityEngine.Vector3 __Gen_Delegate_Imp14(object p0, UnityEngine.Vector3 p1, UnityEngine.Vector3 p2)
		{
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                translator.PushAny(L, p0);
                translator.PushUnityEngineVector3(L, p1);
                translator.PushUnityEngineVector3(L, p2);
                
                PCall(L, 3, 1, errFunc);
                
                
                UnityEngine.Vector3 __gen_ret;translator.Get(L, errFunc + 1, out __gen_ret);
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
		}
Esempio n. 14
0
		public int __Gen_Delegate_Imp9(int p0, string p1, out Tutorial.CSCallLua.DClass p2)
		{
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
                RealStatePtr L = luaEnv.rawL;
                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                ObjectTranslator translator = luaEnv.translator;
                LuaAPI.xlua_pushinteger(L, p0);
                LuaAPI.lua_pushstring(L, p1);
                
                PCall(L, 2, 2, errFunc);
                
                p2 = (Tutorial.CSCallLua.DClass)translator.GetObject(L, errFunc + 2, typeof(Tutorial.CSCallLua.DClass));
                
                int __gen_ret = LuaAPI.xlua_tointeger(L, errFunc + 1);
                LuaAPI.lua_settop(L, errFunc - 1);
                return  __gen_ret;
#if THREAD_SAFE || HOTFIX_ENABLE
            }
#endif
		}
Esempio n. 15
0
        int UnityEngineVector4_m_Set(RealStatePtr L, int gen_param_count)
        {
            ObjectTranslator translator = this;


            UnityEngine.Vector4 gen_to_be_invoked; translator.Get(L, 1, out gen_to_be_invoked);


            {
                float _newX = (float)LuaAPI.lua_tonumber(L, 2);
                float _newY = (float)LuaAPI.lua_tonumber(L, 3);
                float _newZ = (float)LuaAPI.lua_tonumber(L, 4);
                float _newW = (float)LuaAPI.lua_tonumber(L, 5);

                gen_to_be_invoked.Set(_newX, _newY, _newZ, _newW);


                translator.UpdateUnityEngineVector4(L, 1, gen_to_be_invoked);


                return(0);
            }
        }
Esempio n. 16
0
        int UnityEngineVector2_m_Equals(RealStatePtr L, int gen_param_count)
        {
            ObjectTranslator translator = this;


            UnityEngine.Vector2 gen_to_be_invoked; translator.Get(L, 1, out gen_to_be_invoked);

            if (gen_param_count == 2 && translator.Assignable <object>(L, 2))
            {
                object _other = translator.GetObject(L, 2, typeof(object));

                bool gen_ret = gen_to_be_invoked.Equals(_other);
                LuaAPI.lua_pushboolean(L, gen_ret);


                translator.UpdateUnityEngineVector2(L, 1, gen_to_be_invoked);


                return(1);
            }
            if (gen_param_count == 2 && translator.Assignable <UnityEngine.Vector2>(L, 2))
            {
                UnityEngine.Vector2 _other; translator.Get(L, 2, out _other);

                bool gen_ret = gen_to_be_invoked.Equals(_other);
                LuaAPI.lua_pushboolean(L, gen_ret);


                translator.UpdateUnityEngineVector2(L, 1, gen_to_be_invoked);


                return(1);
            }


            return(LuaAPI.luaL_error(L, "invalid arguments to UnityEngine.Vector2.Equals!"));
        }
Esempio n. 17
0
        public InvokeLua.ICalc __Gen_Delegate_Imp2(int p0, string[] p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            LuaAPI.xlua_pushinteger(L, p0);
            if (p1 != null)
            {
                for (int __gen_i = 0; __gen_i < p1.Length; ++__gen_i)
                {
                    LuaAPI.lua_pushstring(L, p1[__gen_i]);
                }
            }
            ;

            int __gen_error = LuaAPI.lua_pcall(L, 1 + (p1 == null ? 0 : p1.Length), 1, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }


            InvokeLua.ICalc __gen_ret = (InvokeLua.ICalc)translator.GetObject(L, err_func + 1, typeof(InvokeLua.ICalc));
            LuaAPI.lua_settop(L, err_func - 1);
            return(__gen_ret);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
Esempio n. 18
0
        int UnityEngineVector2__MulMeta(RealStatePtr L, int gen_param_count)
        {
            ObjectTranslator translator = this;

            if (translator.Assignable <UnityEngine.Vector2>(L, 1) && translator.Assignable <UnityEngine.Vector2>(L, 2))
            {
                UnityEngine.Vector2 leftside; translator.Get(L, 1, out leftside);
                UnityEngine.Vector2 rightside; translator.Get(L, 2, out rightside);

                translator.PushUnityEngineVector2(L, leftside * rightside);

                return(1);
            }

            if (translator.Assignable <UnityEngine.Vector2>(L, 1) && LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 2))
            {
                UnityEngine.Vector2 leftside; translator.Get(L, 1, out leftside);
                float rightside = (float)LuaAPI.lua_tonumber(L, 2);

                translator.PushUnityEngineVector2(L, leftside * rightside);

                return(1);
            }

            if (LuaTypes.LUA_TNUMBER == LuaAPI.lua_type(L, 1) && translator.Assignable <UnityEngine.Vector2>(L, 2))
            {
                float leftside = (float)LuaAPI.lua_tonumber(L, 1);
                UnityEngine.Vector2 rightside; translator.Get(L, 2, out rightside);

                translator.PushUnityEngineVector2(L, leftside * rightside);

                return(1);
            }

            return(LuaAPI.luaL_error(L, "invalid arguments to right hand of * operator, need UnityEngine.Vector2!"));
        }
        static int _m_Find(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


                XLua.ObjectTranslatorPool gen_to_be_invoked = (XLua.ObjectTranslatorPool)translator.FastGetCSObj(L, 1);



                {
                    System.IntPtr _L = LuaAPI.lua_touserdata(L, 2);

                    XLua.ObjectTranslator gen_ret = gen_to_be_invoked.Find(_L);
                    translator.Push(L, gen_ret);



                    return(1);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Esempio n. 20
0
        static int _m_RegisterObject_xlua_st_(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);



                {
                    System.IntPtr         _L          = LuaAPI.lua_touserdata(L, 1);
                    XLua.ObjectTranslator _translator = (XLua.ObjectTranslator)translator.GetObject(L, 2, typeof(XLua.ObjectTranslator));
                    int    _idx  = LuaAPI.xlua_tointeger(L, 3);
                    string _name = LuaAPI.lua_tostring(L, 4);
                    object _obj  = translator.GetObject(L, 5, typeof(object));

                    XLua.Utils.RegisterObject(_L, _translator, _idx, _name, _obj);



                    return(0);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Esempio n. 21
0
        public static void loadUpvalue(RealStatePtr L, Type type, string metafunc, int num)
        {
            ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);

            LuaAPI.xlua_pushasciistring(L, metafunc);
            LuaAPI.lua_rawget(L, LuaIndexes.LUA_REGISTRYINDEX);
            translator.Push(L, type);
            LuaAPI.lua_rawget(L, -2);
            for (int i = 1; i <= num; i++)
            {
                LuaAPI.lua_getupvalue(L, -i, i);
                if (LuaAPI.lua_isnil(L, -1))
                {
                    LuaAPI.lua_pop(L, 1);
                    LuaAPI.lua_newtable(L);
                    LuaAPI.lua_pushvalue(L, -1);
                    LuaAPI.lua_setupvalue(L, -i - 2, i);
                }
            }
            for (int i = 0; i < num; i++)
            {
                LuaAPI.lua_remove(L, -num - 1);
            }
        }
Esempio n. 22
0
        public ObjectCheckers(ObjectTranslator translator)
        {
            this.translator              = translator;
            checkersMap[typeof(sbyte)]   = numberCheck;
            checkersMap[typeof(byte)]    = numberCheck;
            checkersMap[typeof(short)]   = numberCheck;
            checkersMap[typeof(ushort)]  = numberCheck;
            checkersMap[typeof(int)]     = numberCheck;
            checkersMap[typeof(uint)]    = numberCheck;
            checkersMap[typeof(long)]    = int64Check;
            checkersMap[typeof(ulong)]   = uint64Check;
            checkersMap[typeof(double)]  = numberCheck;
            checkersMap[typeof(char)]    = numberCheck;
            checkersMap[typeof(float)]   = numberCheck;
            checkersMap[typeof(decimal)] = decimalCheck;
            checkersMap[typeof(bool)]    = boolCheck;
            checkersMap[typeof(string)]  = strCheck;
            checkersMap[typeof(object)]  = objectCheck;
            checkersMap[typeof(byte[])]  = bytesCheck;
            checkersMap[typeof(IntPtr)]  = intptrCheck;

            checkersMap[typeof(LuaTable)]    = luaTableCheck;
            checkersMap[typeof(LuaFunction)] = luaFunctionCheck;
        }
Esempio n. 23
0
 public ObjectCasters(ObjectTranslator translator)
 {
     this.translator             = translator;
     castersMap[typeof(char)]    = charCaster;
     castersMap[typeof(sbyte)]   = sbyteCaster;
     castersMap[typeof(byte)]    = byteCaster;
     castersMap[typeof(short)]   = shortCaster;
     castersMap[typeof(ushort)]  = ushortCaster;
     castersMap[typeof(int)]     = intCaster;
     castersMap[typeof(uint)]    = uintCaster;
     castersMap[typeof(long)]    = longCaster;
     castersMap[typeof(ulong)]   = ulongCaster;
     castersMap[typeof(double)]  = getDouble;
     castersMap[typeof(float)]   = floatCaster;
     castersMap[typeof(decimal)] = decimalCaster;
     castersMap[typeof(bool)]    = getBoolean;
     castersMap[typeof(string)]  = getString;
     castersMap[typeof(object)]  = getObject;
     castersMap[typeof(byte[])]  = getBytes;
     castersMap[typeof(IntPtr)]  = getIntptr;
     //special type
     castersMap[typeof(LuaTable)]    = getLuaTable;
     castersMap[typeof(LuaFunction)] = getLuaFunction;
 }
        static int _m_Add(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


                XLua.ObjectTranslatorPool gen_to_be_invoked = (XLua.ObjectTranslatorPool)translator.FastGetCSObj(L, 1);



                {
                    System.IntPtr         _L          = LuaAPI.lua_touserdata(L, 2);
                    XLua.ObjectTranslator _translator = (XLua.ObjectTranslator)translator.GetObject(L, 3, typeof(XLua.ObjectTranslator));

                    gen_to_be_invoked.Add(_L, _translator);



                    return(0);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Esempio n. 25
0
        public static int XLuaAccess(RealStatePtr L)
        {
            try
            {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Type             type       = getType(L, translator, 1);
                object           obj        = null;
                if (type == null && LuaAPI.lua_type(L, 1) == LuaTypes.LUA_TUSERDATA)
                {
                    obj = translator.SafeGetCSObj(L, 1);
                    if (obj == null)
                    {
                        return(LuaAPI.luaL_error(L, "xlua.access, #1 parameter must a type/c# object/string"));
                    }
                    type = obj.GetType();
                }

                if (type == null)
                {
                    return(LuaAPI.luaL_error(L, "xlua.access, can not find c# type"));
                }

                string fieldName = LuaAPI.lua_tostring(L, 2);

                BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;

                if (LuaAPI.lua_gettop(L) > 2) // set
                {
                    var field = type.GetField(fieldName, bindingFlags);
                    if (field != null)
                    {
                        field.SetValue(obj, translator.GetObject(L, 3, field.FieldType));
                        return(0);
                    }
                    var prop = type.GetProperty(fieldName, bindingFlags);
                    if (prop != null)
                    {
                        prop.SetValue(obj, translator.GetObject(L, 3, prop.PropertyType), null);
                        return(0);
                    }
                }
                else
                {
                    var field = type.GetField(fieldName, bindingFlags);
                    if (field != null)
                    {
                        translator.PushAny(L, field.GetValue(obj));
                        return(1);
                    }
                    var prop = type.GetProperty(fieldName, bindingFlags);
                    if (prop != null)
                    {
                        translator.PushAny(L, prop.GetValue(obj, null));
                        return(1);
                    }
                }
                return(LuaAPI.luaL_error(L, "xlua.access, no field " + fieldName));
            }
            catch (Exception e)
            {
                return(LuaAPI.luaL_error(L, "c# exception in xlua.access: " + e));
            }
        }
Esempio n. 26
0
        public static bool TryPrimitiveArraySet(Type type, RealStatePtr L, object obj, int array_idx, int obj_idx)
        {
            bool ok = true;

            LuaTypes lua_type = LuaAPI.lua_type(L, obj_idx);

            if (type == typeof(int[]) && lua_type == LuaTypes.LUA_TNUMBER)
            {
                int[] array = obj as int[];
                array[array_idx] = LuaAPI.xlua_tointeger(L, obj_idx);
            }
            else if (type == typeof(float[]) && lua_type == LuaTypes.LUA_TNUMBER)
            {
                float[] array = obj as float[];
                array[array_idx] = (float)LuaAPI.lua_tonumber(L, obj_idx);
            }
            else if (type == typeof(double[]) && lua_type == LuaTypes.LUA_TNUMBER)
            {
                double[] array = obj as double[];
                array[array_idx] = LuaAPI.lua_tonumber(L, obj_idx);;
            }
            else if (type == typeof(bool[]) && lua_type == LuaTypes.LUA_TBOOLEAN)
            {
                bool[] array = obj as bool[];
                array[array_idx] = LuaAPI.lua_toboolean(L, obj_idx);
            }
            else if (type == typeof(long[]) && LuaAPI.lua_isint64(L, obj_idx))
            {
                long[] array = obj as long[];
                array[array_idx] = LuaAPI.lua_toint64(L, obj_idx);
            }
            else if (type == typeof(ulong[]) && LuaAPI.lua_isuint64(L, obj_idx))
            {
                ulong[] array = obj as ulong[];
                array[array_idx] = LuaAPI.lua_touint64(L, obj_idx);
            }
            else if (type == typeof(sbyte[]) && lua_type == LuaTypes.LUA_TNUMBER)
            {
                sbyte[] array = obj as sbyte[];
                array[array_idx] = (sbyte)LuaAPI.xlua_tointeger(L, obj_idx);
            }
            else if (type == typeof(short[]) && lua_type == LuaTypes.LUA_TNUMBER)
            {
                short[] array = obj as short[];
                array[array_idx] = (short)LuaAPI.xlua_tointeger(L, obj_idx);
            }
            else if (type == typeof(ushort[]) && lua_type == LuaTypes.LUA_TNUMBER)
            {
                ushort[] array = obj as ushort[];
                array[array_idx] = (ushort)LuaAPI.xlua_tointeger(L, obj_idx);
            }
            else if (type == typeof(char[]) && lua_type == LuaTypes.LUA_TNUMBER)
            {
                char[] array = obj as char[];
                array[array_idx] = (char)LuaAPI.xlua_tointeger(L, obj_idx);
            }
            else if (type == typeof(uint[]) && lua_type == LuaTypes.LUA_TNUMBER)
            {
                uint[] array = obj as uint[];
                array[array_idx] = LuaAPI.xlua_touint(L, obj_idx);
            }
            else if (type == typeof(IntPtr[]) && lua_type == LuaTypes.LUA_TLIGHTUSERDATA)
            {
                IntPtr[] array = obj as IntPtr[];
                array[array_idx] = LuaAPI.lua_touserdata(L, obj_idx);
            }
            else if (type == typeof(decimal[]))
            {
                decimal[] array = obj as decimal[];
                if (lua_type == LuaTypes.LUA_TNUMBER)
                {
                    array[array_idx] = (decimal)LuaAPI.lua_tonumber(L, obj_idx);
                }

                if (lua_type == LuaTypes.LUA_TUSERDATA)
                {
                    ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                    if (translator.IsDecimal(L, obj_idx))
                    {
                        translator.Get(L, obj_idx, out array[array_idx]);
                    }
                    else
                    {
                        ok = false;
                    }
                }
                else
                {
                    ok = false;
                }
            }
            else if (type == typeof(string[]) && lua_type == LuaTypes.LUA_TSTRING)
            {
                string[] array = obj as string[];
                array[array_idx] = LuaAPI.lua_tostring(L, obj_idx);
            }
            else
            {
                ok = false;
            }
            return(ok);
        }
Esempio n. 27
0
        static bool tryPrimitiveArrayGet(Type type, RealStatePtr L, object obj, int index)
        {
            bool ok = true;

            if (type == typeof(int[]))
            {
                int[] array = obj as int[];
                LuaAPI.xlua_pushinteger(L, array[index]);
            }
            else if (type == typeof(float[]))
            {
                float[] array = obj as float[];
                LuaAPI.lua_pushnumber(L, array[index]);
            }
            else if (type == typeof(double[]))
            {
                double[] array = obj as double[];
                LuaAPI.lua_pushnumber(L, array[index]);
            }
            else if (type == typeof(bool[]))
            {
                bool[] array = obj as bool[];
                LuaAPI.lua_pushboolean(L, array[index]);
            }
            else if (type == typeof(long[]))
            {
                long[] array = obj as long[];
                LuaAPI.lua_pushint64(L, array[index]);
            }
            else if (type == typeof(ulong[]))
            {
                ulong[] array = obj as ulong[];
                LuaAPI.lua_pushuint64(L, array[index]);
            }
            else if (type == typeof(sbyte[]))
            {
                sbyte[] array = obj as sbyte[];
                LuaAPI.xlua_pushinteger(L, array[index]);
            }
            else if (type == typeof(short[]))
            {
                short[] array = obj as short[];
                LuaAPI.xlua_pushinteger(L, array[index]);
            }
            else if (type == typeof(ushort[]))
            {
                ushort[] array = obj as ushort[];
                LuaAPI.xlua_pushinteger(L, array[index]);
            }
            else if (type == typeof(char[]))
            {
                char[] array = obj as char[];
                LuaAPI.xlua_pushinteger(L, array[index]);
            }
            else if (type == typeof(uint[]))
            {
                uint[] array = obj as uint[];
                LuaAPI.xlua_pushuint(L, array[index]);
            }
            else if (type == typeof(IntPtr[]))
            {
                IntPtr[] array = obj as IntPtr[];
                LuaAPI.lua_pushlightuserdata(L, array[index]);
            }
            else if (type == typeof(decimal[]))
            {
                decimal[]        array      = obj as decimal[];
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                translator.PushDecimal(L, array[index]);
            }
            else if (type == typeof(string[]))
            {
                string[] array = obj as string[];
                LuaAPI.lua_pushstring(L, array[index]);
            }
            else
            {
                ok = false;
            }
            return(ok);
        }