From 464eb9989c31658f1d0c59887fd41e6dd018538a Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 15 Sep 2024 00:28:18 +0300 Subject: [PATCH] decrease dv::value size --- src/data/dv.hpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/data/dv.hpp b/src/data/dv.hpp index 263298e9..5c3253f6 100644 --- a/src/data/dv.hpp +++ b/src/data/dv.hpp @@ -46,7 +46,7 @@ namespace dv { integer_t integer; number_t number; boolean_t boolean; - std::string string; + std::unique_ptr string; std::shared_ptr object; std::shared_ptr list; std::shared_ptr bytes; @@ -79,9 +79,9 @@ namespace dv { } value& setString(std::string v) { this->~value(); - new(&val.string)std::string(); + new(&val.string)std::unique_ptr(); type = value_type::string; - val.string = std::move(v); + *val.string = std::move(v); return *this; } value& setList(const std::shared_ptr& ptr) { @@ -106,9 +106,7 @@ namespace dv { return *this; } public: - value() { - type = value_type::none; - } + value() : type(value_type::none) {} value(value_type type); template @@ -131,7 +129,7 @@ namespace dv { val.bytes.reset(); break; case value_type::string: - val.string.~basic_string(); + val.string.reset(); break; default: break; @@ -198,7 +196,7 @@ namespace dv { setBytes(v.val.bytes); break; case value_type::string: - setString(v.val.string); + setString(*v.val.string); break; case value_type::boolean: setBoolean(val.boolean); @@ -298,7 +296,7 @@ namespace dv { val.bytes = nullptr; // no default size break; case value_type::string: - val.string = ""; + val.string = std::make_unique(""); break; default: break;