Reduce code size

This commit is contained in:
Benoit Blanchon
2025-02-27 11:06:33 +01:00
parent 67dd3120e6
commit cb1dcfa5e4
2 changed files with 18 additions and 5 deletions

View File

@ -5,6 +5,7 @@ HEAD
---- ----
* Fix conversion from static string to number * Fix conversion from static string to number
* Slightly reduce code size
v7.3.0 (2024-12-29) v7.3.0 (2024-12-29)
------ ------

View File

@ -185,6 +185,7 @@ class VariantData {
#else #else
(void)resources; // silence warning (void)resources; // silence warning
#endif #endif
const char* str = nullptr;
switch (type_) { switch (type_) {
case VariantType::Boolean: case VariantType::Boolean:
return static_cast<T>(content_.asBoolean); return static_cast<T>(content_.asBoolean);
@ -199,9 +200,11 @@ class VariantData {
return static_cast<T>(extension->asInt64); return static_cast<T>(extension->asInt64);
#endif #endif
case VariantType::LinkedString: case VariantType::LinkedString:
return parseNumber<T>(content_.asLinkedString); str = content_.asLinkedString;
break;
case VariantType::OwnedString: case VariantType::OwnedString:
return parseNumber<T>(content_.asOwnedString->data); str = content_.asOwnedString->data;
break;
case VariantType::Float: case VariantType::Float:
return static_cast<T>(content_.asFloat); return static_cast<T>(content_.asFloat);
#if ARDUINOJSON_USE_DOUBLE #if ARDUINOJSON_USE_DOUBLE
@ -209,8 +212,11 @@ class VariantData {
return static_cast<T>(extension->asDouble); return static_cast<T>(extension->asDouble);
#endif #endif
default: default:
return 0; return 0.0;
} }
ARDUINOJSON_ASSERT(str != nullptr);
return parseNumber<T>(str);
} }
template <typename T> template <typename T>
@ -221,6 +227,7 @@ class VariantData {
#else #else
(void)resources; // silence warning (void)resources; // silence warning
#endif #endif
const char* str = nullptr;
switch (type_) { switch (type_) {
case VariantType::Boolean: case VariantType::Boolean:
return content_.asBoolean; return content_.asBoolean;
@ -235,9 +242,11 @@ class VariantData {
return convertNumber<T>(extension->asInt64); return convertNumber<T>(extension->asInt64);
#endif #endif
case VariantType::LinkedString: case VariantType::LinkedString:
return parseNumber<T>(content_.asLinkedString); str = content_.asLinkedString;
break;
case VariantType::OwnedString: case VariantType::OwnedString:
return parseNumber<T>(content_.asOwnedString->data); str = content_.asOwnedString->data;
break;
case VariantType::Float: case VariantType::Float:
return convertNumber<T>(content_.asFloat); return convertNumber<T>(content_.asFloat);
#if ARDUINOJSON_USE_DOUBLE #if ARDUINOJSON_USE_DOUBLE
@ -247,6 +256,9 @@ class VariantData {
default: default:
return 0; return 0;
} }
ARDUINOJSON_ASSERT(str != nullptr);
return parseNumber<T>(str);
} }
ObjectData* asObject() { ObjectData* asObject() {