This commit is contained in:
Benoit Blanchon
2024-08-27 14:40:24 +02:00
parent c0bebe35f1
commit 7643dadaec
4 changed files with 156 additions and 24 deletions
+1 -2
View File
@@ -137,8 +137,7 @@ struct Converter<T, detail::enable_if_t<detail::is_floating_point<T>::value>>
return false;
auto resources = getResourceManager(dst);
data->clear(resources);
data->setFloat(src, resources);
return true;
return data->setFloat(src, resources);
}
static T fromJson(JsonVariantConst src) {
+3 -2
View File
@@ -416,14 +416,15 @@ class VariantData {
}
template <typename T>
enable_if_t<sizeof(T) == 4> setFloat(T value, ResourceManager*) {
enable_if_t<sizeof(T) == 4, bool> setFloat(T value, ResourceManager*) {
ARDUINOJSON_ASSERT(type_ == VALUE_IS_NULL); // must call clear() first
type_ = VALUE_IS_FLOAT;
content_.asFloat = value;
return true;
}
template <typename T>
enable_if_t<sizeof(T) == 8> setFloat(T value, ResourceManager*);
enable_if_t<sizeof(T) == 8, bool> setFloat(T value, ResourceManager*);
template <typename T>
enable_if_t<is_signed<T>::value> setInteger(T value,
+8 -7
View File
@@ -65,8 +65,8 @@ inline const VariantExtension* VariantData::getExtension(
#endif
template <typename T>
enable_if_t<sizeof(T) == 8> VariantData::setFloat(T value,
ResourceManager* resources) {
enable_if_t<sizeof(T) == 8, bool> VariantData::setFloat(
T value, ResourceManager* resources) {
ARDUINOJSON_ASSERT(type_ == VALUE_IS_NULL); // must call clear() first
(void)resources; // silence warning
@@ -78,16 +78,17 @@ enable_if_t<sizeof(T) == 8> VariantData::setFloat(T value,
content_.asFloat = valueAsFloat;
} else {
auto extension = resources->allocExtension();
if (extension) {
type_ = VALUE_IS_DOUBLE;
content_.asSlotId = extension.id();
extension->asDouble = value;
}
if (!extension)
return false;
type_ = VALUE_IS_DOUBLE;
content_.asSlotId = extension.id();
extension->asDouble = value;
}
#else
type_ = VALUE_IS_FLOAT;
content_.asFloat = valueAsFloat;
#endif
return true;
}
template <typename T>