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;
}