From 6dbdeca58ad3e396eab2d45f06d287f321bde309 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Mon, 13 Oct 2025 14:55:59 +0200 Subject: [PATCH] VariantImpl: extract static `size()` --- src/ArduinoJson/Variant/VariantImpl.hpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/ArduinoJson/Variant/VariantImpl.hpp b/src/ArduinoJson/Variant/VariantImpl.hpp index e0bfdf46..633d4886 100644 --- a/src/ArduinoJson/Variant/VariantImpl.hpp +++ b/src/ArduinoJson/Variant/VariantImpl.hpp @@ -537,13 +537,24 @@ class VariantImpl { } size_t size() { - if (isObject()) - return asObject().size(); + if (!data_) + return 0; - if (isArray()) - return asArray().size(); + return size(data_, resources_); + } - return 0; + static size_t size(VariantData* data, ResourceManager* resources) { + ARDUINOJSON_ASSERT(data != nullptr); + ARDUINOJSON_ASSERT(resources != nullptr); + + size_t n = CollectionImpl(data, resources).size(); + + if (data->type == VariantType::Object) { + ARDUINOJSON_ASSERT((n % 2) == 0); + n /= 2; + } + + return n; } ArrayImpl toArray() {