/src/arduinojson/src/ArduinoJson/MsgPack/endianness.hpp
Line | Count | Source |
1 | | // ArduinoJson - https://arduinojson.org |
2 | | // Copyright © 2014-2024, Benoit BLANCHON |
3 | | // MIT License |
4 | | |
5 | | #pragma once |
6 | | |
7 | | #include <ArduinoJson/Polyfills/type_traits.hpp> |
8 | | |
9 | | ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE |
10 | | |
11 | | #if ARDUINOJSON_LITTLE_ENDIAN |
12 | 4.17k | inline void swapBytes(uint8_t& a, uint8_t& b) { |
13 | 4.17k | uint8_t t(a); |
14 | 4.17k | a = b; |
15 | 4.17k | b = t; |
16 | 4.17k | } |
17 | | |
18 | 590 | inline void fixEndianness(uint8_t* p, integral_constant<size_t, 8>) { |
19 | 590 | swapBytes(p[0], p[7]); |
20 | 590 | swapBytes(p[1], p[6]); |
21 | 590 | swapBytes(p[2], p[5]); |
22 | 590 | swapBytes(p[3], p[4]); |
23 | 590 | } |
24 | | |
25 | 789 | inline void fixEndianness(uint8_t* p, integral_constant<size_t, 4>) { |
26 | 789 | swapBytes(p[0], p[3]); |
27 | 789 | swapBytes(p[1], p[2]); |
28 | 789 | } |
29 | | |
30 | 237 | inline void fixEndianness(uint8_t* p, integral_constant<size_t, 2>) { |
31 | 237 | swapBytes(p[0], p[1]); |
32 | 237 | } |
33 | | |
34 | 2.54k | inline void fixEndianness(uint8_t*, integral_constant<size_t, 1>) {} |
35 | | |
36 | | template <typename T> |
37 | 4.15k | inline void fixEndianness(T& value) { |
38 | 4.15k | fixEndianness(reinterpret_cast<uint8_t*>(&value), |
39 | 4.15k | integral_constant<size_t, sizeof(T)>()); |
40 | 4.15k | } void ArduinoJson::V710HB42::detail::fixEndianness<float>(float&) Line | Count | Source | 37 | 540 | inline void fixEndianness(T& value) { | 38 | 540 | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 540 | integral_constant<size_t, sizeof(T)>()); | 40 | 540 | } |
void ArduinoJson::V710HB42::detail::fixEndianness<double>(double&) Line | Count | Source | 37 | 179 | inline void fixEndianness(T& value) { | 38 | 179 | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 179 | integral_constant<size_t, sizeof(T)>()); | 40 | 179 | } |
void ArduinoJson::V710HB42::detail::fixEndianness<unsigned short>(unsigned short&) Line | Count | Source | 37 | 148 | inline void fixEndianness(T& value) { | 38 | 148 | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 148 | integral_constant<size_t, sizeof(T)>()); | 40 | 148 | } |
void ArduinoJson::V710HB42::detail::fixEndianness<unsigned int>(unsigned int&) Line | Count | Source | 37 | 141 | inline void fixEndianness(T& value) { | 38 | 141 | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 141 | integral_constant<size_t, sizeof(T)>()); | 40 | 141 | } |
void ArduinoJson::V710HB42::detail::fixEndianness<unsigned char>(unsigned char&) Line | Count | Source | 37 | 1.06k | inline void fixEndianness(T& value) { | 38 | 1.06k | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 1.06k | integral_constant<size_t, sizeof(T)>()); | 40 | 1.06k | } |
void ArduinoJson::V710HB42::detail::fixEndianness<signed char>(signed char&) Line | Count | Source | 37 | 1.47k | inline void fixEndianness(T& value) { | 38 | 1.47k | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 1.47k | integral_constant<size_t, sizeof(T)>()); | 40 | 1.47k | } |
void ArduinoJson::V710HB42::detail::fixEndianness<short>(short&) Line | Count | Source | 37 | 89 | inline void fixEndianness(T& value) { | 38 | 89 | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 89 | integral_constant<size_t, sizeof(T)>()); | 40 | 89 | } |
void ArduinoJson::V710HB42::detail::fixEndianness<int>(int&) Line | Count | Source | 37 | 108 | inline void fixEndianness(T& value) { | 38 | 108 | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 108 | integral_constant<size_t, sizeof(T)>()); | 40 | 108 | } |
void ArduinoJson::V710HB42::detail::fixEndianness<long>(long&) Line | Count | Source | 37 | 228 | inline void fixEndianness(T& value) { | 38 | 228 | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 228 | integral_constant<size_t, sizeof(T)>()); | 40 | 228 | } |
void ArduinoJson::V710HB42::detail::fixEndianness<unsigned long>(unsigned long&) Line | Count | Source | 37 | 183 | inline void fixEndianness(T& value) { | 38 | 183 | fixEndianness(reinterpret_cast<uint8_t*>(&value), | 39 | 183 | integral_constant<size_t, sizeof(T)>()); | 40 | 183 | } |
|
41 | | #else |
42 | | template <typename T> |
43 | | inline void fixEndianness(T&) {} |
44 | | #endif |
45 | | |
46 | | ARDUINOJSON_END_PRIVATE_NAMESPACE |