From f60d7e5d1f5da3ec876a537b3c9079ce258e4cf3 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 18 Jul 2019 08:18:39 +0200 Subject: [PATCH] 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. --- AK/JsonValue.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) 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; }