Skip to content

Commit f124af3

Browse files
committed
Merge ObjectImpl into VariantImpl
1 parent 76eec98 commit f124af3

File tree

15 files changed

+113
-158
lines changed

15 files changed

+113
-158
lines changed

src/ArduinoJson/Array/ArrayImpl.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ inline VariantData* VariantImpl::getElement(size_t index) const {
5757
}
5858

5959
inline void VariantImpl::removeElement(size_t index) {
60-
remove(at(index));
60+
removeElement(at(index));
6161
}
6262

6363
template <typename T>

src/ArduinoJson/Array/JsonArray.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
101101
// Removes the element at the specified iterator.
102102
// https://arduinojson.org/v7/api/jsonarray/remove/
103103
void remove(iterator it) const {
104-
impl_.remove(it.iterator_);
104+
impl_.removeElement(it.iterator_);
105105
}
106106

107107
// Removes the element at the specified index.

src/ArduinoJson/Collection/CollectionImpl.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ inline void CollectionImpl::removeOne(iterator it) {
121121
resources_->freeVariant({it.slot_, it.currentId_});
122122
}
123123

124-
inline void CollectionImpl::removePair(ObjectImpl::iterator it) {
124+
inline void CollectionImpl::removePair(iterator it) {
125125
if (it.done())
126126
return;
127127

src/ArduinoJson/Json/JsonDeserializer.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,9 @@ class JsonDeserializer {
278278

279279
if (memberFilter.allow()) {
280280
auto member =
281-
ObjectImpl::getMember(adaptString(key), object, resources_);
281+
VariantImpl::getMember(adaptString(key), object, resources_);
282282
if (!member) {
283-
auto keyVariant = ObjectImpl::addPair(&member, object, resources_);
283+
auto keyVariant = VariantImpl::addPair(&member, object, resources_);
284284
if (!keyVariant)
285285
return DeserializationError::NoMemory;
286286

src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ class MsgPackDeserializer {
399399
VariantData* member = 0;
400400

401401
if (memberFilter.allow()) {
402-
auto keyVariant = ObjectImpl::addPair(&member, variant, resources_);
402+
auto keyVariant = VariantImpl::addPair(&member, variant, resources_);
403403
if (!keyVariant)
404404
return DeserializationError::NoMemory;
405405

src/ArduinoJson/Object/JsonObject.hpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
2323
JsonObject() {}
2424

2525
// INTERNAL USE ONLY
26-
JsonObject(const detail::ObjectImpl& impl) : impl_(impl) {}
26+
JsonObject(const detail::VariantImpl& impl) : impl_(impl) {}
2727

2828
// INTERNAL USE ONLY
2929
JsonObject(detail::VariantData* data, detail::ResourceManager* resource)
@@ -44,13 +44,13 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
4444
// Returns true if the reference is unbound.
4545
// https://arduinojson.org/v7/api/jsonobject/isnull/
4646
bool isNull() const {
47-
return impl_.isNull();
47+
return !impl_.isObject();
4848
}
4949

5050
// Returns true if the reference is bound.
5151
// https://arduinojson.org/v7/api/jsonobject/isnull/
5252
operator bool() const {
53-
return !isNull();
53+
return impl_.isObject();
5454
}
5555

5656
// Returns the depth (nesting level) of the object.
@@ -80,7 +80,7 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
8080
// Removes all the members of the object.
8181
// https://arduinojson.org/v7/api/jsonobject/clear/
8282
void clear() const {
83-
impl_.clear();
83+
impl_.empty();
8484
}
8585

8686
// Copies an object.
@@ -130,7 +130,7 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
130130
// Removes the member at the specified iterator.
131131
// https://arduinojson.org/v7/api/jsonobject/remove/
132132
FORCE_INLINE void remove(iterator it) const {
133-
impl_.remove(it.iterator_);
133+
impl_.removeMember(it.iterator_);
134134
}
135135

136136
// Removes the member with the specified key.
@@ -233,7 +233,7 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
233233
return impl_.getData();
234234
}
235235

236-
mutable detail::ObjectImpl impl_;
236+
mutable detail::VariantImpl impl_;
237237
};
238238

239239
ARDUINOJSON_END_PUBLIC_NAMESPACE

src/ArduinoJson/Object/JsonObjectConst.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
2626
: impl_(data, resources) {}
2727

2828
// INTERNAL USE ONLY
29-
JsonObjectConst(const detail::ObjectImpl& impl) : impl_(impl) {}
29+
JsonObjectConst(const detail::VariantImpl& impl) : impl_(impl) {}
3030

3131
operator JsonVariantConst() const {
3232
return JsonVariantConst(impl_.getData(), impl_.getResourceManager());
@@ -136,7 +136,7 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
136136
return impl_.getData();
137137
}
138138

139-
detail::ObjectImpl impl_;
139+
detail::VariantImpl impl_;
140140
};
141141

142142
inline bool operator==(JsonObjectConst lhs, JsonObjectConst rhs) {

src/ArduinoJson/Object/JsonObjectIterator.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class JsonObjectIterator {
1414
public:
1515
JsonObjectIterator() {}
1616

17-
explicit JsonObjectIterator(detail::ObjectImpl::iterator iterator,
17+
explicit JsonObjectIterator(detail::VariantImpl::iterator iterator,
1818
detail::ResourceManager* resources)
1919
: iterator_(iterator), resources_(resources) {}
2020

@@ -40,7 +40,7 @@ class JsonObjectIterator {
4040
}
4141

4242
private:
43-
detail::ObjectImpl::iterator iterator_;
43+
detail::VariantImpl::iterator iterator_;
4444
detail::ResourceManager* resources_;
4545
};
4646

@@ -50,7 +50,7 @@ class JsonObjectConstIterator {
5050
public:
5151
JsonObjectConstIterator() {}
5252

53-
explicit JsonObjectConstIterator(detail::ObjectImpl::iterator iterator,
53+
explicit JsonObjectConstIterator(detail::VariantImpl::iterator iterator,
5454
detail::ResourceManager* resources)
5555
: iterator_(iterator), resources_(resources) {}
5656

@@ -76,7 +76,7 @@ class JsonObjectConstIterator {
7676
}
7777

7878
private:
79-
detail::ObjectImpl::iterator iterator_;
79+
detail::VariantImpl::iterator iterator_;
8080
detail::ResourceManager* resources_;
8181
};
8282

src/ArduinoJson/Object/JsonPair.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
1515
class JsonPair {
1616
public:
1717
// INTERNAL USE ONLY
18-
JsonPair(detail::ObjectImpl::iterator iterator,
18+
JsonPair(detail::VariantImpl::iterator iterator,
1919
detail::ResourceManager* resources) {
2020
if (!iterator.done()) {
2121
key_ = iterator->asString();
@@ -43,7 +43,7 @@ class JsonPair {
4343
// https://arduinojson.org/v7/api/jsonobjectconst/begin_end/
4444
class JsonPairConst {
4545
public:
46-
JsonPairConst(detail::ObjectImpl::iterator iterator,
46+
JsonPairConst(detail::VariantImpl::iterator iterator,
4747
detail::ResourceManager* resources) {
4848
if (!iterator.done()) {
4949
key_ = iterator->asString();

src/ArduinoJson/Object/MemberProxy.hpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@ class MemberProxy
6060
}
6161

6262
VariantData* getOrCreateData() const {
63-
return VariantAttorney::getOrCreateVariantImpl(upstream_).getOrAddMember(
64-
key_);
63+
auto data = VariantAttorney::getOrCreateData(upstream_);
64+
auto resources = VariantAttorney::getResourceManager(upstream_);
65+
if (data && data->type == VariantType::Null)
66+
data->toObject();
67+
return VariantImpl(data, resources).getOrAddMember(key_);
6568
}
6669

6770
private:

0 commit comments

Comments
 (0)