Replace VariantPtr, VariantConstPtr, JsonPairPtr, and JsonPairConstPtr with Ptr<T>

This commit is contained in:
Benoit Blanchon
2023-06-20 17:52:14 +02:00
parent 18ae8ab7b9
commit db2fb01795
2 changed files with 16 additions and 65 deletions

View File

@ -9,21 +9,21 @@
ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
class VariantPtr { template <typename T>
class Ptr {
public: public:
VariantPtr(detail::ResourceManager* resources, detail::VariantData* data) Ptr(T value) : value_(value) {}
: variant_(resources, data) {}
JsonVariant* operator->() { T* operator->() {
return &variant_; return &value_;
} }
JsonVariant& operator*() { T& operator*() {
return variant_; return value_;
} }
private: private:
JsonVariant variant_; T value_;
}; };
class JsonArrayIterator { class JsonArrayIterator {
@ -38,8 +38,8 @@ class JsonArrayIterator {
JsonVariant operator*() const { JsonVariant operator*() const {
return JsonVariant(resources_, slot_->data()); return JsonVariant(resources_, slot_->data());
} }
VariantPtr operator->() { Ptr<JsonVariant> operator->() {
return VariantPtr(resources_, slot_->data()); return operator*();
} }
bool operator==(const JsonArrayIterator& other) const { bool operator==(const JsonArrayIterator& other) const {
@ -65,22 +65,6 @@ class JsonArrayIterator {
detail::VariantSlot* slot_; detail::VariantSlot* slot_;
}; };
class VariantConstPtr {
public:
VariantConstPtr(const detail::VariantData* data) : variant_(data) {}
JsonVariantConst* operator->() {
return &variant_;
}
JsonVariantConst& operator*() {
return variant_;
}
private:
JsonVariantConst variant_;
};
class JsonArrayConstIterator { class JsonArrayConstIterator {
friend class JsonArray; friend class JsonArray;
@ -92,8 +76,8 @@ class JsonArrayConstIterator {
JsonVariantConst operator*() const { JsonVariantConst operator*() const {
return JsonVariantConst(slot_->data()); return JsonVariantConst(slot_->data());
} }
VariantConstPtr operator->() { Ptr<JsonVariantConst> operator->() {
return VariantConstPtr(slot_->data()); return operator*();
} }
bool operator==(const JsonArrayConstIterator& other) const { bool operator==(const JsonArrayConstIterator& other) const {

View File

@ -9,23 +9,6 @@
ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
class JsonPairPtr {
public:
JsonPairPtr(detail::ResourceManager* resources, detail::VariantSlot* slot)
: pair_(resources, slot) {}
const JsonPair* operator->() const {
return &pair_;
}
const JsonPair& operator*() const {
return pair_;
}
private:
JsonPair pair_;
};
class JsonObjectIterator { class JsonObjectIterator {
friend class JsonObject; friend class JsonObject;
@ -39,8 +22,8 @@ class JsonObjectIterator {
JsonPair operator*() const { JsonPair operator*() const {
return JsonPair(resources_, slot_); return JsonPair(resources_, slot_);
} }
JsonPairPtr operator->() { Ptr<JsonPair> operator->() {
return JsonPairPtr(resources_, slot_); return operator*();
} }
bool operator==(const JsonObjectIterator& other) const { bool operator==(const JsonObjectIterator& other) const {
@ -66,22 +49,6 @@ class JsonObjectIterator {
detail::VariantSlot* slot_; detail::VariantSlot* slot_;
}; };
class JsonPairConstPtr {
public:
JsonPairConstPtr(const detail::VariantSlot* slot) : pair_(slot) {}
const JsonPairConst* operator->() const {
return &pair_;
}
const JsonPairConst& operator*() const {
return pair_;
}
private:
JsonPairConst pair_;
};
class JsonObjectConstIterator { class JsonObjectConstIterator {
friend class JsonObject; friend class JsonObject;
@ -94,8 +61,8 @@ class JsonObjectConstIterator {
JsonPairConst operator*() const { JsonPairConst operator*() const {
return JsonPairConst(slot_); return JsonPairConst(slot_);
} }
JsonPairConstPtr operator->() { Ptr<JsonPairConst> operator->() {
return JsonPairConstPtr(slot_); return operator*();
} }
bool operator==(const JsonObjectConstIterator& other) const { bool operator==(const JsonObjectConstIterator& other) const {