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; 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); ARDUINOJSON_ASSERT(node_ != nullptr);
node_->data[size_] = 0; node_->data[size_] = 0;
auto node = resources_->getString(adaptString(node_->data, size_)); auto node = resources_->getString(adaptString(node_->data, size_));
@ -52,13 +67,6 @@ class StringBuffer {
return node; return node;
} }
JsonString str() const {
ARDUINOJSON_ASSERT(node_ != nullptr);
return JsonString(node_->data, node_->length);
}
private:
ResourceManager* resources_; ResourceManager* resources_;
StringNode* node_ = nullptr; StringNode* node_ = nullptr;
size_t size_ = 0; size_t size_ = 0;

View File

@ -305,7 +305,7 @@ class MsgPackDeserializer {
if (err) if (err)
return err; return err;
variant->setOwnedString(stringBuffer_.save()); stringBuffer_.save(variant);
return DeserializationError::Ok; return DeserializationError::Ok;
} }
@ -334,7 +334,7 @@ class MsgPackDeserializer {
if (err) if (err)
return err; return err;
variant->setRawString(stringBuffer_.save()); stringBuffer_.saveRaw(variant);
return DeserializationError::Ok; return DeserializationError::Ok;
} }
@ -412,7 +412,7 @@ class MsgPackDeserializer {
if (!keyVariant) if (!keyVariant)
return DeserializationError::NoMemory; return DeserializationError::NoMemory;
keyVariant->setOwnedString(stringBuffer_.save()); stringBuffer_.save(keyVariant);
} else { } else {
member = 0; member = 0;
} }