JsonValue: Add to_uint(), to_int() and as_double().

The to_foo() functions are for converting when you might not be sure of the
underlying value type. The as_foo() family assumes that you know exactly
what the underlying value type is.
This commit is contained in:
Andreas Kling 2019-07-18 08:18:39 +02:00
parent b12d1fbb81
commit f60d7e5d1f

View file

@ -67,6 +67,32 @@ public:
return IPv4Address::from_string(as_string());
}
int to_int(int default_value = 0) const
{
if (!is_number())
return default_value;
#ifndef KERNEL
if (is_double())
return (int)as_double();
#endif
if (is_uint())
return (int)as_uint();
return as_int();
}
unsigned to_uint(unsigned default_value = 0) const
{
if (!is_number())
return default_value;
#ifndef KERNEL
if (is_double())
return (unsigned)as_double();
#endif
if (is_int())
return (unsigned)as_int();
return as_uint();
}
bool to_bool(bool default_value = false) const
{
if (!is_bool())
@ -110,6 +136,14 @@ public:
return *m_value.as_array;
}
#ifndef KERNEL
double as_double() const
{
ASSERT(is_double());
return m_value.as_double;
}
#endif
Type type() const { return m_type; }
bool is_null() const { return m_type == Type::Null; }