From 7f75985e4735ee03fc0446964a859653741af1d1 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 28 Feb 2025 10:05:50 +0100 Subject: [PATCH] Change `StringBuffer::save()` to take a `VariantData*` --- src/ArduinoJson/Memory/StringBuffer.hpp | 24 ++++++++++++------- .../MsgPack/MsgPackDeserializer.hpp | 6 ++--- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/ArduinoJson/Memory/StringBuffer.hpp b/src/ArduinoJson/Memory/StringBuffer.hpp index 1626f561..43297a15 100644 --- a/src/ArduinoJson/Memory/StringBuffer.hpp +++ b/src/ArduinoJson/Memory/StringBuffer.hpp @@ -32,7 +32,22 @@ class StringBuffer { return node_->data; } - StringNode* save() { + JsonString str() const { + ARDUINOJSON_ASSERT(node_ != nullptr); + + return JsonString(node_->data, node_->length); + } + + void save(VariantData* data) { + data->setOwnedString(commitStringNode()); + } + + void saveRaw(VariantData* data) { + data->setRawString(commitStringNode()); + } + + private: + StringNode* commitStringNode() { ARDUINOJSON_ASSERT(node_ != nullptr); node_->data[size_] = 0; auto node = resources_->getString(adaptString(node_->data, size_)); @@ -52,13 +67,6 @@ class StringBuffer { return node; } - JsonString str() const { - ARDUINOJSON_ASSERT(node_ != nullptr); - - return JsonString(node_->data, node_->length); - } - - private: ResourceManager* resources_; StringNode* node_ = nullptr; size_t size_ = 0; diff --git a/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp b/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp index 44e3cdd0..c532ce70 100644 --- a/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +++ b/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp @@ -305,7 +305,7 @@ class MsgPackDeserializer { if (err) return err; - variant->setOwnedString(stringBuffer_.save()); + stringBuffer_.save(variant); return DeserializationError::Ok; } @@ -334,7 +334,7 @@ class MsgPackDeserializer { if (err) return err; - variant->setRawString(stringBuffer_.save()); + stringBuffer_.saveRaw(variant); return DeserializationError::Ok; } @@ -412,7 +412,7 @@ class MsgPackDeserializer { if (!keyVariant) return DeserializationError::NoMemory; - keyVariant->setOwnedString(stringBuffer_.save()); + stringBuffer_.save(keyVariant); } else { member = 0; }