Commit | Line | Data |
---|---|---|
df34434f PP |
1 | /* |
2 | * Copyright (c) 2022 Philippe Proulx <pproulx@efficios.com> | |
3 | * | |
4 | * SPDX-License-Identifier: MIT | |
5 | */ | |
6 | ||
094bf3f2 SM |
7 | #ifndef BABELTRACE_CPP_COMMON_BT2C_ENDIAN_HPP |
8 | #define BABELTRACE_CPP_COMMON_BT2C_ENDIAN_HPP | |
df34434f PP |
9 | |
10 | #include <cstdint> | |
11 | ||
83ad336c | 12 | #include "compat/endian.h" /* IWYU pragma: keep */ |
df34434f | 13 | |
094bf3f2 | 14 | namespace bt2c { |
df34434f | 15 | |
485083ae | 16 | inline std::uint8_t littleEndianToNative(const std::uint8_t val) noexcept |
df34434f PP |
17 | { |
18 | return val; | |
19 | } | |
20 | ||
485083ae | 21 | inline std::uint8_t bigEndianToNative(const std::uint8_t val) noexcept |
df34434f PP |
22 | { |
23 | return val; | |
24 | } | |
25 | ||
485083ae | 26 | inline std::int8_t littleEndianToNative(const std::int8_t val) noexcept |
df34434f PP |
27 | { |
28 | return val; | |
29 | } | |
30 | ||
485083ae | 31 | inline std::int8_t bigEndianToNative(const std::int8_t val) noexcept |
df34434f PP |
32 | { |
33 | return val; | |
34 | } | |
35 | ||
485083ae | 36 | inline std::uint16_t littleEndianToNative(const std::uint16_t val) noexcept |
df34434f PP |
37 | { |
38 | return static_cast<std::uint16_t>(le16toh(val)); | |
39 | } | |
40 | ||
485083ae | 41 | inline std::uint16_t bigEndianToNative(const std::uint16_t val) noexcept |
df34434f PP |
42 | { |
43 | return static_cast<std::uint16_t>(be16toh(val)); | |
44 | } | |
45 | ||
485083ae | 46 | inline std::int16_t littleEndianToNative(const std::int16_t val) noexcept |
df34434f PP |
47 | { |
48 | return static_cast<std::int16_t>(littleEndianToNative(static_cast<std::uint16_t>(val))); | |
49 | } | |
50 | ||
485083ae | 51 | inline std::int16_t bigEndianToNative(const std::int16_t val) noexcept |
df34434f PP |
52 | { |
53 | return static_cast<std::int16_t>(bigEndianToNative(static_cast<std::uint16_t>(val))); | |
54 | } | |
55 | ||
485083ae | 56 | inline std::uint32_t littleEndianToNative(const std::uint32_t val) noexcept |
df34434f PP |
57 | { |
58 | return static_cast<std::uint32_t>(le32toh(val)); | |
59 | } | |
60 | ||
485083ae | 61 | inline std::uint32_t bigEndianToNative(const std::uint32_t val) noexcept |
df34434f PP |
62 | { |
63 | return static_cast<std::uint32_t>(be32toh(val)); | |
64 | } | |
65 | ||
485083ae | 66 | inline std::int32_t littleEndianToNative(const std::int32_t val) noexcept |
df34434f PP |
67 | { |
68 | return static_cast<std::int32_t>(littleEndianToNative(static_cast<std::uint32_t>(val))); | |
69 | } | |
70 | ||
485083ae | 71 | inline std::int32_t bigEndianToNative(const std::int32_t val) noexcept |
df34434f PP |
72 | { |
73 | return static_cast<std::int32_t>(bigEndianToNative(static_cast<std::uint32_t>(val))); | |
74 | } | |
75 | ||
485083ae | 76 | inline std::uint64_t littleEndianToNative(const std::uint64_t val) noexcept |
df34434f PP |
77 | { |
78 | return static_cast<std::uint64_t>(le64toh(val)); | |
79 | } | |
80 | ||
485083ae | 81 | inline std::uint64_t bigEndianToNative(const std::uint64_t val) noexcept |
df34434f PP |
82 | { |
83 | return static_cast<std::uint64_t>(be64toh(val)); | |
84 | } | |
85 | ||
485083ae | 86 | inline std::int64_t littleEndianToNative(const std::int64_t val) noexcept |
df34434f PP |
87 | { |
88 | return static_cast<std::int64_t>(littleEndianToNative(static_cast<std::uint64_t>(val))); | |
89 | } | |
90 | ||
485083ae | 91 | inline std::int64_t bigEndianToNative(const std::int64_t val) noexcept |
df34434f PP |
92 | { |
93 | return static_cast<std::int64_t>(bigEndianToNative(static_cast<std::uint64_t>(val))); | |
94 | } | |
95 | ||
094bf3f2 | 96 | } /* namespace bt2c */ |
df34434f | 97 | |
094bf3f2 | 98 | #endif /* BABELTRACE_CPP_COMMON_BT2C_ENDIAN_HPP */ |