• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bblanchon / ArduinoJson / 16175784963

09 Jul 2025 04:55PM UTC coverage: 99.267% (-0.08%) from 99.35%
16175784963

push

github

bblanchon
Replace `getData()/getResourceManager()` with `getImpl()`

168 of 168 new or added lines in 20 files covered. (100.0%)

7 existing lines in 5 files now uncovered.

3930 of 3959 relevant lines covered (99.27%)

10797.62 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.08
/src/ArduinoJson/Object/ObjectImpl.hpp
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
template <typename TAdaptedString>
13
inline VariantData* VariantImpl::getMember(TAdaptedString key) const {
4,761✔
14
  auto it = findKey(key);
4,761✔
15
  if (it.done())
4,761✔
16
    return nullptr;
3,499✔
17
  it.next(resources_);
1,262✔
18
  return it.data();
1,262✔
19
}
20

21
template <typename TAdaptedString>
22
VariantData* VariantImpl::getOrAddMember(TAdaptedString key) {
962✔
23
  auto data = getMember(key);
962✔
24
  if (data)
962✔
25
    return data;
34✔
26
  return addMember(key);
928✔
27
}
28

29
template <typename TAdaptedString>
30
inline VariantImpl::iterator VariantImpl::findKey(TAdaptedString key) const {
4,792✔
31
  if (!isObject())
4,792✔
32
    return iterator();
63✔
33
  if (key.isNull())
4,729✔
34
    return iterator();
11✔
35
  bool isKey = true;
4,718✔
36
  for (auto it = createIterator(); !it.done(); it.next(resources_)) {
25,560✔
37
    VariantImpl variant(it.data(), resources_);
22,130✔
38
    if (isKey && stringEquals(key, adaptString(variant.asString())))
22,130✔
39
      return it;
1,288✔
40
    isKey = !isKey;
20,842✔
41
  }
42
  return iterator();
3,430✔
43
}
44

45
template <typename TAdaptedString>
46
inline void VariantImpl::removeMember(TAdaptedString key) {
31✔
47
  removeMember(findKey(key));
31✔
48
}
31✔
49

50
template <typename TAdaptedString>
51
inline VariantData* VariantImpl::addMember(TAdaptedString key) {
928✔
52
  if (!isObject())
928✔
53
    return nullptr;
3✔
54

55
  auto keySlot = allocVariant();
925✔
56
  if (!keySlot)
925✔
57
    return nullptr;
2✔
58

59
  auto valueSlot = allocVariant();
923✔
60
  if (!valueSlot)
923✔
61
    return nullptr;
1✔
62

63
  VariantImpl keyImpl(keySlot.ptr(), resources_);
922✔
64
  if (!keyImpl.setString(key))
922✔
65
    return nullptr;
3✔
66

67
  VariantImpl::appendPair(keySlot, valueSlot);
919✔
68

69
  return valueSlot.ptr();
919✔
70
}
71

72
inline VariantData* VariantImpl::addPair(VariantData** value) {
1,336✔
73
  ARDUINOJSON_ASSERT(isObject());
74

75
  auto keySlot = allocVariant();
1,336✔
76
  if (!keySlot)
1,336✔
77
    return nullptr;
4✔
78

79
  auto valueSlot = allocVariant();
1,332✔
80
  if (!valueSlot)
1,332✔
UNCOV
81
    return nullptr;
×
82
  *value = valueSlot.ptr();
1,332✔
83

84
  VariantImpl::appendPair(keySlot, valueSlot);
1,332✔
85

86
  return keySlot.ptr();
1,332✔
87
}
88

89
// Returns the size (in bytes) of an object with n members.
90
constexpr size_t sizeofObject(size_t n) {
1,688✔
91
  return 2 * n * sizeof(VariantData);
1,688✔
92
}
93

94
ARDUINOJSON_END_PRIVATE_NAMESPACE
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc