/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 |