فهرست منبع

Remove `JsonDocument::data()` and `JsonDocument::memoryPool()`

Benoit Blanchon 3 سال پیش
والد
کامیت
62e83133cd

+ 1 - 0
CHANGELOG.md

@@ -11,6 +11,7 @@ HEAD
 * Remove undocumented `accept()` functions
 * Rename `addElement()` to `add()`
 * Remove `getElement()`, `getOrAddElement()`, `getMember()`, and `getOrAddMember()`
+* Remove `JsonDocument::data()` and `JsonDocument::memoryPool()`
 
 > ### BREAKING CHANGES
 >

+ 5 - 5
extras/tests/MemoryPool/StringCopier.cpp

@@ -12,7 +12,7 @@ TEST_CASE("StringCopier") {
 
   SECTION("Works when buffer is big enough") {
     MemoryPool pool(buffer, addPadding(JSON_STRING_SIZE(5)));
-    StringCopier str(pool);
+    StringCopier str(&pool);
 
     str.startString();
     str.append("hello");
@@ -24,7 +24,7 @@ TEST_CASE("StringCopier") {
 
   SECTION("Returns null when too small") {
     MemoryPool pool(buffer, sizeof(void*));
-    StringCopier str(pool);
+    StringCopier str(&pool);
 
     str.startString();
     str.append("hello world!");
@@ -35,7 +35,7 @@ TEST_CASE("StringCopier") {
 
   SECTION("Increases size of memory pool") {
     MemoryPool pool(buffer, addPadding(JSON_STRING_SIZE(6)));
-    StringCopier str(pool);
+    StringCopier str(&pool);
 
     str.startString();
     str.save();
@@ -46,7 +46,7 @@ TEST_CASE("StringCopier") {
 
   SECTION("Works when memory pool is 0 bytes") {
     MemoryPool pool(buffer, 0);
-    StringCopier str(pool);
+    StringCopier str(&pool);
 
     str.startString();
     REQUIRE(str.isValid() == false);
@@ -55,7 +55,7 @@ TEST_CASE("StringCopier") {
 }
 
 static const char* addStringToPool(MemoryPool& pool, const char* s) {
-  StringCopier str(pool);
+  StringCopier str(&pool);
   str.startString();
   str.append(s);
   return str.save().c_str();

+ 1 - 1
extras/tests/Misc/Utf8.cpp

@@ -12,7 +12,7 @@ using namespace ARDUINOJSON_NAMESPACE;
 static void testCodepoint(uint32_t codepoint, std::string expected) {
   char buffer[4096];
   MemoryPool pool(buffer, 4096);
-  StringCopier str(pool);
+  StringCopier str(&pool);
   str.startString();
 
   CAPTURE(codepoint);

+ 17 - 13
src/ArduinoJson/Deserialization/deserialize.hpp

@@ -14,9 +14,10 @@ namespace ARDUINOJSON_NAMESPACE {
 
 template <template <typename, typename> class TDeserializer, typename TReader,
           typename TWriter>
-TDeserializer<TReader, TWriter> makeDeserializer(MemoryPool &pool,
+TDeserializer<TReader, TWriter> makeDeserializer(MemoryPool *pool,
                                                  TReader reader,
                                                  TWriter writer) {
+  ARDUINOJSON_ASSERT(pool != 0);
   return TDeserializer<TReader, TWriter>(pool, reader, writer);
 }
 
@@ -31,11 +32,12 @@ typename enable_if<!is_array<TString>::value, DeserializationError>::type
 deserialize(JsonDocument &doc, const TString &input, NestingLimit nestingLimit,
             TFilter filter) {
   Reader<TString> reader(input);
+  VariantData *data = VariantAttorney::getData(doc);
+  MemoryPool *pool = VariantAttorney::getPool(doc);
   doc.clear();
-  return makeDeserializer<TDeserializer>(
-             doc.memoryPool(), reader,
-             makeStringStorage(input, doc.memoryPool()))
-      .parse(doc.data(), filter, nestingLimit);
+  return makeDeserializer<TDeserializer>(pool, reader,
+                                         makeStringStorage(input, pool))
+      .parse(*data, filter, nestingLimit);
 }
 //
 // deserialize(JsonDocument&, char*, size_t, NestingLimit, Filter);
@@ -47,11 +49,12 @@ DeserializationError deserialize(JsonDocument &doc, TChar *input,
                                  size_t inputSize, NestingLimit nestingLimit,
                                  TFilter filter) {
   BoundedReader<TChar *> reader(input, inputSize);
+  VariantData *data = VariantAttorney::getData(doc);
+  MemoryPool *pool = VariantAttorney::getPool(doc);
   doc.clear();
-  return makeDeserializer<TDeserializer>(
-             doc.memoryPool(), reader,
-             makeStringStorage(input, doc.memoryPool()))
-      .parse(doc.data(), filter, nestingLimit);
+  return makeDeserializer<TDeserializer>(pool, reader,
+                                         makeStringStorage(input, pool))
+      .parse(*data, filter, nestingLimit);
 }
 //
 // deserialize(JsonDocument&, std::istream&, NestingLimit, Filter);
@@ -61,11 +64,12 @@ template <template <typename, typename> class TDeserializer, typename TStream,
 DeserializationError deserialize(JsonDocument &doc, TStream &input,
                                  NestingLimit nestingLimit, TFilter filter) {
   Reader<TStream> reader(input);
+  VariantData *data = VariantAttorney::getData(doc);
+  MemoryPool *pool = VariantAttorney::getPool(doc);
   doc.clear();
-  return makeDeserializer<TDeserializer>(
-             doc.memoryPool(), reader,
-             makeStringStorage(input, doc.memoryPool()))
-      .parse(doc.data(), filter, nestingLimit);
+  return makeDeserializer<TDeserializer>(pool, reader,
+                                         makeStringStorage(input, pool))
+      .parse(*data, filter, nestingLimit);
 }
 
 }  // namespace ARDUINOJSON_NAMESPACE

+ 1 - 1
src/ArduinoJson/Document/BasicJsonDocument.hpp

@@ -146,7 +146,7 @@ class BasicJsonDocument : AllocatorOwner<TAllocator>, public JsonDocument {
   }
 
   void freePool() {
-    this->deallocate(memoryPool().buffer());
+    this->deallocate(getPool()->buffer());
   }
 
   void copyAssignFrom(const JsonDocument& src) {

+ 0 - 10
src/ArduinoJson/Document/JsonDocument.hpp

@@ -83,16 +83,6 @@ class JsonDocument : public VariantOperators<const JsonDocument&> {
     return getVariant().template to<T>();
   }
 
-  // for internal use only
-  MemoryPool& memoryPool() {
-    return _pool;
-  }
-
-  // for internal use only
-  VariantData& data() {
-    return _data;
-  }
-
   ArrayRef createNestedArray() {
     return add().to<ArrayRef>();
   }

+ 2 - 2
src/ArduinoJson/Json/JsonDeserializer.hpp

@@ -20,12 +20,12 @@ namespace ARDUINOJSON_NAMESPACE {
 template <typename TReader, typename TStringStorage>
 class JsonDeserializer {
  public:
-  JsonDeserializer(MemoryPool &pool, TReader reader,
+  JsonDeserializer(MemoryPool *pool, TReader reader,
                    TStringStorage stringStorage)
       : _stringStorage(stringStorage),
         _foundSomething(false),
         _latch(reader),
-        _pool(&pool) {}
+        _pool(pool) {}
 
   template <typename TFilter>
   DeserializationError parse(VariantData &variant, TFilter filter,

+ 2 - 2
src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp

@@ -16,9 +16,9 @@ namespace ARDUINOJSON_NAMESPACE {
 template <typename TReader, typename TStringStorage>
 class MsgPackDeserializer {
  public:
-  MsgPackDeserializer(MemoryPool &pool, TReader reader,
+  MsgPackDeserializer(MemoryPool *pool, TReader reader,
                       TStringStorage stringStorage)
-      : _pool(&pool),
+      : _pool(pool),
         _reader(reader),
         _stringStorage(stringStorage),
         _foundSomething(false) {}

+ 1 - 1
src/ArduinoJson/StringStorage/StringCopier.hpp

@@ -10,7 +10,7 @@ namespace ARDUINOJSON_NAMESPACE {
 
 class StringCopier {
  public:
-  StringCopier(MemoryPool& pool) : _pool(&pool) {}
+  StringCopier(MemoryPool* pool) : _pool(pool) {}
 
   void startString() {
     _pool->getFreeZone(&_ptr, &_capacity);

+ 3 - 2
src/ArduinoJson/StringStorage/StringStorage.hpp

@@ -10,13 +10,14 @@
 namespace ARDUINOJSON_NAMESPACE {
 
 template <typename TInput>
-StringCopier makeStringStorage(TInput&, MemoryPool& pool) {
+StringCopier makeStringStorage(TInput&, MemoryPool* pool) {
+  ARDUINOJSON_ASSERT(pool != 0);
   return StringCopier(pool);
 }
 
 template <typename TChar>
 StringMover makeStringStorage(
-    TChar* input, MemoryPool&,
+    TChar* input, MemoryPool*,
     typename enable_if<!is_const<TChar>::value>::type* = 0) {
   return StringMover(reinterpret_cast<char*>(input));
 }