VariantImpl: extract asOwnedString()

This commit is contained in:
Benoit Blanchon
2025-07-16 12:26:28 +02:00
parent fc8da90ba7
commit 372f2f2767

View File

@@ -64,13 +64,15 @@ class VariantImpl {
case VariantType::LinkedString: case VariantType::LinkedString:
return visit.visit(JsonString(asLinkedString(), true)); return visit.visit(JsonString(asLinkedString(), true));
case VariantType::OwnedString: case VariantType::OwnedString: {
return visit.visit(JsonString(data_->content.asOwnedString->data, auto s = asOwnedString();
data_->content.asOwnedString->length)); return visit.visit(JsonString(s->data, s->length));
}
case VariantType::RawString: case VariantType::RawString: {
return visit.visit(RawString(data_->content.asOwnedString->data, auto s = asOwnedString();
data_->content.asOwnedString->length)); return visit.visit(RawString(s->data, s->length));
}
case VariantType::Int32: case VariantType::Int32:
return visit.visit(static_cast<JsonInteger>(data_->content.asInt32)); return visit.visit(static_cast<JsonInteger>(data_->content.asInt32));
@@ -160,7 +162,7 @@ class VariantImpl {
str = asLinkedString(); str = asLinkedString();
break; break;
case VariantType::OwnedString: case VariantType::OwnedString:
str = data_->content.asOwnedString->data; str = asOwnedString()->data;
break; break;
case VariantType::Float: case VariantType::Float:
return static_cast<T>(data_->content.asFloat); return static_cast<T>(data_->content.asFloat);
@@ -206,7 +208,7 @@ class VariantImpl {
str = asLinkedString(); str = asLinkedString();
break; break;
case VariantType::OwnedString: case VariantType::OwnedString:
str = data_->content.asOwnedString->data; str = asOwnedString()->data;
break; break;
case VariantType::Float: case VariantType::Float:
return convertNumber<T>(data_->content.asFloat); return convertNumber<T>(data_->content.asFloat);
@@ -224,9 +226,10 @@ class VariantImpl {
JsonString asRawString() const { JsonString asRawString() const {
switch (type()) { switch (type()) {
case VariantType::RawString: case VariantType::RawString: {
return JsonString(data_->content.asOwnedString->data, auto s = asOwnedString();
data_->content.asOwnedString->length); return JsonString(s->data, s->length);
}
default: default:
return JsonString(); return JsonString();
} }
@@ -243,14 +246,20 @@ class VariantImpl {
return JsonString(data_->content.asTinyString); return JsonString(data_->content.asTinyString);
case VariantType::LinkedString: case VariantType::LinkedString:
return JsonString(asLinkedString(), true); return JsonString(asLinkedString(), true);
case VariantType::OwnedString: case VariantType::OwnedString: {
return JsonString(data_->content.asOwnedString->data, auto s = asOwnedString();
data_->content.asOwnedString->length); return JsonString(s->data, s->length);
}
default: default:
return JsonString(); return JsonString();
} }
} }
StringNode* asOwnedString() const {
ARDUINOJSON_ASSERT(type() & VariantTypeBits::OwnedStringBit);
return data_->content.asOwnedString;
}
#if ARDUINOJSON_USE_8_BYTE_POOL #if ARDUINOJSON_USE_8_BYTE_POOL
const EightByteValue* getEightByte() const { const EightByteValue* getEightByte() const {
return type() & VariantTypeBits::EightByteBit return type() & VariantTypeBits::EightByteBit