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)); } }
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!")); }
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!")); }
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)); } }
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)); } }
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; }); } }
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 }
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); }
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)); } }
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 }
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 }
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 }
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); } }
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!")); }
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 }
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)); } }
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)); } }
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); } }
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; }
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)); } }
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)); } }
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); }
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); }