Skip to content

Commit cb1dcfa

Browse files
committed
Reduce code size
1 parent 67dd312 commit cb1dcfa

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ HEAD
55
----
66

77
* Fix conversion from static string to number
8+
* Slightly reduce code size
89

910
v7.3.0 (2024-12-29)
1011
------

src/ArduinoJson/Variant/VariantData.hpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ class VariantData {
185185
#else
186186
(void)resources; // silence warning
187187
#endif
188+
const char* str = nullptr;
188189
switch (type_) {
189190
case VariantType::Boolean:
190191
return static_cast<T>(content_.asBoolean);
@@ -199,18 +200,23 @@ class VariantData {
199200
return static_cast<T>(extension->asInt64);
200201
#endif
201202
case VariantType::LinkedString:
202-
return parseNumber<T>(content_.asLinkedString);
203+
str = content_.asLinkedString;
204+
break;
203205
case VariantType::OwnedString:
204-
return parseNumber<T>(content_.asOwnedString->data);
206+
str = content_.asOwnedString->data;
207+
break;
205208
case VariantType::Float:
206209
return static_cast<T>(content_.asFloat);
207210
#if ARDUINOJSON_USE_DOUBLE
208211
case VariantType::Double:
209212
return static_cast<T>(extension->asDouble);
210213
#endif
211214
default:
212-
return 0;
215+
return 0.0;
213216
}
217+
218+
ARDUINOJSON_ASSERT(str != nullptr);
219+
return parseNumber<T>(str);
214220
}
215221

216222
template <typename T>
@@ -221,6 +227,7 @@ class VariantData {
221227
#else
222228
(void)resources; // silence warning
223229
#endif
230+
const char* str = nullptr;
224231
switch (type_) {
225232
case VariantType::Boolean:
226233
return content_.asBoolean;
@@ -235,9 +242,11 @@ class VariantData {
235242
return convertNumber<T>(extension->asInt64);
236243
#endif
237244
case VariantType::LinkedString:
238-
return parseNumber<T>(content_.asLinkedString);
245+
str = content_.asLinkedString;
246+
break;
239247
case VariantType::OwnedString:
240-
return parseNumber<T>(content_.asOwnedString->data);
248+
str = content_.asOwnedString->data;
249+
break;
241250
case VariantType::Float:
242251
return convertNumber<T>(content_.asFloat);
243252
#if ARDUINOJSON_USE_DOUBLE
@@ -247,6 +256,9 @@ class VariantData {
247256
default:
248257
return 0;
249258
}
259+
260+
ARDUINOJSON_ASSERT(str != nullptr);
261+
return parseNumber<T>(str);
250262
}
251263

252264
ObjectData* asObject() {

0 commit comments

Comments
 (0)