|
|
@@ -77,7 +77,7 @@ class VariantData {
|
|
|
return visit.visit(JsonString(content_.asTinyString));
|
|
|
|
|
|
case VariantType::LinkedString:
|
|
|
- return visit.visit(JsonString(content_.asLinkedString, true));
|
|
|
+ return visit.visit(JsonString(asLinkedString(resources), true));
|
|
|
|
|
|
case VariantType::OwnedString:
|
|
|
return visit.visit(JsonString(content_.asOwnedString->data,
|
|
|
@@ -216,7 +216,7 @@ class VariantData {
|
|
|
str = content_.asTinyString;
|
|
|
break;
|
|
|
case VariantType::LinkedString:
|
|
|
- str = content_.asLinkedString;
|
|
|
+ str = asLinkedString(resources);
|
|
|
break;
|
|
|
case VariantType::OwnedString:
|
|
|
str = content_.asOwnedString->data;
|
|
|
@@ -261,7 +261,7 @@ class VariantData {
|
|
|
str = content_.asTinyString;
|
|
|
break;
|
|
|
case VariantType::LinkedString:
|
|
|
- str = content_.asLinkedString;
|
|
|
+ str = asLinkedString(resources);
|
|
|
break;
|
|
|
case VariantType::OwnedString:
|
|
|
str = content_.asOwnedString->data;
|
|
|
@@ -298,12 +298,14 @@ class VariantData {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- JsonString asString() const {
|
|
|
+ const char* asLinkedString(const ResourceManager* resources) const;
|
|
|
+
|
|
|
+ JsonString asString(const ResourceManager* resources) const {
|
|
|
switch (type_) {
|
|
|
case VariantType::TinyString:
|
|
|
return JsonString(content_.asTinyString);
|
|
|
case VariantType::LinkedString:
|
|
|
- return JsonString(content_.asLinkedString, true);
|
|
|
+ return JsonString(asLinkedString(resources), true);
|
|
|
case VariantType::OwnedString:
|
|
|
return JsonString(content_.asOwnedString->data,
|
|
|
content_.asOwnedString->length);
|
|
|
@@ -519,12 +521,7 @@ class VariantData {
|
|
|
var->setString(value, resources);
|
|
|
}
|
|
|
|
|
|
- void setLinkedString(const char* s) {
|
|
|
- ARDUINOJSON_ASSERT(type_ == VariantType::Null); // must call clear() first
|
|
|
- ARDUINOJSON_ASSERT(s);
|
|
|
- type_ = VariantType::LinkedString;
|
|
|
- content_.asLinkedString = s;
|
|
|
- }
|
|
|
+ bool setLinkedString(const char* s, ResourceManager* resources);
|
|
|
|
|
|
template <typename TAdaptedString>
|
|
|
void setTinyString(const TAdaptedString& s) {
|