Skip to content

Commit a9461f8

Browse files
committed
Extract setFloat()
Before: 9902, 8796, 9724, 12682, 9978 After: 9894, 8796, 9708, 12674, 9970 Target: 9800, 8458, 9634, 12290, 9702
1 parent 71063c4 commit a9461f8

File tree

4 files changed

+21
-13
lines changed

4 files changed

+21
-13
lines changed

src/ArduinoJson/Json/JsonDeserializer.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,14 +534,14 @@ class JsonDeserializer {
534534
return DeserializationError::NoMemory;
535535

536536
case NumberType::Float:
537-
if (VariantImpl(result, resources_).setFloat(number.asFloat()))
537+
if (VariantImpl::setFloat(number.asFloat(), result, resources_))
538538
return DeserializationError::Ok;
539539
else
540540
return DeserializationError::NoMemory;
541541

542542
#if ARDUINOJSON_USE_DOUBLE
543543
case NumberType::Double:
544-
if (VariantImpl(result, resources_).setFloat(number.asDouble()))
544+
if (VariantImpl::setFloat(number.asDouble(), result, resources_))
545545
return DeserializationError::Ok;
546546
else
547547
return DeserializationError::NoMemory;

src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ class MsgPackDeserializer {
257257
return err;
258258

259259
fixEndianness(value);
260-
VariantImpl(variant, resources_).setFloat(value);
260+
VariantImpl::setFloat(value, variant, resources_);
261261

262262
return DeserializationError::Ok;
263263
}
@@ -273,7 +273,7 @@ class MsgPackDeserializer {
273273
return err;
274274

275275
fixEndianness(value);
276-
if (VariantImpl(variant, resources_).setFloat(value))
276+
if (VariantImpl::setFloat(value, variant, resources_))
277277
return DeserializationError::Ok;
278278
else
279279
return DeserializationError::NoMemory;
@@ -293,7 +293,7 @@ class MsgPackDeserializer {
293293

294294
doubleToFloat(i, o);
295295
fixEndianness(value);
296-
VariantImpl(variant, resources_).setFloat(value);
296+
VariantImpl::setFloat(value, variant, resources_);
297297

298298
return DeserializationError::Ok;
299299
}

src/ArduinoJson/Variant/VariantData.hpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -424,17 +424,25 @@ class VariantImpl {
424424
}
425425

426426
template <typename T>
427-
enable_if_t<sizeof(T) == 4, bool> setFloat(T value) {
428-
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
427+
bool setFloat(T value) {
429428
if (!data_)
430429
return false;
430+
return setFloat(value, data_, resources_);
431+
}
432+
433+
template <typename T>
434+
static enable_if_t<sizeof(T) == 4, bool> setFloat(T value, VariantData* data_,
435+
ResourceManager*) {
436+
ARDUINOJSON_ASSERT(data_ != nullptr);
437+
ARDUINOJSON_ASSERT(data_->type == VariantType::Null);
431438
data_->type = VariantType::Float;
432439
data_->content.asFloat = value;
433440
return true;
434441
}
435442

436443
template <typename T>
437-
enable_if_t<sizeof(T) == 8, bool> setFloat(T value);
444+
static enable_if_t<sizeof(T) == 8, bool> setFloat(
445+
T value, VariantData* data_, ResourceManager* resources_);
438446

439447
template <typename T>
440448
bool setInteger(T value) {

src/ArduinoJson/Variant/VariantImpl.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,11 @@ inline const EightByteValue* VariantImpl::getEightByte() const {
7070
#endif
7171

7272
template <typename T>
73-
enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(T value) {
74-
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
75-
76-
if (!data_)
77-
return false;
73+
enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(
74+
T value, VariantData* data_, ResourceManager* resources_) {
75+
ARDUINOJSON_ASSERT(data_ != nullptr);
76+
ARDUINOJSON_ASSERT(data_->type == VariantType::Null);
77+
ARDUINOJSON_ASSERT(resources_ != nullptr);
7878

7979
float valueAsFloat = static_cast<float>(value);
8080

0 commit comments

Comments
 (0)