mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-25 16:27:33 +02:00
committed by
Benoit Blanchon
parent
ef28064317
commit
0d43e51d48
@ -13,7 +13,7 @@ static void check(const char* input, T expected) {
|
|||||||
uint8_t* f = reinterpret_cast<uint8_t*>(&actual);
|
uint8_t* f = reinterpret_cast<uint8_t*>(&actual);
|
||||||
const uint8_t* d = reinterpret_cast<const uint8_t*>(input);
|
const uint8_t* d = reinterpret_cast<const uint8_t*>(input);
|
||||||
doubleToFloat(d, f);
|
doubleToFloat(d, f);
|
||||||
fixEndianess(actual);
|
fixEndianness(actual);
|
||||||
CHECK(actual == expected);
|
CHECK(actual == expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <ArduinoJson/Deserialization/deserialize.hpp>
|
#include <ArduinoJson/Deserialization/deserialize.hpp>
|
||||||
#include <ArduinoJson/Memory/ResourceManager.hpp>
|
#include <ArduinoJson/Memory/ResourceManager.hpp>
|
||||||
#include <ArduinoJson/MsgPack/endianess.hpp>
|
#include <ArduinoJson/MsgPack/endianness.hpp>
|
||||||
#include <ArduinoJson/MsgPack/ieee754.hpp>
|
#include <ArduinoJson/MsgPack/ieee754.hpp>
|
||||||
#include <ArduinoJson/Polyfills/type_traits.hpp>
|
#include <ArduinoJson/Polyfills/type_traits.hpp>
|
||||||
#include <ArduinoJson/Variant/VariantData.hpp>
|
#include <ArduinoJson/Variant/VariantData.hpp>
|
||||||
@ -257,7 +257,7 @@ class MsgPackDeserializer {
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
fixEndianess(value);
|
fixEndianness(value);
|
||||||
|
|
||||||
return DeserializationError::Ok;
|
return DeserializationError::Ok;
|
||||||
}
|
}
|
||||||
@ -286,7 +286,7 @@ class MsgPackDeserializer {
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
fixEndianess(value);
|
fixEndianness(value);
|
||||||
variant->setFloat(value);
|
variant->setFloat(value);
|
||||||
|
|
||||||
return DeserializationError::Ok;
|
return DeserializationError::Ok;
|
||||||
@ -302,7 +302,7 @@ class MsgPackDeserializer {
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
fixEndianess(value);
|
fixEndianness(value);
|
||||||
variant->setFloat(value);
|
variant->setFloat(value);
|
||||||
|
|
||||||
return DeserializationError::Ok;
|
return DeserializationError::Ok;
|
||||||
@ -321,7 +321,7 @@ class MsgPackDeserializer {
|
|||||||
return err;
|
return err;
|
||||||
|
|
||||||
doubleToFloat(i, o);
|
doubleToFloat(i, o);
|
||||||
fixEndianess(value);
|
fixEndianness(value);
|
||||||
variant->setFloat(value);
|
variant->setFloat(value);
|
||||||
|
|
||||||
return DeserializationError::Ok;
|
return DeserializationError::Ok;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <ArduinoJson/MsgPack/endianess.hpp>
|
#include <ArduinoJson/MsgPack/endianness.hpp>
|
||||||
#include <ArduinoJson/Polyfills/assert.hpp>
|
#include <ArduinoJson/Polyfills/assert.hpp>
|
||||||
#include <ArduinoJson/Polyfills/type_traits.hpp>
|
#include <ArduinoJson/Polyfills/type_traits.hpp>
|
||||||
#include <ArduinoJson/Serialization/CountingDecorator.hpp>
|
#include <ArduinoJson/Serialization/CountingDecorator.hpp>
|
||||||
@ -206,7 +206,7 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
|
|||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void writeInteger(T value) {
|
void writeInteger(T value) {
|
||||||
fixEndianess(value);
|
fixEndianness(value);
|
||||||
writeBytes(reinterpret_cast<uint8_t*>(&value), sizeof(value));
|
writeBytes(reinterpret_cast<uint8_t*>(&value), sizeof(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,32 +15,32 @@ inline void swapBytes(uint8_t& a, uint8_t& b) {
|
|||||||
b = t;
|
b = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void fixEndianess(uint8_t* p, integral_constant<size_t, 8>) {
|
inline void fixEndianness(uint8_t* p, integral_constant<size_t, 8>) {
|
||||||
swapBytes(p[0], p[7]);
|
swapBytes(p[0], p[7]);
|
||||||
swapBytes(p[1], p[6]);
|
swapBytes(p[1], p[6]);
|
||||||
swapBytes(p[2], p[5]);
|
swapBytes(p[2], p[5]);
|
||||||
swapBytes(p[3], p[4]);
|
swapBytes(p[3], p[4]);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void fixEndianess(uint8_t* p, integral_constant<size_t, 4>) {
|
inline void fixEndianness(uint8_t* p, integral_constant<size_t, 4>) {
|
||||||
swapBytes(p[0], p[3]);
|
swapBytes(p[0], p[3]);
|
||||||
swapBytes(p[1], p[2]);
|
swapBytes(p[1], p[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void fixEndianess(uint8_t* p, integral_constant<size_t, 2>) {
|
inline void fixEndianness(uint8_t* p, integral_constant<size_t, 2>) {
|
||||||
swapBytes(p[0], p[1]);
|
swapBytes(p[0], p[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void fixEndianess(uint8_t*, integral_constant<size_t, 1>) {}
|
inline void fixEndianness(uint8_t*, integral_constant<size_t, 1>) {}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline void fixEndianess(T& value) {
|
inline void fixEndianness(T& value) {
|
||||||
fixEndianess(reinterpret_cast<uint8_t*>(&value),
|
fixEndianness(reinterpret_cast<uint8_t*>(&value),
|
||||||
integral_constant<size_t, sizeof(T)>());
|
integral_constant<size_t, sizeof(T)>());
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline void fixEndianess(T&) {}
|
inline void fixEndianness(T&) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ARDUINOJSON_END_PRIVATE_NAMESPACE
|
ARDUINOJSON_END_PRIVATE_NAMESPACE
|
Reference in New Issue
Block a user