diff --git a/include/ArduinoJson/ForwardDeclarations.hpp b/include/ArduinoJson/ForwardDeclarations.hpp new file mode 100644 index 00000000..e7e77023 --- /dev/null +++ b/include/ArduinoJson/ForwardDeclarations.hpp @@ -0,0 +1,23 @@ +// Copyright Benoit Blanchon 2014 +// MIT License +// +// Arduino JSON library +// https://github.com/bblanchon/ArduinoJson + +#pragma once + +namespace ArduinoJson { +class JsonArray; +class JsonArrayIterator; +class JsonBuffer; +class JsonObject; +class JsonObjectIterator; +class JsonObjectKeyValue; +class JsonValue; +namespace Internals { +class IndentedPrint; +class JsonNode; +class JsonParser; +class JsonWriter; +} +} diff --git a/include/ArduinoJson/Internals/CompactJsonWriter.hpp b/include/ArduinoJson/Internals/CompactJsonWriter.hpp index 0279016e..edd1e15b 100644 --- a/include/ArduinoJson/Internals/CompactJsonWriter.hpp +++ b/include/ArduinoJson/Internals/CompactJsonWriter.hpp @@ -6,7 +6,7 @@ #pragma once -#include "ArduinoJson/Internals/JsonWriter.hpp" +#include "JsonWriter.hpp" namespace ArduinoJson { namespace Internals { diff --git a/include/ArduinoJson/Internals/JsonNode.hpp b/include/ArduinoJson/Internals/JsonNode.hpp index 951fcf78..2f6957ee 100644 --- a/include/ArduinoJson/Internals/JsonNode.hpp +++ b/include/ArduinoJson/Internals/JsonNode.hpp @@ -6,11 +6,10 @@ #pragma once -namespace ArduinoJson { -class JsonBuffer; +#include "../ForwardDeclarations.hpp" +namespace ArduinoJson { namespace Internals { -class JsonWriter; class JsonNode { enum JsonNodeType { diff --git a/include/ArduinoJson/Internals/JsonNodeWrapper.hpp b/include/ArduinoJson/Internals/JsonNodeWrapper.hpp index 89a39424..1776f148 100644 --- a/include/ArduinoJson/Internals/JsonNodeWrapper.hpp +++ b/include/ArduinoJson/Internals/JsonNodeWrapper.hpp @@ -6,12 +6,12 @@ #pragma once +#include "../ForwardDeclarations.hpp" #include "JsonNode.hpp" namespace ArduinoJson { -class JsonValue; - namespace Internals { + class JsonNodeWrapper { friend class JsonValue; diff --git a/include/ArduinoJson/Internals/JsonParser.hpp b/include/ArduinoJson/Internals/JsonParser.hpp index 47c599be..a3a33508 100644 --- a/include/ArduinoJson/Internals/JsonParser.hpp +++ b/include/ArduinoJson/Internals/JsonParser.hpp @@ -6,13 +6,11 @@ #pragma once +#include "../ForwardDeclarations.hpp" #include "JsonNode.hpp" namespace ArduinoJson { -class JsonBuffer; - namespace Internals { -class JsonNode; class JsonParser { public: diff --git a/include/ArduinoJson/JsonArrayIterator.hpp b/include/ArduinoJson/JsonArrayIterator.hpp index 8e52cb8a..1e99b606 100644 --- a/include/ArduinoJson/JsonArrayIterator.hpp +++ b/include/ArduinoJson/JsonArrayIterator.hpp @@ -6,12 +6,11 @@ #pragma once -#include "ArduinoJson/JsonValue.hpp" +#include "ForwardDeclarations.hpp" +#include "JsonValue.hpp" namespace ArduinoJson { -class JsonArray; - class JsonArrayIterator { friend class JsonArray; diff --git a/include/ArduinoJson/JsonBuffer.hpp b/include/ArduinoJson/JsonBuffer.hpp index 6ad069fa..c4fc894e 100644 --- a/include/ArduinoJson/JsonBuffer.hpp +++ b/include/ArduinoJson/JsonBuffer.hpp @@ -6,13 +6,11 @@ #pragma once +#include "ForwardDeclarations.hpp" #include "JsonArray.hpp" #include "JsonObject.hpp" namespace ArduinoJson { -namespace Internals { -class JsonParser; -} class JsonBuffer { friend class JsonContainer; diff --git a/include/ArduinoJson/JsonContainer.hpp b/include/ArduinoJson/JsonContainer.hpp index b3181e2f..a3a9a6bf 100644 --- a/include/ArduinoJson/JsonContainer.hpp +++ b/include/ArduinoJson/JsonContainer.hpp @@ -7,15 +7,11 @@ #pragma once #include "Arduino/Printable.hpp" +#include "ForwardDeclarations.hpp" #include "Internals/JsonNodeIterator.hpp" -#include "Internals/JsonNode.hpp" -#include "Internals/IndentedPrint.hpp" #include "Internals/JsonNodeWrapper.hpp" namespace ArduinoJson { -class JsonArray; -class JsonObject; -class JsonValue; class JsonContainer : public Printable, public Internals::JsonNodeWrapper { friend class JsonArray; diff --git a/include/ArduinoJson/JsonObject.hpp b/include/ArduinoJson/JsonObject.hpp index ea43c997..45484107 100644 --- a/include/ArduinoJson/JsonObject.hpp +++ b/include/ArduinoJson/JsonObject.hpp @@ -6,8 +6,8 @@ #pragma once -#include "ArduinoJson/JsonContainer.hpp" -#include "ArduinoJson/JsonObjectIterator.hpp" +#include "JsonContainer.hpp" +#include "JsonObjectIterator.hpp" namespace ArduinoJson { class JsonObject : public JsonContainer { diff --git a/include/ArduinoJson/JsonObjectIterator.hpp b/include/ArduinoJson/JsonObjectIterator.hpp index ca38acf5..420a7f37 100644 --- a/include/ArduinoJson/JsonObjectIterator.hpp +++ b/include/ArduinoJson/JsonObjectIterator.hpp @@ -6,10 +6,10 @@ #pragma once -#include "ArduinoJson/JsonObjectKeyValue.hpp" +#include "ForwardDeclarations.hpp" +#include "JsonObjectKeyValue.hpp" namespace ArduinoJson { -class JsonObject; class JsonObjectIterator { friend class JsonObject; diff --git a/include/ArduinoJson/JsonObjectKeyValue.hpp b/include/ArduinoJson/JsonObjectKeyValue.hpp index 51047743..3e7d4955 100644 --- a/include/ArduinoJson/JsonObjectKeyValue.hpp +++ b/include/ArduinoJson/JsonObjectKeyValue.hpp @@ -6,11 +6,10 @@ #pragma once -#include "ArduinoJson/JsonValue.hpp" +#include "ForwardDeclarations.hpp" +#include "JsonValue.hpp" namespace ArduinoJson { -class JsonObjectIterator; - class JsonObjectKeyValue { friend class JsonObjectIterator; diff --git a/include/ArduinoJson/JsonValue.hpp b/include/ArduinoJson/JsonValue.hpp index 44d36b40..4a4a6b19 100644 --- a/include/ArduinoJson/JsonValue.hpp +++ b/include/ArduinoJson/JsonValue.hpp @@ -6,15 +6,10 @@ #pragma once +#include "ForwardDeclarations.hpp" #include "Internals/JsonNodeWrapper.hpp" namespace ArduinoJson { -class JsonArray; -class JsonArrayIterator; -class JsonBuffer; -class JsonObject; -class JsonObjectIterator; -class JsonObjectKeyValue; class JsonValue : public Internals::JsonNodeWrapper { friend class JsonArray; diff --git a/include/ArduinoJson/StaticJsonBuffer.hpp b/include/ArduinoJson/StaticJsonBuffer.hpp index c5fcd5d0..0e58f500 100644 --- a/include/ArduinoJson/StaticJsonBuffer.hpp +++ b/include/ArduinoJson/StaticJsonBuffer.hpp @@ -6,8 +6,8 @@ #pragma once +#include "ForwardDeclarations.hpp" #include "JsonBuffer.hpp" -#include "JsonObject.hpp" namespace ArduinoJson { template