diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-07-18 08:18:39 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-07-18 08:18:39 +0200 |
commit | f60d7e5d1f5da3ec876a537b3c9079ce258e4cf3 (patch) | |
tree | 9c94580736fcd0c7185dbea4ba725535732dacbb /AK/JsonValue.h | |
parent | b12d1fbb813c4f87d228e63c03960a344df31bf3 (diff) | |
download | serenity-f60d7e5d1f5da3ec876a537b3c9079ce258e4cf3.zip |
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.
Diffstat (limited to 'AK/JsonValue.h')
-rw-r--r-- | AK/JsonValue.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/AK/JsonValue.h b/AK/JsonValue.h index 0c2a4555af..c0118b6f36 100644 --- a/AK/JsonValue.h +++ b/AK/JsonValue.h @@ -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; } |