mirror of
https://github.com/eledio-devices/thirdparty-ArduinoJson.git
synced 2025-11-01 00:38:27 +01:00
link() takes a JsonVariantConst
This commit is contained in:
@@ -12,7 +12,7 @@ TEST_CASE("JsonVariant::link()") {
|
|||||||
SECTION("JsonVariant::link(JsonDocument&)") {
|
SECTION("JsonVariant::link(JsonDocument&)") {
|
||||||
doc2["hello"] = "world";
|
doc2["hello"] = "world";
|
||||||
|
|
||||||
variant.link(doc2.as<JsonVariant>());
|
variant.link(doc2);
|
||||||
|
|
||||||
CHECK(variant.as<std::string>() == "{\"hello\":\"world\"}");
|
CHECK(variant.as<std::string>() == "{\"hello\":\"world\"}");
|
||||||
CHECK(variant.memoryUsage() == 0);
|
CHECK(variant.memoryUsage() == 0);
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ TEST_CASE("JsonVariant::memoryUsage()") {
|
|||||||
SECTION("ignore size of link document") {
|
SECTION("ignore size of link document") {
|
||||||
StaticJsonDocument<128> doc2;
|
StaticJsonDocument<128> doc2;
|
||||||
doc2["hello"] = "world";
|
doc2["hello"] = "world";
|
||||||
var.link(doc2.as<JsonVariant>());
|
var.link(doc2);
|
||||||
CHECK(var.memoryUsage() == 0);
|
CHECK(var.memoryUsage() == 0);
|
||||||
CHECK(var.memoryUsage() == doc.memoryUsage());
|
CHECK(var.memoryUsage() == doc.memoryUsage());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ union VariantContent {
|
|||||||
UInt asUnsignedInteger;
|
UInt asUnsignedInteger;
|
||||||
Integer asSignedInteger;
|
Integer asSignedInteger;
|
||||||
CollectionData asCollection;
|
CollectionData asCollection;
|
||||||
class VariantData *asPointer;
|
const class VariantData *asPointer;
|
||||||
struct {
|
struct {
|
||||||
const char *data;
|
const char *data;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ class VariantData {
|
|||||||
setType(VALUE_IS_NULL);
|
setType(VALUE_IS_NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setPointer(VariantData *value) {
|
void setPointer(const VariantData *value) {
|
||||||
setType(VALUE_IS_POINTER);
|
setType(VALUE_IS_POINTER);
|
||||||
_content.asPointer = value;
|
_content.asPointer = value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,4 +181,9 @@ bool CopyStringStoragePolicy::store(TAdaptedString str, MemoryPool *pool,
|
|||||||
return copy != 0;
|
return copy != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void VariantRef::link(VariantConstRef var) {
|
||||||
|
if (_data)
|
||||||
|
_data->setPointer(var._data);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ARDUINOJSON_NAMESPACE
|
} // namespace ARDUINOJSON_NAMESPACE
|
||||||
|
|||||||
@@ -198,10 +198,7 @@ class VariantRef : public VariantRefBase<VariantData>,
|
|||||||
template <typename TString>
|
template <typename TString>
|
||||||
FORCE_INLINE VariantRef getOrAddMember(const TString &) const;
|
FORCE_INLINE VariantRef getOrAddMember(const TString &) const;
|
||||||
|
|
||||||
FORCE_INLINE void link(VariantRef var) {
|
void link(class VariantConstRef var);
|
||||||
if (_data)
|
|
||||||
_data->setPointer(var._data);
|
|
||||||
}
|
|
||||||
|
|
||||||
FORCE_INLINE void remove(size_t index) const {
|
FORCE_INLINE void remove(size_t index) const {
|
||||||
if (_data)
|
if (_data)
|
||||||
|
|||||||
Reference in New Issue
Block a user