Skip to content

Commit 372f2f2

Browse files
committed
VariantImpl: extract asOwnedString()
1 parent fc8da90 commit 372f2f2

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

src/ArduinoJson/Variant/VariantImpl.hpp

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,15 @@ class VariantImpl {
6464
case VariantType::LinkedString:
6565
return visit.visit(JsonString(asLinkedString(), true));
6666

67-
case VariantType::OwnedString:
68-
return visit.visit(JsonString(data_->content.asOwnedString->data,
69-
data_->content.asOwnedString->length));
67+
case VariantType::OwnedString: {
68+
auto s = asOwnedString();
69+
return visit.visit(JsonString(s->data, s->length));
70+
}
7071

71-
case VariantType::RawString:
72-
return visit.visit(RawString(data_->content.asOwnedString->data,
73-
data_->content.asOwnedString->length));
72+
case VariantType::RawString: {
73+
auto s = asOwnedString();
74+
return visit.visit(RawString(s->data, s->length));
75+
}
7476

7577
case VariantType::Int32:
7678
return visit.visit(static_cast<JsonInteger>(data_->content.asInt32));
@@ -160,7 +162,7 @@ class VariantImpl {
160162
str = asLinkedString();
161163
break;
162164
case VariantType::OwnedString:
163-
str = data_->content.asOwnedString->data;
165+
str = asOwnedString()->data;
164166
break;
165167
case VariantType::Float:
166168
return static_cast<T>(data_->content.asFloat);
@@ -206,7 +208,7 @@ class VariantImpl {
206208
str = asLinkedString();
207209
break;
208210
case VariantType::OwnedString:
209-
str = data_->content.asOwnedString->data;
211+
str = asOwnedString()->data;
210212
break;
211213
case VariantType::Float:
212214
return convertNumber<T>(data_->content.asFloat);
@@ -224,9 +226,10 @@ class VariantImpl {
224226

225227
JsonString asRawString() const {
226228
switch (type()) {
227-
case VariantType::RawString:
228-
return JsonString(data_->content.asOwnedString->data,
229-
data_->content.asOwnedString->length);
229+
case VariantType::RawString: {
230+
auto s = asOwnedString();
231+
return JsonString(s->data, s->length);
232+
}
230233
default:
231234
return JsonString();
232235
}
@@ -243,14 +246,20 @@ class VariantImpl {
243246
return JsonString(data_->content.asTinyString);
244247
case VariantType::LinkedString:
245248
return JsonString(asLinkedString(), true);
246-
case VariantType::OwnedString:
247-
return JsonString(data_->content.asOwnedString->data,
248-
data_->content.asOwnedString->length);
249+
case VariantType::OwnedString: {
250+
auto s = asOwnedString();
251+
return JsonString(s->data, s->length);
252+
}
249253
default:
250254
return JsonString();
251255
}
252256
}
253257

258+
StringNode* asOwnedString() const {
259+
ARDUINOJSON_ASSERT(type() & VariantTypeBits::OwnedStringBit);
260+
return data_->content.asOwnedString;
261+
}
262+
254263
#if ARDUINOJSON_USE_8_BYTE_POOL
255264
const EightByteValue* getEightByte() const {
256265
return type() & VariantTypeBits::EightByteBit

0 commit comments

Comments
 (0)