diff --git a/CHANGELOG.md b/CHANGELOG.md index 1758f310..dc66d3c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ HEAD ---- * Improve error messages when using `char` or `char*` (issue #2043) +* Mark `JsonArray`, `JsonObject`, and `JsonVariant` as `final` (issue #2056) v6.21.5 (2024-01-10) ------- diff --git a/src/ArduinoJson/Array/JsonArray.hpp b/src/ArduinoJson/Array/JsonArray.hpp index d208e417..6a2944e8 100644 --- a/src/ArduinoJson/Array/JsonArray.hpp +++ b/src/ArduinoJson/Array/JsonArray.hpp @@ -13,7 +13,7 @@ class JsonObject; // A reference to an array in a JsonDocument // https://arduinojson.org/v6/api/jsonarray/ -class JsonArray : public detail::VariantOperators { +class JsonArray final : public detail::VariantOperators { friend class detail::VariantAttorney; public: diff --git a/src/ArduinoJson/Array/JsonArrayConst.hpp b/src/ArduinoJson/Array/JsonArrayConst.hpp index 6a6463c8..8024fd51 100644 --- a/src/ArduinoJson/Array/JsonArrayConst.hpp +++ b/src/ArduinoJson/Array/JsonArrayConst.hpp @@ -14,7 +14,7 @@ class JsonObject; // A read-only reference to an array in a JsonDocument // https://arduinojson.org/v6/api/jsonarrayconst/ -class JsonArrayConst : public detail::VariantOperators { +class JsonArrayConst final : public detail::VariantOperators { friend class JsonArray; friend class detail::VariantAttorney; diff --git a/src/ArduinoJson/Array/JsonArrayIterator.hpp b/src/ArduinoJson/Array/JsonArrayIterator.hpp index d9048b28..b6f39976 100644 --- a/src/ArduinoJson/Array/JsonArrayIterator.hpp +++ b/src/ArduinoJson/Array/JsonArrayIterator.hpp @@ -9,7 +9,7 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE -class VariantPtr { +class VariantPtr final { public: VariantPtr(detail::MemoryPool* pool, detail::VariantData* data) : variant_(pool, data) {} @@ -26,7 +26,7 @@ class VariantPtr { JsonVariant variant_; }; -class JsonArrayIterator { +class JsonArrayIterator final { friend class JsonArray; public: @@ -65,7 +65,7 @@ class JsonArrayIterator { detail::VariantSlot* slot_; }; -class VariantConstPtr { +class VariantConstPtr final { public: VariantConstPtr(const detail::VariantData* data) : variant_(data) {} @@ -81,7 +81,7 @@ class VariantConstPtr { JsonVariantConst variant_; }; -class JsonArrayConstIterator { +class JsonArrayConstIterator final { friend class JsonArray; public: diff --git a/src/ArduinoJson/Object/JsonObject.hpp b/src/ArduinoJson/Object/JsonObject.hpp index 7cdc1c76..1a4e0cfe 100644 --- a/src/ArduinoJson/Object/JsonObject.hpp +++ b/src/ArduinoJson/Object/JsonObject.hpp @@ -13,7 +13,7 @@ class JsonArray; // A reference to an object in a JsonDocument. // https://arduinojson.org/v6/api/jsonobject/ -class JsonObject : public detail::VariantOperators { +class JsonObject final : public detail::VariantOperators { friend class detail::VariantAttorney; public: diff --git a/src/ArduinoJson/Object/JsonObjectConst.hpp b/src/ArduinoJson/Object/JsonObjectConst.hpp index e9b5e483..6520c76d 100644 --- a/src/ArduinoJson/Object/JsonObjectConst.hpp +++ b/src/ArduinoJson/Object/JsonObjectConst.hpp @@ -11,7 +11,7 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE // A read-only reference to an object in a JsonDocument. // https://arduinojson.org/v6/api/jsonobjectconst/ -class JsonObjectConst : public detail::VariantOperators { +class JsonObjectConst final : public detail::VariantOperators { friend class JsonObject; friend class detail::VariantAttorney; diff --git a/src/ArduinoJson/Object/JsonObjectIterator.hpp b/src/ArduinoJson/Object/JsonObjectIterator.hpp index 55c09ed7..750394d5 100644 --- a/src/ArduinoJson/Object/JsonObjectIterator.hpp +++ b/src/ArduinoJson/Object/JsonObjectIterator.hpp @@ -9,7 +9,7 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE -class JsonPairPtr { +class JsonPairPtr final { public: JsonPairPtr(detail::MemoryPool* pool, detail::VariantSlot* slot) : pair_(pool, slot) {} @@ -26,7 +26,7 @@ class JsonPairPtr { JsonPair pair_; }; -class JsonObjectIterator { +class JsonObjectIterator final { friend class JsonObject; public: @@ -66,7 +66,7 @@ class JsonObjectIterator { detail::VariantSlot* slot_; }; -class JsonPairConstPtr { +class JsonPairConstPtr final { public: JsonPairConstPtr(const detail::VariantSlot* slot) : pair_(slot) {} @@ -82,7 +82,7 @@ class JsonPairConstPtr { JsonPairConst pair_; }; -class JsonObjectConstIterator { +class JsonObjectConstIterator final { friend class JsonObject; public: diff --git a/src/ArduinoJson/Object/JsonPair.hpp b/src/ArduinoJson/Object/JsonPair.hpp index 862a6579..350979fd 100644 --- a/src/ArduinoJson/Object/JsonPair.hpp +++ b/src/ArduinoJson/Object/JsonPair.hpp @@ -12,7 +12,7 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE // A key-value pair. // https://arduinojson.org/v6/api/jsonobject/begin_end/ -class JsonPair { +class JsonPair final { public: // INTERNAL USE ONLY JsonPair(detail::MemoryPool* pool, detail::VariantSlot* slot) { @@ -40,7 +40,7 @@ class JsonPair { // A read-only key-value pair. // https://arduinojson.org/v6/api/jsonobjectconst/begin_end/ -class JsonPairConst { +class JsonPairConst final { public: JsonPairConst(const detail::VariantSlot* slot) { if (slot) { diff --git a/src/ArduinoJson/Variant/JsonVariant.hpp b/src/ArduinoJson/Variant/JsonVariant.hpp index d1f122e9..81408801 100644 --- a/src/ArduinoJson/Variant/JsonVariant.hpp +++ b/src/ArduinoJson/Variant/JsonVariant.hpp @@ -10,8 +10,8 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE // A reference to a value in a JsonDocument. // https://arduinojson.org/v6/api/jsonvariant/ -class JsonVariant : public detail::VariantRefBase, - public detail::VariantOperators { +class JsonVariant final : public detail::VariantRefBase, + public detail::VariantOperators { friend class detail::VariantAttorney; public: diff --git a/src/ArduinoJson/Variant/JsonVariantConst.hpp b/src/ArduinoJson/Variant/JsonVariantConst.hpp index 606df083..e90ba080 100644 --- a/src/ArduinoJson/Variant/JsonVariantConst.hpp +++ b/src/ArduinoJson/Variant/JsonVariantConst.hpp @@ -24,8 +24,9 @@ class JsonObject; // A read-only reference to a value in a JsonDocument // https://arduinojson.org/v6/api/jsonarrayconst/ -class JsonVariantConst : public detail::VariantTag, - public detail::VariantOperators { +class JsonVariantConst final + : public detail::VariantTag, + public detail::VariantOperators { friend class detail::VariantAttorney; public: