Example #1
0
    public static global::ValueType @typeof(object v)
    {
        if ((v == null))
        {
            return(global::ValueType.TNull);
        }

        global::System.Type t = ((global::System.Type)((v as global::System.Type)));
        if (!(global::haxe.lang.Runtime.typeEq(t, null)))
        {
            return(global::ValueType.TObject);
        }

        t = ((global::System.Type)(v.GetType()));
        if ((t.IsEnum || (v is global::haxe.lang.Enum)))
        {
            return(global::ValueType.TEnum(((global::System.Type)(t))));
        }

        if (t.IsValueType)
        {
            global::System.IConvertible vc = ((global::System.IConvertible)(v));
            if ((vc != null))
            {
                global::System.TypeCode _g = vc.GetTypeCode();
                switch (_g)
                {
                case global::System.TypeCode.Boolean:
                {
                    return(global::ValueType.TBool);
                }


                case global::System.TypeCode.Int32:
                {
                    return(global::ValueType.TInt);
                }


                case global::System.TypeCode.Double:
                {
                    double d = vc.ToDouble(default(global::System.IFormatProvider));
                    if ((((d >= global::System.Int32.MinValue) && (d <= global::System.Int32.MaxValue)) && (d == vc.ToInt32(default(global::System.IFormatProvider)))))
                    {
                        return(global::ValueType.TInt);
                    }
                    else
                    {
                        return(global::ValueType.TFloat);
                    }
                }


                default:
                {
                    return(global::ValueType.TClass(((global::System.Type)(t))));
                }
                }
            }
            else
            {
                return(global::ValueType.TClass(((global::System.Type)(t))));
            }
        }

        if ((v is global::haxe.lang.IHxObject))
        {
            if ((v is global::haxe.lang.DynamicObject))
            {
                return(global::ValueType.TObject);
            }
            else if ((v is global::haxe.lang.Enum))
            {
                return(global::ValueType.TEnum(((global::System.Type)(t))));
            }

            return(global::ValueType.TClass(((global::System.Type)(t))));
        }
        else if ((v is global::haxe.lang.Function))
        {
            return(global::ValueType.TFunction);
        }
        else
        {
            return(global::ValueType.TClass(((global::System.Type)(t))));
        }
    }
