From 483a2c9101244bba98f409fc08ec34f947e02cd3 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Sun, 18 Feb 2024 10:52:07 +0100 Subject: [PATCH] Mark `JsonArray`, `JsonObject`, and `JsonVariant` as `final` See #2056 --- CHANGELOG.md | 5 +++++ src/ArduinoJson/Array/JsonArray.hpp | 2 +- src/ArduinoJson/Array/JsonArrayConst.hpp | 2 +- src/ArduinoJson/Array/JsonArrayIterator.hpp | 4 ++-- src/ArduinoJson/Object/JsonObject.hpp | 2 +- src/ArduinoJson/Object/JsonObjectConst.hpp | 2 +- src/ArduinoJson/Object/JsonObjectIterator.hpp | 4 ++-- src/ArduinoJson/Object/JsonPair.hpp | 4 ++-- src/ArduinoJson/Variant/JsonVariant.hpp | 4 ++-- src/ArduinoJson/Variant/JsonVariantConst.hpp | 5 +++-- 10 files changed, 20 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa4cfe6f..a0b7a2ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ ArduinoJson: change log ======================= +HEAD +---- + +* Mark `JsonArray`, `JsonObject`, and `JsonVariant` as `final` (issue #2056) + v7.0.3 (2024-02-05) ------ diff --git a/src/ArduinoJson/Array/JsonArray.hpp b/src/ArduinoJson/Array/JsonArray.hpp index 29233630..b1a3ba1a 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/v7/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 6c0d7db2..a7cb51c5 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/v7/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 70bb28f4..5cabffd6 100644 --- a/src/ArduinoJson/Array/JsonArrayIterator.hpp +++ b/src/ArduinoJson/Array/JsonArrayIterator.hpp @@ -25,7 +25,7 @@ class Ptr { T value_; }; -class JsonArrayIterator { +class JsonArrayIterator final { friend class JsonArray; public: @@ -59,7 +59,7 @@ class JsonArrayIterator { detail::ResourceManager* resources_; }; -class JsonArrayConstIterator { +class JsonArrayConstIterator final { friend class JsonArray; public: diff --git a/src/ArduinoJson/Object/JsonObject.hpp b/src/ArduinoJson/Object/JsonObject.hpp index e4e7dee4..3c1fe2b2 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/v7/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 908fa275..a6d48273 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/v7/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 b849e62a..4e2fc16a 100644 --- a/src/ArduinoJson/Object/JsonObjectIterator.hpp +++ b/src/ArduinoJson/Object/JsonObjectIterator.hpp @@ -8,7 +8,7 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE -class JsonObjectIterator { +class JsonObjectIterator final { friend class JsonObject; public: @@ -43,7 +43,7 @@ class JsonObjectIterator { detail::ResourceManager* resources_; }; -class JsonObjectConstIterator { +class JsonObjectConstIterator final { friend class JsonObject; public: diff --git a/src/ArduinoJson/Object/JsonPair.hpp b/src/ArduinoJson/Object/JsonPair.hpp index 4d621a16..dcc9cd82 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/v7/api/jsonobject/begin_end/ -class JsonPair { +class JsonPair final { public: // INTERNAL USE ONLY JsonPair(detail::ObjectData::iterator iterator, @@ -41,7 +41,7 @@ class JsonPair { // A read-only key-value pair. // https://arduinojson.org/v7/api/jsonobjectconst/begin_end/ -class JsonPairConst { +class JsonPairConst final { public: JsonPairConst(detail::ObjectData::iterator iterator, const detail::ResourceManager* resources) diff --git a/src/ArduinoJson/Variant/JsonVariant.hpp b/src/ArduinoJson/Variant/JsonVariant.hpp index 5039c38a..ef0274f9 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/v7/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 7e7b8c0d..b3a0174c 100644 --- a/src/ArduinoJson/Variant/JsonVariantConst.hpp +++ b/src/ArduinoJson/Variant/JsonVariantConst.hpp @@ -23,8 +23,9 @@ class JsonObject; // A read-only reference to a value in a JsonDocument // https://arduinojson.org/v7/api/jsonarrayconst/ -class JsonVariantConst : public detail::VariantTag, - public detail::VariantOperators { +class JsonVariantConst final + : public detail::VariantTag, + public detail::VariantOperators { friend class detail::VariantAttorney; public: