AGS.Plugin.Lua.LuaDotNetMethodProxy.TryGetValue C# (CSharp) Méthode

TryGetValue() private static méthode

private static TryGetValue ( Type t, IntPtr L, int idx, LuaDotNetObjectProxy>.Dictionary proxiedByUserdata, object &value ) : bool
t System.Type
L System.IntPtr
idx int
proxiedByUserdata LuaDotNetObjectProxy>.Dictionary
value object
Résultat bool
        private static bool TryGetValue(Type t, lua_State L, int idx, Dictionary<IntPtr,LuaDotNetObjectProxy> proxiedByUserdata, out object value)
        {
            if (t.IsPrimitive)
            {
                if (t == typeof(Boolean))
                {
                    if (InvokeLua.lua_type(L, idx) != InvokeLua.LUA_TBOOLEAN)
                    {
                        value = null;
                        return false;
                    }
                    value = InvokeLua.lua_toboolean(L, idx);
                    return true;
                }
                if (t == typeof(Char))
                {
                    switch (InvokeLua.lua_type(L, idx))
                    {
                        case InvokeLua.LUA_TNUMBER:
                            value = (char)InvokeLua.lua_tonumber(L, idx);
                            return true;
                        case InvokeLua.LUA_TSTRING:
                            if (InvokeLua.lua_strlen(L, idx) == (UIntPtr)1)
                            {
                                value = InvokeLua.lua_tostring(L, idx)[0];
                                return true;
                            }
                            break;
                    }
                    value = null;
                    return false;
                }
                if (t == typeof(Byte) || t == typeof(SByte) || t == typeof(Int16) || t == typeof(UInt16)
                    || t == typeof(Int32) || t == typeof(UInt32) || t == typeof(Int64) || t == typeof(UInt64)
                    || t == typeof(Single) || t == typeof(Double) || t == typeof(Decimal))
                {
                    if (!InvokeLua.lua_isnumber(L, idx))
                    {
                        value = null;
                        return false;
                    }
                }
                value = null;
                return false;
            }
            else
            {
                if (InvokeLua.lua_isnil(L, idx))
                {
                    value = null;
                    return true;
                }
                if (!InvokeLua.lua_isuserdata(L, idx) || InvokeLua.lua_islightuserdata(L, idx))
                {
                    value = null;
                    return false;
                }
                LuaDotNetObjectProxy proxy;
                if (proxiedByUserdata.TryGetValue(InvokeLua.lua_touserdata(L, idx), out proxy))
                {
                    if (proxy.ProxyObject.GetType() == t)
                    {
                        value = proxy.ProxyObject;
                        return true;
                    }
                }
                value = null;
                return false;
            }
        }