Example #2
0
        public static bool eq(object v1, object v2)
        {
            if (global::System.Object.ReferenceEquals(((object)(v1)), ((object)(v2))))
            {
                return(true);
            }

            if ((global::System.Object.ReferenceEquals(((object)(v1)), default(object)) || global::System.Object.ReferenceEquals(((object)(v2)), default(object))))
            {
                return(false);
            }

            global::System.IConvertible v1c = ((global::System.IConvertible)((v1 as global::System.IConvertible)));
            if ((v1c != null))
            {
                global::System.IConvertible v2c = ((global::System.IConvertible)((v2 as global::System.IConvertible)));
                if ((v2c == null))
                {
                    return(false);
                }

                global::System.TypeCode t1 = v1c.GetTypeCode();
                global::System.TypeCode t2 = v2c.GetTypeCode();
                if ((t1 == t2))
                {
                    return(global::System.Object.Equals(((object)(v1c)), ((object)(v2c))));
                }

                if (((t1 == global::System.TypeCode.String) || (t2 == global::System.TypeCode.String)))
                {
                    return(false);
                }

                switch (t1)
                {
                case global::System.TypeCode.Int64:
                {
                    switch (t2)
                    {
                    case global::System.TypeCode.Int64:
                    case global::System.TypeCode.UInt64:
                    case global::System.TypeCode.Single:
                    case global::System.TypeCode.Double:
                    case global::System.TypeCode.DateTime:
                    {
                        return(((long)(v1c.ToInt64(default(global::System.IFormatProvider)))) == ((long)(v2c.ToInt64(default(global::System.IFormatProvider)))));
                    }


                    case global::System.TypeCode.Decimal:
                    {
                        return(v1c.ToDecimal(default(global::System.IFormatProvider)).Equals(v2c.ToDecimal(default(global::System.IFormatProvider))));
                    }


                    default:
                    {
                        return(((long)(v1c.ToInt64(default(global::System.IFormatProvider)))) == ((long)(v2c.ToInt64(default(global::System.IFormatProvider)))));
                    }
                    }
                }


                case global::System.TypeCode.Single:
                case global::System.TypeCode.Double:
                {
                    switch (t2)
                    {
                    case global::System.TypeCode.Int64:
                    {
                        return(((long)(v1c.ToInt64(default(global::System.IFormatProvider)))) == ((long)(v2c.ToInt64(default(global::System.IFormatProvider)))));
                    }


                    case global::System.TypeCode.Single:
                    case global::System.TypeCode.Double:
                    {
                        return(v1c.ToDouble(default(global::System.IFormatProvider)) == v2c.ToDouble(default(global::System.IFormatProvider)));
                    }


                    case global::System.TypeCode.Decimal:
                    {
                        return(v1c.ToDecimal(default(global::System.IFormatProvider)).Equals(v2c.ToDecimal(default(global::System.IFormatProvider))));
                    }


                    case global::System.TypeCode.UInt64:
                    case global::System.TypeCode.DateTime:
                    {
                        return(v1c.ToUInt64(default(global::System.IFormatProvider)) == v2c.ToUInt64(default(global::System.IFormatProvider)));
                    }


                    default:
                    {
                        return(v1c.ToDouble(default(global::System.IFormatProvider)) == v2c.ToDouble(default(global::System.IFormatProvider)));
                    }
                    }
                }


                case global::System.TypeCode.Decimal:
                {
                    return(v1c.ToDecimal(default(global::System.IFormatProvider)).Equals(v2c.ToDecimal(default(global::System.IFormatProvider))));
                }


                case global::System.TypeCode.UInt64:
                case global::System.TypeCode.DateTime:
                {
                    switch (t2)
                    {
                    case global::System.TypeCode.Int64:
                    {
                        return(((long)(v1c.ToInt64(default(global::System.IFormatProvider)))) == ((long)(v2c.ToInt64(default(global::System.IFormatProvider)))));
                    }


                    case global::System.TypeCode.UInt64:
                    case global::System.TypeCode.Single:
                    case global::System.TypeCode.Double:
                    case global::System.TypeCode.DateTime:
                    {
                        return(v1c.ToUInt64(default(global::System.IFormatProvider)) == v2c.ToUInt64(default(global::System.IFormatProvider)));
                    }


                    case global::System.TypeCode.Decimal:
                    {
                        return(v1c.ToDecimal(default(global::System.IFormatProvider)).Equals(v2c.ToDecimal(default(global::System.IFormatProvider))));
                    }


                    default:
                    {
                        return(v1c.ToUInt64(default(global::System.IFormatProvider)) == v2c.ToUInt64(default(global::System.IFormatProvider)));
                    }
                    }
                }


                default:
                {
                    switch (t2)
                    {
                    case global::System.TypeCode.Int64:
                    {
                        return(((long)(v1c.ToInt64(default(global::System.IFormatProvider)))) == ((long)(v2c.ToInt64(default(global::System.IFormatProvider)))));
                    }


                    case global::System.TypeCode.Single:
                    case global::System.TypeCode.Double:
                    {
                        return(v1c.ToDouble(default(global::System.IFormatProvider)) == v2c.ToDouble(default(global::System.IFormatProvider)));
                    }


                    case global::System.TypeCode.Decimal:
                    {
                        return(v1c.ToDecimal(default(global::System.IFormatProvider)).Equals(v2c.ToDecimal(default(global::System.IFormatProvider))));
                    }


                    case global::System.TypeCode.UInt64:
                    case global::System.TypeCode.DateTime:
                    {
                        return(v1c.ToUInt64(default(global::System.IFormatProvider)) == v2c.ToUInt64(default(global::System.IFormatProvider)));
                    }


                    default:
                    {
                        return(v1c.ToInt32(default(global::System.IFormatProvider)) == v2c.ToInt32(default(global::System.IFormatProvider)));
                    }
                    }
                }
                }
            }

            if ((((global::System.ValueType)((v1 as global::System.ValueType))) != null))
            {
                return(v1.Equals(v2));
            }
            else
            {
                global::System.Type v1t = ((global::System.Type)((v1 as global::System.Type)));
                if ((v1t != null))
                {
                    global::System.Type v2t = ((global::System.Type)((v2 as global::System.Type)));
                    if ((v2t != null))
                    {
                        return(global::haxe.lang.Runtime.typeEq(v1t, v2t));
                    }

                    return(false);
                }
            }

            return(false);
        }