Просмотр исходного кода

Extracting a common base class for JsonArray and JsonObject...

Benoit Blanchon 11 лет назад
Родитель
Сommit
0fb4fa8f86

+ 2 - 0
include/ArduinoJson/Internals/List.hpp

@@ -33,6 +33,8 @@ class List {
   const_iterator end() const { return const_iterator(NULL); }
 
  protected:
+  node_type *createNode();
+
   JsonBuffer *_buffer;
   node_type *_firstNode;
 };

+ 0 - 1
include/ArduinoJson/JsonArray.hpp

@@ -50,7 +50,6 @@ class JsonArray : public Internals::JsonPrintable<JsonArray>,
   // constructor is private: instance must be created via a JsonBuffer
   JsonArray(JsonBuffer *buffer) : List(buffer) {}
 
-  node_type *createNode();
   inline void addNode(node_type *node);
 
   static JsonArray _invalid;

+ 0 - 1
include/ArduinoJson/JsonObject.hpp

@@ -55,7 +55,6 @@ class JsonObject : public Internals::JsonPrintable<JsonObject>,
   JsonObject(JsonBuffer *buffer) : List(buffer) {}
 
   JsonVariant &add(key_type key) { return (*this)[key]; }
-  node_type *createNode();
   void addNode(node_type *nodeToAdd);
   void removeNode(node_type *nodeToRemove);
 

+ 8 - 0
src/Internals/List.cpp

@@ -6,6 +6,7 @@
 
 #include "../../include/ArduinoJson/Internals/List.hpp"
 
+#include "../../include/ArduinoJson/Internals/PlacementNew.hpp"
 #include "../../include/ArduinoJson/JsonPair.hpp"
 #include "../../include/ArduinoJson/JsonVariant.hpp"
 
@@ -19,5 +20,12 @@ int List<T>::size() const {
   return nodeCount;
 }
 
+template <typename T>
+Node<T> *List<T>::createNode() {
+  if (!_buffer) return NULL;
+  void *ptr = _buffer->alloc(sizeof(node_type));
+  return ptr ? new (ptr) node_type() : NULL;
+}
+
 template class List<JsonPair>;
 template class List<JsonVariant>;

+ 0 - 7
src/JsonArray.cpp

@@ -6,7 +6,6 @@
 
 #include "../include/ArduinoJson/JsonArray.hpp"
 
-#include "../include/ArduinoJson/Internals/PlacementNew.hpp"
 #include "../include/ArduinoJson/Internals/PrettyJsonWriter.hpp"
 #include "../include/ArduinoJson/JsonBuffer.hpp"
 #include "../include/ArduinoJson/JsonObject.hpp"
@@ -31,12 +30,6 @@ JsonVariant &JsonArray::add() {
   return node->content;
 }
 
-JsonArray::node_type *JsonArray::createNode() {
-  if (!_buffer) return NULL;
-  void *ptr = _buffer->alloc(sizeof(node_type));
-  return ptr ? new (ptr) node_type() : NULL;
-}
-
 void JsonArray::addNode(node_type *newNode) {
   if (_firstNode) {
     node_type *lastNode = _firstNode;

+ 0 - 6
src/JsonObject.cpp

@@ -69,12 +69,6 @@ JsonObject::node_type *JsonObject::getOrCreateNodeAt(const char *key) {
   return newNode;
 }
 
-JsonObject::node_type *JsonObject::createNode() {
-  if (!_buffer) return NULL;
-  void *ptr = _buffer->alloc(sizeof(node_type));
-  return ptr ? new (ptr) node_type() : NULL;
-}
-
 void JsonObject::addNode(node_type *nodeToAdd) {
   if (!_firstNode) {
     _firstNode = nodeToAdd;