Change StringBuffer::save() to take a VariantData*

This commit is contained in:
Benoit Blanchon
2025-02-28 10:05:50 +01:00
parent 05b68fc7cc
commit 7f75985e47
2 changed files with 19 additions and 11 deletions

View File

@ -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;

View File

@ -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;
}