Ejemplo n.º 1
0
        public override int GetHashCode()
        {
            switch (Type)
            {
            case MondValueType.Undefined:
                return(int.MinValue);

            case MondValueType.Null:
                return(int.MaxValue);

            case MondValueType.True:
                return(1);

            case MondValueType.False:
                return(0);

            case MondValueType.Object:
                return(ObjectValue.GetHashCode());

            case MondValueType.Array:
                return(ArrayValue.GetHashCode());

            case MondValueType.Number:
                return(_numberValue.GetHashCode());

            case MondValueType.String:
                return(_stringValue.GetHashCode());

            case MondValueType.Function:
                return(FunctionValue.GetHashCode());
            }

            throw new NotSupportedException();
        }
Ejemplo n.º 2
0
        public override int GetHashCode()
        {
            switch (Type)
            {
            case MondValueType.Undefined:
                return(int.MinValue);

            case MondValueType.Null:
                return(int.MaxValue);

            case MondValueType.True:
                return(1);

            case MondValueType.False:
                return(0);

            case MondValueType.Object:
                if (TryDispatch("__hash", out var result, this))
                {
                    if (result.Type != MondValueType.Number)
                    {
                        throw new MondRuntimeException(RuntimeError.HashWrongType);
                    }

                    return((int)result);
                }

                return(ObjectValue.GetHashCode());

            case MondValueType.Array:
                return(ArrayValue.GetHashCode());

            case MondValueType.Number:
                return(_numberValue.GetHashCode());

            case MondValueType.String:
                return(_stringValue.GetHashCode());

            case MondValueType.Function:
                return(FunctionValue.GetHashCode());
            }

            throw new NotSupportedException();
        }