Skip to content

Commit 6dbdeca

Browse files
committed
VariantImpl: extract static size()
1 parent a159820 commit 6dbdeca

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/ArduinoJson/Variant/VariantImpl.hpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -537,13 +537,24 @@ class VariantImpl {
537537
}
538538

539539
size_t size() {
540-
if (isObject())
541-
return asObject().size();
540+
if (!data_)
541+
return 0;
542542

543-
if (isArray())
544-
return asArray().size();
543+
return size(data_, resources_);
544+
}
545+
546+
static size_t size(VariantData* data, ResourceManager* resources) {
547+
ARDUINOJSON_ASSERT(data != nullptr);
548+
ARDUINOJSON_ASSERT(resources != nullptr);
549+
550+
size_t n = CollectionImpl(data, resources).size();
551+
552+
if (data->type == VariantType::Object) {
553+
ARDUINOJSON_ASSERT((n % 2) == 0);
554+
n /= 2;
555+
}
545556

546-
return 0;
557+
return n;
547558
}
548559

549560
ArrayImpl toArray() {

0 commit comments

Comments
 (0)