|
|
|
@ -169,6 +169,7 @@ protected: |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class JsonDouble final : public Value<Json::NUMBER, double> { |
|
|
|
|
string as_string() const { return std::to_string(m_value); } |
|
|
|
|
bool bool_value() const override { return m_value != 0; } |
|
|
|
|
double number_value() const override { return static_cast<double>(m_value); } |
|
|
|
|
int64_ int64_value() const override { return static_cast<int64_>(m_value); } |
|
|
|
@ -180,6 +181,7 @@ public: |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class JsonInt64 final : public Value<Json::NUMBER, int64_> { |
|
|
|
|
string as_string() const { return std::to_string(m_value); } |
|
|
|
|
bool bool_value() const override { return m_value != 0; } |
|
|
|
|
double number_value() const override { return static_cast<double>(m_value); } |
|
|
|
|
int64_ int64_value() const override { return static_cast<int64_>(m_value); } |
|
|
|
@ -191,6 +193,7 @@ public: |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class JsonUInt64 final : public Value<Json::NUMBER, uint64_> { |
|
|
|
|
string as_string() const { return std::to_string(m_value); } |
|
|
|
|
bool bool_value() const override { return m_value != 0; } |
|
|
|
|
double number_value() const override { return static_cast<double>(m_value); } |
|
|
|
|
int64_ int64_value() const override { return static_cast<int64_>(m_value); } |
|
|
|
@ -208,6 +211,7 @@ public: |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
class JsonString final : public Value<Json::STRING, string> { |
|
|
|
|
string as_string() const { return m_value; } |
|
|
|
|
const string &string_value() const override { return m_value; } |
|
|
|
|
bool bool_value() const override { return m_value != "" && m_value != "0"; } |
|
|
|
|
double number_value() const override { size_t pos = 0; double v = std::stod(m_value, &pos); if (pos < m_value.length()) { v = 0; } return v; } |
|
|
|
@ -291,6 +295,7 @@ double Json::number_value() const { return m_ptr->number_v |
|
|
|
|
int64_ Json::int64_value() const { return m_ptr->int64_value(); } |
|
|
|
|
uint64_ Json::uint64_value() const { return m_ptr->uint64_value(); } |
|
|
|
|
bool Json::bool_value() const { return m_ptr->bool_value(); } |
|
|
|
|
string Json::as_string() const { return m_ptr->as_string(); } |
|
|
|
|
const string & Json::string_value() const { return m_ptr->string_value(); } |
|
|
|
|
const vector<Json> & Json::array_items() const { return m_ptr->array_items(); } |
|
|
|
|
const map<string, Json> & Json::object_items() const { return m_ptr->object_items(); } |
|
|
|
@ -301,6 +306,7 @@ double JsonValue::number_value() const { return |
|
|
|
|
int64_ JsonValue::int64_value() const { return 0; } |
|
|
|
|
uint64_ JsonValue::uint64_value() const { return 0; } |
|
|
|
|
bool JsonValue::bool_value() const { return false; } |
|
|
|
|
string JsonValue::as_string() const { return statics().empty_string; } |
|
|
|
|
const string & JsonValue::string_value() const { return statics().empty_string; } |
|
|
|
|
const vector<Json> & JsonValue::array_items() const { return statics().empty_vector; } |
|
|
|
|
const map<string, Json> & JsonValue::object_items() const { return statics().empty_map; } |
|
|
|
|