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;
|
return DeserializationError::NoMemory;
|
||||||
|
|
||||||
case NumberType::Float:
|
case NumberType::Float:
|
||||||
if (VariantImpl(result, resources_).setFloat(number.asFloat()))
|
if (VariantImpl::setFloat(number.asFloat(), result, resources_))
|
||||||
return DeserializationError::Ok;
|
return DeserializationError::Ok;
|
||||||
else
|
else
|
||||||
return DeserializationError::NoMemory;
|
return DeserializationError::NoMemory;
|
||||||
|
|
||||||
#if ARDUINOJSON_USE_DOUBLE
|
#if ARDUINOJSON_USE_DOUBLE
|
||||||
case NumberType::Double:
|
case NumberType::Double:
|
||||||
if (VariantImpl(result, resources_).setFloat(number.asDouble()))
|
if (VariantImpl::setFloat(number.asDouble(), result, resources_))
|
||||||
return DeserializationError::Ok;
|
return DeserializationError::Ok;
|
||||||
else
|
else
|
||||||
return DeserializationError::NoMemory;
|
return DeserializationError::NoMemory;
|
||||||
|
@@ -257,7 +257,7 @@ class MsgPackDeserializer {
|
|||||||
return err;
|
return err;
|
||||||
|
|
||||||
fixEndianness(value);
|
fixEndianness(value);
|
||||||
VariantImpl(variant, resources_).setFloat(value);
|
VariantImpl::setFloat(value, variant, resources_);
|
||||||
|
|
||||||
return DeserializationError::Ok;
|
return DeserializationError::Ok;
|
||||||
}
|
}
|
||||||
@@ -273,7 +273,7 @@ class MsgPackDeserializer {
|
|||||||
return err;
|
return err;
|
||||||
|
|
||||||
fixEndianness(value);
|
fixEndianness(value);
|
||||||
if (VariantImpl(variant, resources_).setFloat(value))
|
if (VariantImpl::setFloat(value, variant, resources_))
|
||||||
return DeserializationError::Ok;
|
return DeserializationError::Ok;
|
||||||
else
|
else
|
||||||
return DeserializationError::NoMemory;
|
return DeserializationError::NoMemory;
|
||||||
@@ -293,7 +293,7 @@ class MsgPackDeserializer {
|
|||||||
|
|
||||||
doubleToFloat(i, o);
|
doubleToFloat(i, o);
|
||||||
fixEndianness(value);
|
fixEndianness(value);
|
||||||
VariantImpl(variant, resources_).setFloat(value);
|
VariantImpl::setFloat(value, variant, resources_);
|
||||||
|
|
||||||
return DeserializationError::Ok;
|
return DeserializationError::Ok;
|
||||||
}
|
}
|
||||||
|
@@ -424,17 +424,25 @@ class VariantImpl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
enable_if_t<sizeof(T) == 4, bool> setFloat(T value) {
|
bool setFloat(T value) {
|
||||||
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
|
|
||||||
if (!data_)
|
if (!data_)
|
||||||
return false;
|
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_->type = VariantType::Float;
|
||||||
data_->content.asFloat = value;
|
data_->content.asFloat = value;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
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>
|
template <typename T>
|
||||||
bool setInteger(T value) {
|
bool setInteger(T value) {
|
||||||
|
@@ -70,11 +70,11 @@ inline const EightByteValue* VariantImpl::getEightByte() const {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(T value) {
|
enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(
|
||||||
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
|
T value, VariantData* data_, ResourceManager* resources_) {
|
||||||
|
ARDUINOJSON_ASSERT(data_ != nullptr);
|
||||||
if (!data_)
|
ARDUINOJSON_ASSERT(data_->type == VariantType::Null);
|
||||||
return false;
|
ARDUINOJSON_ASSERT(resources_ != nullptr);
|
||||||
|
|
||||||
float valueAsFloat = static_cast<float>(value);
|
float valueAsFloat = static_cast<float>(value);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user