Pārlūkot izejas kodu

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

Benoit Blanchon 11 mēneši atpakaļ
vecāks
revīzija
7f75985e47

+ 16 - 8
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;

+ 3 - 3
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;
       }