mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-09-25 22:40:56 +02:00
Extract setFloat()
Before: 9902, 8796, 9724, 12682, 9978 After: 9894, 8796, 9708, 12674, 9970 Target: 9800, 8458, 9634, 12290, 9702
This commit is contained in:
@@ -534,14 +534,14 @@ class JsonDeserializer {
|
||||
return DeserializationError::NoMemory;
|
||||
|
||||
case NumberType::Float:
|
||||
if (VariantImpl(result, resources_).setFloat(number.asFloat()))
|
||||
if (VariantImpl::setFloat(number.asFloat(), result, resources_))
|
||||
return DeserializationError::Ok;
|
||||
else
|
||||
return DeserializationError::NoMemory;
|
||||
|
||||
#if ARDUINOJSON_USE_DOUBLE
|
||||
case NumberType::Double:
|
||||
if (VariantImpl(result, resources_).setFloat(number.asDouble()))
|
||||
if (VariantImpl::setFloat(number.asDouble(), result, resources_))
|
||||
return DeserializationError::Ok;
|
||||
else
|
||||
return DeserializationError::NoMemory;
|
||||
|
@@ -257,7 +257,7 @@ class MsgPackDeserializer {
|
||||
return err;
|
||||
|
||||
fixEndianness(value);
|
||||
VariantImpl(variant, resources_).setFloat(value);
|
||||
VariantImpl::setFloat(value, variant, resources_);
|
||||
|
||||
return DeserializationError::Ok;
|
||||
}
|
||||
@@ -273,7 +273,7 @@ class MsgPackDeserializer {
|
||||
return err;
|
||||
|
||||
fixEndianness(value);
|
||||
if (VariantImpl(variant, resources_).setFloat(value))
|
||||
if (VariantImpl::setFloat(value, variant, resources_))
|
||||
return DeserializationError::Ok;
|
||||
else
|
||||
return DeserializationError::NoMemory;
|
||||
@@ -293,7 +293,7 @@ class MsgPackDeserializer {
|
||||
|
||||
doubleToFloat(i, o);
|
||||
fixEndianness(value);
|
||||
VariantImpl(variant, resources_).setFloat(value);
|
||||
VariantImpl::setFloat(value, variant, resources_);
|
||||
|
||||
return DeserializationError::Ok;
|
||||
}
|
||||
|
@@ -424,17 +424,25 @@ class VariantImpl {
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
enable_if_t<sizeof(T) == 4, bool> setFloat(T value) {
|
||||
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
|
||||
bool setFloat(T value) {
|
||||
if (!data_)
|
||||
return false;
|
||||
return setFloat(value, data_, resources_);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
static enable_if_t<sizeof(T) == 4, bool> setFloat(T value, VariantData* data_,
|
||||
ResourceManager*) {
|
||||
ARDUINOJSON_ASSERT(data_ != nullptr);
|
||||
ARDUINOJSON_ASSERT(data_->type == VariantType::Null);
|
||||
data_->type = VariantType::Float;
|
||||
data_->content.asFloat = value;
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
enable_if_t<sizeof(T) == 8, bool> setFloat(T value);
|
||||
static enable_if_t<sizeof(T) == 8, bool> setFloat(
|
||||
T value, VariantData* data_, ResourceManager* resources_);
|
||||
|
||||
template <typename T>
|
||||
bool setInteger(T value) {
|
||||
|
@@ -70,11 +70,11 @@ inline const EightByteValue* VariantImpl::getEightByte() const {
|
||||
#endif
|
||||
|
||||
template <typename T>
|
||||
enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(T value) {
|
||||
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
|
||||
|
||||
if (!data_)
|
||||
return false;
|
||||
enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(
|
||||
T value, VariantData* data_, ResourceManager* resources_) {
|
||||
ARDUINOJSON_ASSERT(data_ != nullptr);
|
||||
ARDUINOJSON_ASSERT(data_->type == VariantType::Null);
|
||||
ARDUINOJSON_ASSERT(resources_ != nullptr);
|
||||
|
||||
float valueAsFloat = static_cast<float>(value);
|
||||
|
||||
|
Reference in New Issue
Block a user