mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-09-26 15:00:57 +02:00
VariantImpl: extract asStringNode()
This commit is contained in:
@@ -61,13 +61,15 @@ class VariantImpl {
|
|||||||
case VariantType::TinyString:
|
case VariantType::TinyString:
|
||||||
return visit.visit(JsonString(data_->content.asTinyString));
|
return visit.visit(JsonString(data_->content.asTinyString));
|
||||||
|
|
||||||
case VariantType::LongString:
|
case VariantType::LongString: {
|
||||||
return visit.visit(JsonString(data_->content.asStringNode->data,
|
auto s = asStringNode();
|
||||||
data_->content.asStringNode->length));
|
return visit.visit(JsonString(s->data, s->length));
|
||||||
|
}
|
||||||
|
|
||||||
case VariantType::RawString:
|
case VariantType::RawString: {
|
||||||
return visit.visit(RawString(data_->content.asStringNode->data,
|
auto s = asStringNode();
|
||||||
data_->content.asStringNode->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));
|
||||||
@@ -154,7 +156,7 @@ class VariantImpl {
|
|||||||
str = data_->content.asTinyString;
|
str = data_->content.asTinyString;
|
||||||
break;
|
break;
|
||||||
case VariantType::LongString:
|
case VariantType::LongString:
|
||||||
str = data_->content.asStringNode->data;
|
str = asStringNode()->data;
|
||||||
break;
|
break;
|
||||||
case VariantType::Float:
|
case VariantType::Float:
|
||||||
return static_cast<T>(data_->content.asFloat);
|
return static_cast<T>(data_->content.asFloat);
|
||||||
@@ -197,7 +199,7 @@ class VariantImpl {
|
|||||||
str = data_->content.asTinyString;
|
str = data_->content.asTinyString;
|
||||||
break;
|
break;
|
||||||
case VariantType::LongString:
|
case VariantType::LongString:
|
||||||
str = data_->content.asStringNode->data;
|
str = asStringNode()->data;
|
||||||
break;
|
break;
|
||||||
case VariantType::Float:
|
case VariantType::Float:
|
||||||
return convertNumber<T>(data_->content.asFloat);
|
return convertNumber<T>(data_->content.asFloat);
|
||||||
@@ -215,9 +217,10 @@ class VariantImpl {
|
|||||||
|
|
||||||
JsonString asRawString() const {
|
JsonString asRawString() const {
|
||||||
switch (type()) {
|
switch (type()) {
|
||||||
case VariantType::RawString:
|
case VariantType::RawString: {
|
||||||
return JsonString(data_->content.asStringNode->data,
|
auto s = asStringNode();
|
||||||
data_->content.asStringNode->length);
|
return JsonString(s->data, s->length);
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return JsonString();
|
return JsonString();
|
||||||
}
|
}
|
||||||
@@ -227,14 +230,20 @@ class VariantImpl {
|
|||||||
switch (type()) {
|
switch (type()) {
|
||||||
case VariantType::TinyString:
|
case VariantType::TinyString:
|
||||||
return JsonString(data_->content.asTinyString);
|
return JsonString(data_->content.asTinyString);
|
||||||
case VariantType::LongString:
|
case VariantType::LongString: {
|
||||||
return JsonString(data_->content.asStringNode->data,
|
auto s = asStringNode();
|
||||||
data_->content.asStringNode->length);
|
return JsonString(s->data, s->length);
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return JsonString();
|
return JsonString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StringNode* asStringNode() const {
|
||||||
|
ARDUINOJSON_ASSERT(type() & VariantTypeBits::OwnedStringBit);
|
||||||
|
return data_->content.asStringNode;
|
||||||
|
}
|
||||||
|
|
||||||
#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
|
||||||
|
Reference in New Issue
Block a user