mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-19 21:42:30 +02:00
Extract VariantRefBaseImpl.hpp
This commit is contained in:
@ -34,16 +34,15 @@
|
|||||||
|
|
||||||
#include "ArduinoJson/Array/ArrayImpl.hpp"
|
#include "ArduinoJson/Array/ArrayImpl.hpp"
|
||||||
#include "ArduinoJson/Array/ElementProxy.hpp"
|
#include "ArduinoJson/Array/ElementProxy.hpp"
|
||||||
#include "ArduinoJson/Array/JsonArrayImpl.hpp"
|
|
||||||
#include "ArduinoJson/Array/Utilities.hpp"
|
#include "ArduinoJson/Array/Utilities.hpp"
|
||||||
#include "ArduinoJson/Collection/CollectionImpl.hpp"
|
#include "ArduinoJson/Collection/CollectionImpl.hpp"
|
||||||
#include "ArduinoJson/Memory/VariantPoolImpl.hpp"
|
#include "ArduinoJson/Memory/VariantPoolImpl.hpp"
|
||||||
#include "ArduinoJson/Object/JsonObjectImpl.hpp"
|
|
||||||
#include "ArduinoJson/Object/MemberProxy.hpp"
|
#include "ArduinoJson/Object/MemberProxy.hpp"
|
||||||
#include "ArduinoJson/Object/ObjectImpl.hpp"
|
#include "ArduinoJson/Object/ObjectImpl.hpp"
|
||||||
#include "ArduinoJson/Variant/ConverterImpl.hpp"
|
#include "ArduinoJson/Variant/ConverterImpl.hpp"
|
||||||
#include "ArduinoJson/Variant/JsonVariantCopier.hpp"
|
#include "ArduinoJson/Variant/JsonVariantCopier.hpp"
|
||||||
#include "ArduinoJson/Variant/VariantCompare.hpp"
|
#include "ArduinoJson/Variant/VariantCompare.hpp"
|
||||||
|
#include "ArduinoJson/Variant/VariantRefBaseImpl.hpp"
|
||||||
|
|
||||||
#include "ArduinoJson/Json/JsonDeserializer.hpp"
|
#include "ArduinoJson/Json/JsonDeserializer.hpp"
|
||||||
#include "ArduinoJson/Json/JsonSerializer.hpp"
|
#include "ArduinoJson/Json/JsonSerializer.hpp"
|
||||||
|
@ -176,16 +176,3 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
||||||
|
|
||||||
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
template <typename T>
|
|
||||||
inline typename enable_if<is_same<T, JsonArray>::value, JsonArray>::type
|
|
||||||
VariantRefBase<TDerived>::to() const {
|
|
||||||
return JsonArray(
|
|
||||||
VariantData::toArray(getOrCreateData(), getResourceManager()),
|
|
||||||
getResourceManager());
|
|
||||||
}
|
|
||||||
|
|
||||||
ARDUINOJSON_END_PRIVATE_NAMESPACE
|
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
// ArduinoJson - https://arduinojson.org
|
|
||||||
// Copyright © 2014-2023, Benoit BLANCHON
|
|
||||||
// MIT License
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <ArduinoJson/Array/JsonArray.hpp>
|
|
||||||
#include <ArduinoJson/Object/JsonObject.hpp>
|
|
||||||
|
|
||||||
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
inline ElementProxy<TDerived> VariantRefBase<TDerived>::operator[](
|
|
||||||
size_t index) const {
|
|
||||||
return ElementProxy<TDerived>(derived(), index);
|
|
||||||
}
|
|
||||||
|
|
||||||
ARDUINOJSON_END_PRIVATE_NAMESPACE
|
|
@ -184,16 +184,3 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
||||||
|
|
||||||
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
template <typename T>
|
|
||||||
typename enable_if<is_same<T, JsonObject>::value, JsonObject>::type
|
|
||||||
VariantRefBase<TDerived>::to() const {
|
|
||||||
return JsonObject(
|
|
||||||
VariantData::toObject(getOrCreateData(), getResourceManager()),
|
|
||||||
getResourceManager());
|
|
||||||
}
|
|
||||||
|
|
||||||
ARDUINOJSON_END_PRIVATE_NAMESPACE
|
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
// ArduinoJson - https://arduinojson.org
|
|
||||||
// Copyright © 2014-2023, Benoit BLANCHON
|
|
||||||
// MIT License
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <ArduinoJson/Array/JsonArray.hpp>
|
|
||||||
#include <ArduinoJson/Object/JsonObject.hpp>
|
|
||||||
|
|
||||||
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
template <typename TString>
|
|
||||||
inline typename enable_if<IsString<TString>::value, bool>::type
|
|
||||||
VariantRefBase<TDerived>::containsKey(const TString& key) const {
|
|
||||||
return VariantData::getMember(getData(), adaptString(key),
|
|
||||||
getResourceManager()) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
template <typename TChar>
|
|
||||||
inline typename enable_if<IsString<TChar*>::value, bool>::type
|
|
||||||
VariantRefBase<TDerived>::containsKey(TChar* key) const {
|
|
||||||
return VariantData::getMember(getData(), adaptString(key),
|
|
||||||
getResourceManager()) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
template <typename TString>
|
|
||||||
inline typename enable_if<IsString<TString*>::value,
|
|
||||||
MemberProxy<TDerived, TString*>>::type
|
|
||||||
VariantRefBase<TDerived>::operator[](TString* key) const {
|
|
||||||
return MemberProxy<TDerived, TString*>(derived(), key);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
template <typename TString>
|
|
||||||
inline typename enable_if<IsString<TString>::value,
|
|
||||||
MemberProxy<TDerived, TString>>::type
|
|
||||||
VariantRefBase<TDerived>::operator[](const TString& key) const {
|
|
||||||
return MemberProxy<TDerived, TString>(derived(), key);
|
|
||||||
}
|
|
||||||
|
|
||||||
ARDUINOJSON_END_PRIVATE_NAMESPACE
|
|
@ -83,42 +83,3 @@ struct Converter<JsonVariantConst> : private detail::VariantAttorney {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
ARDUINOJSON_END_PUBLIC_NAMESPACE
|
||||||
|
|
||||||
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
template <typename T>
|
|
||||||
inline typename enable_if<is_same<T, JsonVariant>::value, T>::type
|
|
||||||
VariantRefBase<TDerived>::add() const {
|
|
||||||
return JsonVariant(
|
|
||||||
detail::VariantData::addElement(getOrCreateData(), getResourceManager()),
|
|
||||||
getResourceManager());
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
inline JsonVariant VariantRefBase<TDerived>::getVariant() const {
|
|
||||||
return JsonVariant(getData(), getResourceManager());
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
inline JsonVariant VariantRefBase<TDerived>::getOrCreateVariant() const {
|
|
||||||
return JsonVariant(getOrCreateData(), getResourceManager());
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
template <typename T>
|
|
||||||
typename enable_if<is_same<T, JsonVariant>::value, JsonVariant>::type
|
|
||||||
VariantRefBase<TDerived>::to() const {
|
|
||||||
auto data = getOrCreateData();
|
|
||||||
auto resources = getResourceManager();
|
|
||||||
detail::VariantData::setNull(data, resources);
|
|
||||||
return JsonVariant(data, resources);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TDerived>
|
|
||||||
inline void convertToJson(const VariantRefBase<TDerived>& src,
|
|
||||||
JsonVariant dst) {
|
|
||||||
dst.set(src.template as<JsonVariantConst>());
|
|
||||||
}
|
|
||||||
|
|
||||||
ARDUINOJSON_END_PRIVATE_NAMESPACE
|
|
||||||
|
104
src/ArduinoJson/Variant/VariantRefBaseImpl.hpp
Normal file
104
src/ArduinoJson/Variant/VariantRefBaseImpl.hpp
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
// ArduinoJson - https://arduinojson.org
|
||||||
|
// Copyright © 2014-2023, Benoit BLANCHON
|
||||||
|
// MIT License
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <ArduinoJson/Array/JsonArray.hpp>
|
||||||
|
#include <ArduinoJson/Object/JsonObject.hpp>
|
||||||
|
#include <ArduinoJson/Variant/VariantRefBase.hpp>
|
||||||
|
|
||||||
|
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
inline void convertToJson(const VariantRefBase<TDerived>& src,
|
||||||
|
JsonVariant dst) {
|
||||||
|
dst.set(src.template as<JsonVariantConst>());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
template <typename T>
|
||||||
|
inline typename enable_if<is_same<T, JsonVariant>::value, T>::type
|
||||||
|
VariantRefBase<TDerived>::add() const {
|
||||||
|
return JsonVariant(
|
||||||
|
detail::VariantData::addElement(getOrCreateData(), getResourceManager()),
|
||||||
|
getResourceManager());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
template <typename TString>
|
||||||
|
inline typename enable_if<IsString<TString>::value, bool>::type
|
||||||
|
VariantRefBase<TDerived>::containsKey(const TString& key) const {
|
||||||
|
return VariantData::getMember(getData(), adaptString(key),
|
||||||
|
getResourceManager()) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
template <typename TChar>
|
||||||
|
inline typename enable_if<IsString<TChar*>::value, bool>::type
|
||||||
|
VariantRefBase<TDerived>::containsKey(TChar* key) const {
|
||||||
|
return VariantData::getMember(getData(), adaptString(key),
|
||||||
|
getResourceManager()) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
inline JsonVariant VariantRefBase<TDerived>::getVariant() const {
|
||||||
|
return JsonVariant(getData(), getResourceManager());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
inline JsonVariant VariantRefBase<TDerived>::getOrCreateVariant() const {
|
||||||
|
return JsonVariant(getOrCreateData(), getResourceManager());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
inline ElementProxy<TDerived> VariantRefBase<TDerived>::operator[](
|
||||||
|
size_t index) const {
|
||||||
|
return ElementProxy<TDerived>(derived(), index);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
template <typename TString>
|
||||||
|
inline typename enable_if<IsString<TString*>::value,
|
||||||
|
MemberProxy<TDerived, TString*>>::type
|
||||||
|
VariantRefBase<TDerived>::operator[](TString* key) const {
|
||||||
|
return MemberProxy<TDerived, TString*>(derived(), key);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
template <typename TString>
|
||||||
|
inline typename enable_if<IsString<TString>::value,
|
||||||
|
MemberProxy<TDerived, TString>>::type
|
||||||
|
VariantRefBase<TDerived>::operator[](const TString& key) const {
|
||||||
|
return MemberProxy<TDerived, TString>(derived(), key);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
template <typename T>
|
||||||
|
inline typename enable_if<is_same<T, JsonArray>::value, JsonArray>::type
|
||||||
|
VariantRefBase<TDerived>::to() const {
|
||||||
|
return JsonArray(
|
||||||
|
VariantData::toArray(getOrCreateData(), getResourceManager()),
|
||||||
|
getResourceManager());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
template <typename T>
|
||||||
|
typename enable_if<is_same<T, JsonObject>::value, JsonObject>::type
|
||||||
|
VariantRefBase<TDerived>::to() const {
|
||||||
|
return JsonObject(
|
||||||
|
VariantData::toObject(getOrCreateData(), getResourceManager()),
|
||||||
|
getResourceManager());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename TDerived>
|
||||||
|
template <typename T>
|
||||||
|
typename enable_if<is_same<T, JsonVariant>::value, JsonVariant>::type
|
||||||
|
VariantRefBase<TDerived>::to() const {
|
||||||
|
auto data = getOrCreateData();
|
||||||
|
auto resources = getResourceManager();
|
||||||
|
detail::VariantData::setNull(data, resources);
|
||||||
|
return JsonVariant(data, resources);
|
||||||
|
}
|
||||||
|
|
||||||
|
ARDUINOJSON_END_PRIVATE_NAMESPACE
|
Reference in New Issue
Block a user