private object TryAsNumber()

in Arriba/Arriba/Structures/Value.cs [155:255]


        private object TryAsNumber()
        {
            if (_value is double)
            {
                return _value;
            }
            else if (_value is ValueTypeReference<double>)
            {
                return ((ValueTypeReference<double>)_value).Value;
            }
            else if (_value is float)
            {
                return (double)(float)_value;
            }
            else if (_value is ValueTypeReference<float>)
            {
                return (double)((ValueTypeReference<float>)_value).Value;
            }
            else if (_value is long)
            {
                return _value;
            }
            else if (_value is ValueTypeReference<long>)
            {
                return ((ValueTypeReference<long>)_value).Value;
            }
            else if (_value is uint)
            {
                return (long)(uint)_value;
            }
            else if (_value is ValueTypeReference<uint>)
            {
                return (long)((ValueTypeReference<uint>)_value).Value;
            }
            else if (_value is int)
            {
                return (long)(int)_value;
            }
            else if (_value is ValueTypeReference<int>)
            {
                return (long)((ValueTypeReference<int>)_value).Value;
            }
            else if (_value is ushort)
            {
                return (long)(ushort)_value;
            }
            else if (_value is ValueTypeReference<ushort>)
            {
                return (long)((ValueTypeReference<ushort>)_value).Value;
            }
            else if (_value is short)
            {
                return (long)(short)_value;
            }
            else if (_value is ValueTypeReference<short>)
            {
                return (long)((ValueTypeReference<short>)_value).Value;
            }
            else if (_value is sbyte)
            {
                return (long)(sbyte)_value;
            }
            else if (_value is ValueTypeReference<sbyte>)
            {
                return (long)((ValueTypeReference<sbyte>)_value).Value;
            }
            else if (_value is byte)
            {
                return (long)(byte)_value;
            }
            else if (_value is ValueTypeReference<byte>)
            {
                return (long)((ValueTypeReference<byte>)_value).Value;
            }
            else if (_value is ulong)
            {
                ulong asUlong = (ulong)_value;
                if (asUlong > long.MaxValue)
                {
                    return asUlong;
                }
                else
                {
                    return (long)asUlong;
                }
            }
            else if (_value is ValueTypeReference<ulong>)
            {
                ulong asUlong = ((ValueTypeReference<ulong>)_value).Value;
                if (asUlong > long.MaxValue)
                {
                    return asUlong;
                }
                else
                {
                    return (long)asUlong;
                }
            }

            return null;
        }