From 3243f2dc589a5b2874ce6540bb12fdf8c694b83d Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Tue, 30 Sep 2014 16:43:10 +0200 Subject: [PATCH] Implement Printable --- srcs/JsonObject.cpp | 35 +++----------------------- srcs/JsonObject.h | 6 ++--- srcs/Printable.h | 24 ++++++++++++++++++ srcs/srcs.vcxproj | 1 + srcs/srcs.vcxproj.filters | 3 +++ tests/JsonObjectSerializationTests.cpp | 3 ++- 6 files changed, 37 insertions(+), 35 deletions(-) create mode 100644 srcs/Printable.h diff --git a/srcs/JsonObject.cpp b/srcs/JsonObject.cpp index efb2120c..cb319791 100644 --- a/srcs/JsonObject.cpp +++ b/srcs/JsonObject.cpp @@ -9,33 +9,6 @@ using namespace ArduinoJson::Internals; -//JsonValue& JsonObject::operator[](char const* key) -//{ -// addNodeAt(key, innerObject._node); -// return innerObject; -//} -// -//void JsonObject::addNodeAt(const char* key, JsonNode& node) -//{ -// JsonNode& keyNode = _buffer.createNode(); -// keyNode.becomeKey(key, node); -// appendChild(keyNode); -//} -// -//void JsonObject::appendChild(JsonNode& newChild) -//{ -// JsonNode* lastChild = _node.asObjectNode.child; -// while (lastChild->next) -// { -// lastChild = lastChild->next; -// } -// -// if (lastChild) -// lastChild->next = &newChild; -// else -// _node.asObjectNode.child = &newChild; -//} - size_t JsonObject::size() { JsonNode* firstChild = _node->content.asObject.child; @@ -94,13 +67,13 @@ JsonNode* JsonObject::getOrCreateNodeAt(char const* key) return newValueNode; } -void JsonObject::printTo(char* buffer, size_t bufferSize) const +size_t JsonObject::printTo(char* buffer, size_t bufferSize) const { StringBuilder sb(buffer, bufferSize); - printTo(sb); + return printTo(sb); } -void JsonObject::printTo(Print& p) const +size_t JsonObject::printTo(Print& p) const { - p.print("{}"); + return p.print("{}"); } \ No newline at end of file diff --git a/srcs/JsonObject.h b/srcs/JsonObject.h index 7fd2f1aa..e00a9553 100644 --- a/srcs/JsonObject.h +++ b/srcs/JsonObject.h @@ -5,7 +5,7 @@ class JsonValue; struct JsonNode; -class JsonObject +class JsonObject : public Printable { friend JsonValue; @@ -26,8 +26,8 @@ public: bool operator==(const JsonObject& other) const; - void printTo(char* buffer, size_t bufferSize) const; - void printTo(Print& print) const; + size_t printTo(char* buffer, size_t bufferSize) const; + virtual size_t printTo(Print& print) const; private: JsonNode* _node; diff --git a/srcs/Printable.h b/srcs/Printable.h new file mode 100644 index 00000000..c953b1e5 --- /dev/null +++ b/srcs/Printable.h @@ -0,0 +1,24 @@ +/* + * Arduino JSON library + * Benoit Blanchon 2014 - MIT License + */ + +#pragma once + +#ifndef ARDUINO + +class Print; + +class Printable +{ +public: + + virtual size_t printTo(Print& p) const = 0; +}; + +#else + +#include + +#endif + diff --git a/srcs/srcs.vcxproj b/srcs/srcs.vcxproj index 7a32c7b6..ce0737ca 100644 --- a/srcs/srcs.vcxproj +++ b/srcs/srcs.vcxproj @@ -72,6 +72,7 @@ + diff --git a/srcs/srcs.vcxproj.filters b/srcs/srcs.vcxproj.filters index 9b29041d..79073f13 100644 --- a/srcs/srcs.vcxproj.filters +++ b/srcs/srcs.vcxproj.filters @@ -36,6 +36,9 @@ Header Files + + Header Files + diff --git a/tests/JsonObjectSerializationTests.cpp b/tests/JsonObjectSerializationTests.cpp index 2dd0ddf9..4c7bcdec 100644 --- a/tests/JsonObjectSerializationTests.cpp +++ b/tests/JsonObjectSerializationTests.cpp @@ -13,9 +13,10 @@ protected: void jsonMustBe(const char* expected) { char actual[256]; - object.printTo(actual, sizeof(actual)); + int result = object.printTo(actual, sizeof(actual)); EXPECT_STREQ(expected, actual); + EXPECT_EQ(strlen(expected), result); } JsonObject object;