From cb1dcfa5e41c5c6711115513e8635d7115139ea1 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 27 Feb 2025 11:06:33 +0100 Subject: [PATCH] Reduce code size --- CHANGELOG.md | 1 + src/ArduinoJson/Variant/VariantData.hpp | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ea65414..8d5efe1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ HEAD ---- * Fix conversion from static string to number +* Slightly reduce code size v7.3.0 (2024-12-29) ------ diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index fb59a545..8ebd8255 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -185,6 +185,7 @@ class VariantData { #else (void)resources; // silence warning #endif + const char* str = nullptr; switch (type_) { case VariantType::Boolean: return static_cast(content_.asBoolean); @@ -199,9 +200,11 @@ class VariantData { return static_cast(extension->asInt64); #endif case VariantType::LinkedString: - return parseNumber(content_.asLinkedString); + str = content_.asLinkedString; + break; case VariantType::OwnedString: - return parseNumber(content_.asOwnedString->data); + str = content_.asOwnedString->data; + break; case VariantType::Float: return static_cast(content_.asFloat); #if ARDUINOJSON_USE_DOUBLE @@ -209,8 +212,11 @@ class VariantData { return static_cast(extension->asDouble); #endif default: - return 0; + return 0.0; } + + ARDUINOJSON_ASSERT(str != nullptr); + return parseNumber(str); } template @@ -221,6 +227,7 @@ class VariantData { #else (void)resources; // silence warning #endif + const char* str = nullptr; switch (type_) { case VariantType::Boolean: return content_.asBoolean; @@ -235,9 +242,11 @@ class VariantData { return convertNumber(extension->asInt64); #endif case VariantType::LinkedString: - return parseNumber(content_.asLinkedString); + str = content_.asLinkedString; + break; case VariantType::OwnedString: - return parseNumber(content_.asOwnedString->data); + str = content_.asOwnedString->data; + break; case VariantType::Float: return convertNumber(content_.asFloat); #if ARDUINOJSON_USE_DOUBLE @@ -247,6 +256,9 @@ class VariantData { default: return 0; } + + ARDUINOJSON_ASSERT(str != nullptr); + return parseNumber(str); } ObjectData* asObject() {