/src/arduinojson/src/ArduinoJson/MsgPack/endianness.hpp
Line | Count | Source |
1 | | // ArduinoJson - https://arduinojson.org |
2 | | // Copyright © 2014-2025, 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 | 0 | inline void swapBytes(uint8_t& a, uint8_t& b) { |
13 | 0 | uint8_t t(a); |
14 | 0 | a = b; |
15 | 0 | b = t; |
16 | 0 | } |
17 | | |
18 | 0 | inline void fixEndianness(uint8_t* p, integral_constant<size_t, 8>) { |
19 | 0 | swapBytes(p[0], p[7]); |
20 | 0 | swapBytes(p[1], p[6]); |
21 | 0 | swapBytes(p[2], p[5]); |
22 | 0 | swapBytes(p[3], p[4]); |
23 | 0 | } |
24 | | |
25 | 0 | inline void fixEndianness(uint8_t* p, integral_constant<size_t, 4>) { |
26 | 0 | swapBytes(p[0], p[3]); |
27 | 0 | swapBytes(p[1], p[2]); |
28 | 0 | } |
29 | | |
30 | 0 | inline void fixEndianness(uint8_t* p, integral_constant<size_t, 2>) { |
31 | 0 | swapBytes(p[0], p[1]); |
32 | 0 | } |
33 | | |
34 | 0 | inline void fixEndianness(uint8_t*, integral_constant<size_t, 1>) {} |
35 | | |
36 | | template <typename T> |
37 | 0 | inline void fixEndianness(T& value) { |
38 | 0 | fixEndianness(reinterpret_cast<uint8_t*>(&value), |
39 | 0 | integral_constant<size_t, sizeof(T)>()); |
40 | 0 | } Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<float>(float&) Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<double>(double&) Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<unsigned short>(unsigned short&) Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<unsigned int>(unsigned int&) Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<unsigned char>(unsigned char&) Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<signed char>(signed char&) Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<short>(short&) Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<int>(int&) Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<long>(long&) Unexecuted instantiation: void ArduinoJson::V742HB42::detail::fixEndianness<unsigned long>(unsigned long&) |
41 | | #else |
42 | | template <typename T> |
43 | | inline void fixEndianness(T&) {} |
44 | | #endif |
45 | | |
46 | | ARDUINOJSON_END_PRIVATE_NAMESPACE |