Coverage Report

Created: 2026-02-14 06:18

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/arduinojson/src/ArduinoJson/Array/ArrayImpl.hpp
Line
Count
Source
1
// ArduinoJson - https://arduinojson.org
2
// Copyright © 2014-2025, Benoit BLANCHON
3
// MIT License
4
5
#pragma once
6
7
#include <ArduinoJson/Variant/VariantCompare.hpp>
8
#include <ArduinoJson/Variant/VariantImpl.hpp>
9
10
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
11
12
0
inline VariantImpl::iterator VariantImpl::at(size_t index) const {
13
0
  if (!isArray())
14
0
    return iterator();
15
0
16
0
  auto it = createIterator();
17
0
  while (!it.done() && index) {
18
0
    it.move(resources_);
19
0
    --index;
20
0
  }
21
0
  return it;
22
0
}
23
24
inline VariantData* VariantImpl::addNewElement(VariantData* data,
25
9.11k
                                               ResourceManager* resources) {
26
9.11k
  ARDUINOJSON_ASSERT(data != nullptr);
27
9.11k
  ARDUINOJSON_ASSERT(data->isArray());
28
9.11k
  ARDUINOJSON_ASSERT(resources != nullptr);
29
30
9.11k
  auto slot = resources->allocVariant();
31
9.11k
  if (!slot)
32
0
    return nullptr;
33
9.11k
  addElement(slot, data, resources);
34
9.11k
  return slot.ptr();
35
9.11k
}
36
37
0
inline VariantData* VariantImpl::getOrAddElement(size_t index) {
38
0
  auto it = createIterator();
39
0
  while (!it.done() && index > 0) {
40
0
    it.move(resources_);
41
0
    index--;
42
0
  }
43
0
  if (it.done())
44
0
    index++;
45
0
  VariantData* element = it.data();
46
0
  while (index > 0) {
47
0
    element = addNewElement();
48
0
    if (!element)
49
0
      return nullptr;
50
0
    index--;
51
0
  }
52
0
  return element;
53
0
}
54
55
0
inline VariantData* VariantImpl::getElement(size_t index) const {
56
0
  return at(index).data();
57
0
}
58
59
0
inline void VariantImpl::removeElement(size_t index) {
60
0
  removeElement(at(index));
61
0
}
62
63
// Returns the size (in bytes) of an array with n elements.
64
0
constexpr size_t sizeofArray(size_t n) {
65
0
  return n * sizeof(VariantData);
66
0
}
67
68
ARDUINOJSON_END_PRIVATE_NAMESPACE