Coverage Report

Created: 2024-09-08 06:19

/src/arduinojson/src/ArduinoJson/Object/ObjectData.hpp
Line
Count
Source (jump to first uncovered line)
1
// ArduinoJson - https://arduinojson.org
2
// Copyright © 2014-2024, Benoit BLANCHON
3
// MIT License
4
5
#pragma once
6
7
#include <ArduinoJson/Collection/CollectionData.hpp>
8
9
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
10
11
class ObjectData : public CollectionData {
12
 public:
13
  template <typename TAdaptedString>  // also works with StringNode*
14
  VariantData* addMember(TAdaptedString key, ResourceManager* resources);
15
16
  template <typename TAdaptedString>
17
  VariantData* getOrAddMember(TAdaptedString key, ResourceManager* resources);
18
19
  template <typename TAdaptedString>
20
  VariantData* getMember(TAdaptedString key,
21
                         const ResourceManager* resources) const;
22
23
  template <typename TAdaptedString>
24
  static VariantData* getMember(const ObjectData* object, TAdaptedString key,
25
0
                                const ResourceManager* resources) {
26
0
    if (!object)
27
0
      return nullptr;
28
0
    return object->getMember(key, resources);
29
0
  }
30
31
  template <typename TAdaptedString>
32
  void removeMember(TAdaptedString key, ResourceManager* resources);
33
34
  template <typename TAdaptedString>
35
  static void removeMember(ObjectData* obj, TAdaptedString key,
36
                           ResourceManager* resources) {
37
    if (!obj)
38
      return;
39
    obj->removeMember(key, resources);
40
  }
41
42
0
  void remove(iterator it, ResourceManager* resources) {
43
0
    CollectionData::removePair(it, resources);
44
0
  }
45
46
  static void remove(ObjectData* obj, ObjectData::iterator it,
47
0
                     ResourceManager* resources) {
48
0
    if (!obj)
49
0
      return;
50
0
    obj->remove(it, resources);
51
0
  }
52
53
394
  size_t size(const ResourceManager* resources) const {
54
394
    return CollectionData::size(resources) / 2;
55
394
  }
56
57
0
  static size_t size(const ObjectData* obj, const ResourceManager* resources) {
58
0
    if (!obj)
59
0
      return 0;
60
0
    return obj->size(resources);
61
0
  }
62
63
 private:
64
  template <typename TAdaptedString>
65
  iterator findKey(TAdaptedString key, const ResourceManager* resources) const;
66
};
67
68
ARDUINOJSON_END_PRIVATE_NAMESPACE