diff --git a/include/ArduinoJson/JsonPrintable.hpp b/include/ArduinoJson/Internals/JsonPrintable.hpp similarity index 62% rename from include/ArduinoJson/JsonPrintable.hpp rename to include/ArduinoJson/Internals/JsonPrintable.hpp index 838e1205..19f34fab 100644 --- a/include/ArduinoJson/JsonPrintable.hpp +++ b/include/ArduinoJson/Internals/JsonPrintable.hpp @@ -6,37 +6,38 @@ #pragma once -#include "Internals/IndentedPrint.hpp" -#include "Internals/PrettyJsonWriter.hpp" -#include "Internals/StringBuilder.hpp" +#include "IndentedPrint.hpp" +#include "PrettyJsonWriter.hpp" +#include "StringBuilder.hpp" namespace ArduinoJson { +namespace Internals { template class JsonPrintable { public: size_t printTo(Print &print) const { - Internals::JsonWriter writer(&print); + JsonWriter writer(&print); downcast().writeTo(writer); return writer.bytesWritten(); } size_t printTo(char *buffer, size_t bufferSize) const { - Internals::StringBuilder sb(buffer, bufferSize); + StringBuilder sb(buffer, bufferSize); return printTo(sb); } - size_t prettyPrintTo(Internals::IndentedPrint &print) const { - Internals::PrettyJsonWriter writer(&print); + size_t prettyPrintTo(IndentedPrint &print) const { + PrettyJsonWriter writer(&print); downcast().writeTo(writer); return writer.bytesWritten(); } size_t prettyPrintTo(char *buffer, size_t bufferSize) const { - Internals::StringBuilder sb(buffer, bufferSize); + StringBuilder sb(buffer, bufferSize); return prettyPrintTo(sb); } size_t prettyPrintTo(Print &print) const { - Internals::IndentedPrint indentedPrint = Internals::IndentedPrint(print); + IndentedPrint indentedPrint = IndentedPrint(print); return prettyPrintTo(indentedPrint); } @@ -44,3 +45,4 @@ class JsonPrintable { const T &downcast() const { return *static_cast(this); } }; } +} diff --git a/include/ArduinoJson/JsonArray.hpp b/include/ArduinoJson/JsonArray.hpp index dce39ac0..490eb5f7 100644 --- a/include/ArduinoJson/JsonArray.hpp +++ b/include/ArduinoJson/JsonArray.hpp @@ -6,10 +6,10 @@ #pragma once +#include "Internals/JsonPrintable.hpp" #include "Internals/ReferenceType.hpp" #include "JsonArrayConstIterator.hpp" #include "JsonArrayIterator.hpp" -#include "JsonPrintable.hpp" #define JSON_ARRAY_SIZE(NUMBER_OF_ELEMENTS) \ (sizeof(JsonArray) + (NUMBER_OF_ELEMENTS) * sizeof(Internals::JsonArrayNode)) @@ -19,7 +19,7 @@ namespace ArduinoJson { class JsonObject; class JsonBuffer; -class JsonArray : public JsonPrintable, +class JsonArray : public Internals::JsonPrintable, public Internals::ReferenceType { friend class JsonBuffer; diff --git a/include/ArduinoJson/JsonObject.hpp b/include/ArduinoJson/JsonObject.hpp index a131dabf..f13d5a15 100644 --- a/include/ArduinoJson/JsonObject.hpp +++ b/include/ArduinoJson/JsonObject.hpp @@ -6,10 +6,10 @@ #pragma once +#include "Internals/JsonPrintable.hpp" #include "Internals/ReferenceType.hpp" #include "JsonObjectConstIterator.hpp" #include "JsonObjectIterator.hpp" -#include "JsonPrintable.hpp" #define JSON_OBJECT_SIZE(NUMBER_OF_ELEMENTS) \ (sizeof(JsonObject) + \ @@ -20,7 +20,7 @@ namespace ArduinoJson { class JsonArray; class JsonBuffer; -class JsonObject : public JsonPrintable, +class JsonObject : public Internals::JsonPrintable, public Internals::ReferenceType { friend class JsonBuffer; diff --git a/include/ArduinoJson/JsonVariant.hpp b/include/ArduinoJson/JsonVariant.hpp index acb2373a..5dbbd042 100644 --- a/include/ArduinoJson/JsonVariant.hpp +++ b/include/ArduinoJson/JsonVariant.hpp @@ -9,16 +9,16 @@ #include #include // for uint8_t +#include "Internals/JsonPrintable.hpp" #include "Internals/JsonVariantContent.hpp" #include "Internals/JsonVariantType.hpp" -#include "JsonPrintable.hpp" namespace ArduinoJson { class JsonArray; class JsonObject; -class JsonVariant : public JsonPrintable { +class JsonVariant : public Internals::JsonPrintable { public: JsonVariant() : _type(Internals::JSON_UNDEFINED) {} @@ -63,11 +63,21 @@ class JsonVariant : public JsonPrintable { operator signed char() const { return static_cast(as()); } operator signed int() const { return static_cast(as()); } operator signed long() const; - operator signed short() const { return static_cast(as()); } - operator unsigned char() const { return static_cast(as()); } - operator unsigned int() const { return static_cast(as()); } - operator unsigned long() const { return static_cast(as()); } - operator unsigned short() const { return static_cast(as()); } + operator signed short() const { + return static_cast(as()); + } + operator unsigned char() const { + return static_cast(as()); + } + operator unsigned int() const { + return static_cast(as()); + } + operator unsigned long() const { + return static_cast(as()); + } + operator unsigned short() const { + return static_cast(as()); + } operator const char *() const; operator JsonArray &() const; operator JsonObject &() const;