tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
byte_order.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2// SPDX-FileCopyrightText: Copyright (C) 2019 Tobias Hienzsch
3
4#ifndef TETL_NET_BYTE_ORDER_HPP
5#define TETL_NET_BYTE_ORDER_HPP
6
7#include <etl/version.hpp>
8
9#include <etl/cstdint.hpp>
10
11namespace etl::experimental::net {
12template <typename T>
13constexpr auto ntoh(T) -> T = delete;
14
15constexpr auto ntoh(char v) noexcept -> char
16{
17 return v;
18}
19
20constexpr auto ntoh(uint8_t v) noexcept -> uint8_t
21{
22 return v;
23}
24
25constexpr auto ntoh(int8_t v) noexcept -> int8_t
26{
27 return v;
28}
29
30constexpr auto ntoh(uint16_t v) noexcept -> uint16_t
31{
32 return uint16_t(v << uint16_t(8)) | uint16_t(v >> uint16_t(8));
33}
34
35constexpr auto ntoh(uint32_t v) noexcept -> uint32_t
36{
37 auto const a = v << 24;
38 auto const b = (v & 0x0000FF00) << 8;
39 auto const c = (v & 0x00FF0000) >> 8;
40 auto const d = v >> 24;
41
42 return a | b | c | d;
43}
44
45template <typename T>
46constexpr auto hton(T) -> T = delete;
47
48constexpr auto hton(char v) noexcept -> char
49{
50 return v;
51}
52
53constexpr auto hton(int8_t v) noexcept -> int8_t
54{
55 return v;
56}
57
58constexpr auto hton(uint8_t v) noexcept -> uint8_t
59{
60 return v;
61}
62
63constexpr auto hton(uint16_t v) noexcept -> uint16_t
64{
65 return ntoh(v);
66}
67
68constexpr auto hton(uint32_t v) noexcept -> uint32_t
69{
70 return ntoh(v);
71}
72
73} // namespace etl::experimental::net
74
75#endif // TETL_NET_BYTE_ORDER_HPP
Definition buffer.hpp:15
constexpr auto ntoh(char v) noexcept -> char
Definition byte_order.hpp:15
constexpr auto ntoh(uint16_t v) noexcept -> uint16_t
Definition byte_order.hpp:30
constexpr auto ntoh(T) -> T=delete
constexpr auto hton(T) -> T=delete
constexpr auto ntoh(int8_t v) noexcept -> int8_t
Definition byte_order.hpp:25
constexpr auto hton(uint8_t v) noexcept -> uint8_t
Definition byte_order.hpp:58
constexpr auto hton(char v) noexcept -> char
Definition byte_order.hpp:48
constexpr auto ntoh(uint8_t v) noexcept -> uint8_t
Definition byte_order.hpp:20
constexpr auto ntoh(uint32_t v) noexcept -> uint32_t
Definition byte_order.hpp:35
constexpr auto hton(uint16_t v) noexcept -> uint16_t
Definition byte_order.hpp:63
constexpr auto hton(int8_t v) noexcept -> int8_t
Definition byte_order.hpp:53
constexpr auto hton(uint32_t v) noexcept -> uint32_t
Definition byte_order.hpp:68
Definition adjacent_find.hpp:9