File tree Expand file tree Collapse file tree 6 files changed +19
-30
lines changed Expand file tree Collapse file tree 6 files changed +19
-30
lines changed Original file line number Diff line number Diff line change @@ -35,7 +35,7 @@ class JsonArrayIterator {
35
35
: iterator_(iterator), resources_(resources) {}
36
36
37
37
JsonVariant operator *() {
38
- return JsonVariant (iterator_.data (), resources_);
38
+ return JsonVariant (iterator_.value ( resources_) );
39
39
}
40
40
Ptr<JsonVariant> operator ->() {
41
41
return operator *();
@@ -69,7 +69,7 @@ class JsonArrayConstIterator {
69
69
: iterator_(iterator), resources_(resources) {}
70
70
71
71
JsonVariantConst operator *() const {
72
- return JsonVariantConst (iterator_.data (), resources_);
72
+ return JsonVariantConst (iterator_.value ( resources_) );
73
73
}
74
74
Ptr<JsonVariantConst> operator ->() {
75
75
return operator *();
Original file line number Diff line number Diff line change @@ -19,6 +19,11 @@ inline void CollectionIterator::next(const ResourceManager* resources) {
19
19
currentId_ = nextId;
20
20
}
21
21
22
+ inline VariantImpl CollectionIterator::value (ResourceManager* resources) const {
23
+ ARDUINOJSON_ASSERT (slot_ != nullptr );
24
+ return VariantImpl (slot_, resources);
25
+ }
26
+
22
27
inline VariantImpl::iterator VariantImpl::createIterator () const {
23
28
if (!data_ || !data_->isCollection ())
24
29
return iterator ();
@@ -107,8 +112,7 @@ inline size_t VariantImpl::nesting() const {
107
112
return 0 ;
108
113
size_t maxChildNesting = 0 ;
109
114
for (auto it = createIterator (); !it.done (); it.next (resources_)) {
110
- VariantImpl variant (it.data (), resources_);
111
- size_t childNesting = variant.nesting ();
115
+ auto childNesting = it.value (resources_).nesting ();
112
116
if (childNesting > maxChildNesting)
113
117
maxChildNesting = childNesting;
114
118
}
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
13
13
14
14
struct VariantData ;
15
15
class ResourceManager ;
16
+ class VariantImpl ;
16
17
17
18
class CollectionIterator {
18
19
friend class VariantImpl ;
@@ -22,6 +23,8 @@ class CollectionIterator {
22
23
23
24
void next (const ResourceManager* resources);
24
25
26
+ VariantImpl value (ResourceManager* resources) const ;
27
+
25
28
bool done () const {
26
29
return slot_ == nullptr ;
27
30
}
@@ -34,21 +37,6 @@ class CollectionIterator {
34
37
return slot_ != other.slot_ ;
35
38
}
36
39
37
- VariantData* operator ->() {
38
- ARDUINOJSON_ASSERT (slot_ != nullptr );
39
- return data ();
40
- }
41
-
42
- VariantData& operator *() {
43
- ARDUINOJSON_ASSERT (slot_ != nullptr );
44
- return *data ();
45
- }
46
-
47
- const VariantData& operator *() const {
48
- ARDUINOJSON_ASSERT (slot_ != nullptr );
49
- return *data ();
50
- }
51
-
52
40
VariantData* data () {
53
41
return slot_;
54
42
}
Original file line number Diff line number Diff line change @@ -26,8 +26,7 @@ class PrettyJsonSerializer : public JsonSerializer<TWriter> {
26
26
nesting_++;
27
27
while (!it.done ()) {
28
28
indent ();
29
- VariantImpl (it.data (), base::resources_).accept (*this );
30
-
29
+ it.value (base::resources_).accept (*this );
31
30
it.next (base::resources_);
32
31
base::write (it.done () ? " \r\n " : " ,\r\n " );
33
32
}
@@ -49,7 +48,7 @@ class PrettyJsonSerializer : public JsonSerializer<TWriter> {
49
48
while (!it.done ()) {
50
49
if (isKey)
51
50
indent ();
52
- VariantImpl ( it.data (), base::resources_).accept (*this );
51
+ it.value ( base::resources_).accept (*this );
53
52
it.next (base::resources_);
54
53
if (isKey)
55
54
base::write (" : " );
Original file line number Diff line number Diff line change @@ -18,10 +18,9 @@ class JsonPair {
18
18
JsonPair (detail::VariantImpl::iterator iterator,
19
19
detail::ResourceManager* resources) {
20
20
if (!iterator.done ()) {
21
- detail::VariantImpl variant (iterator.data (), resources);
22
- key_ = variant.asString ();
21
+ key_ = iterator.value (resources).asString ();
23
22
iterator.next (resources);
24
- value_ = JsonVariant (iterator.data (), resources);
23
+ value_ = JsonVariant (iterator.value ( resources) );
25
24
}
26
25
}
27
26
@@ -47,10 +46,9 @@ class JsonPairConst {
47
46
JsonPairConst (detail::VariantImpl::iterator iterator,
48
47
detail::ResourceManager* resources) {
49
48
if (!iterator.done ()) {
50
- detail::VariantImpl variant (iterator.data (), resources);
51
- key_ = variant.asString ();
49
+ key_ = iterator.value (resources).asString ();
52
50
iterator.next (resources);
53
- value_ = JsonVariantConst (iterator.data (), resources);
51
+ value_ = JsonVariantConst (iterator.value ( resources) );
54
52
}
55
53
}
56
54
Original file line number Diff line number Diff line change @@ -34,8 +34,8 @@ inline VariantImpl::iterator VariantImpl::findKey(TAdaptedString key) const {
34
34
return iterator ();
35
35
bool isKey = true ;
36
36
for (auto it = createIterator (); !it.done (); it.next (resources_)) {
37
- VariantImpl variant (it. data (), resources_);
38
- if (isKey && stringEquals (key, adaptString (variant .asString ())))
37
+ if (isKey &&
38
+ stringEquals (key, adaptString (it. value (resources_) .asString ())))
39
39
return it;
40
40
isKey = !isKey;
41
41
}
You can’t perform that action at this time.
0 commit comments