VariantImpl: extract asStringNode()

This commit is contained in:
Benoit Blanchon
2025-07-16 12:26:28 +02:00
parent ead13a992f
commit 1b1786da7f

View File

@@ -61,13 +61,15 @@ class VariantImpl {
case VariantType::TinyString:
return visit.visit(JsonString(data_->content.asTinyString));
case VariantType::LongString:
return visit.visit(JsonString(data_->content.asStringNode->data,
data_->content.asStringNode->length));
case VariantType::LongString: {
auto s = asStringNode();
return visit.visit(JsonString(s->data, s->length));
}
case VariantType::RawString:
return visit.visit(RawString(data_->content.asStringNode->data,
data_->content.asStringNode->length));
case VariantType::RawString: {
auto s = asStringNode();
return visit.visit(RawString(s->data, s->length));
}
case VariantType::Int32:
return visit.visit(static_cast<JsonInteger>(data_->content.asInt32));
@@ -154,7 +156,7 @@ class VariantImpl {
str = data_->content.asTinyString;
break;
case VariantType::LongString:
str = data_->content.asStringNode->data;
str = asStringNode()->data;
break;
case VariantType::Float:
return static_cast<T>(data_->content.asFloat);
@@ -197,7 +199,7 @@ class VariantImpl {
str = data_->content.asTinyString;
break;
case VariantType::LongString:
str = data_->content.asStringNode->data;
str = asStringNode()->data;
break;
case VariantType::Float:
return convertNumber<T>(data_->content.asFloat);
@@ -215,9 +217,10 @@ class VariantImpl {
JsonString asRawString() const {
switch (type()) {
case VariantType::RawString:
return JsonString(data_->content.asStringNode->data,
data_->content.asStringNode->length);
case VariantType::RawString: {
auto s = asStringNode();
return JsonString(s->data, s->length);
}
default:
return JsonString();
}
@@ -227,14 +230,20 @@ class VariantImpl {
switch (type()) {
case VariantType::TinyString:
return JsonString(data_->content.asTinyString);
case VariantType::LongString:
return JsonString(data_->content.asStringNode->data,
data_->content.asStringNode->length);
case VariantType::LongString: {
auto s = asStringNode();
return JsonString(s->data, s->length);
}
default:
return JsonString();
}
}
StringNode* asStringNode() const {
ARDUINOJSON_ASSERT(type() & VariantTypeBits::OwnedStringBit);
return data_->content.asStringNode;
}
#if ARDUINOJSON_USE_8_BYTE_POOL
const EightByteValue* getEightByte() const {
return type() & VariantTypeBits::EightByteBit