Toolbox snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
Endian.cpp
Go to the documentation of this file.
1// The Reactive C++ Toolbox.
2// Copyright (C) 2013-2019 Swirly Cloud Limited
3// Copyright (C) 2021 Reactive Markets Limited
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
17#include "Endian.hpp"
18
19namespace toolbox {
20inline namespace net {
21using namespace std;
22
23static_assert(bswap(uint16_t{0x0102}) == uint16_t{0x0201});
24static_assert(bswap(int16_t{0x0102}) == int16_t{0x0201});
25static_assert(bswap(uint32_t{0x01020304}) == uint32_t{0x04030201});
26static_assert(bswap(int32_t{0x01020304}) == int32_t{0x04030201});
27static_assert(bswap(uint64_t{0x0102030405060708}) == uint64_t{0x0807060504030201});
28static_assert(bswap(int64_t{0x0102030405060708}) == int64_t{0x0807060504030201});
29
30static_assert(ntoh(hton(uint16_t{0x0102})) == uint16_t{0x0102});
31static_assert(ntoh(hton(int16_t{0x0102})) == int16_t{0x0102});
32static_assert(ntoh(hton(uint32_t{0x01020304})) == uint32_t{0x01020304});
33static_assert(ntoh(hton(int32_t{0x01020304})) == int32_t{0x01020304});
34static_assert(ntoh(hton(uint64_t{0x0102030405060708})) == uint64_t{0x0102030405060708});
35static_assert(ntoh(hton(int64_t{0x0102030405060708})) == int64_t{0x0102030405060708});
36
37static_assert(ltoh(htol(uint16_t{0x0102})) == uint16_t{0x0102});
38static_assert(ltoh(htol(int16_t{0x0102})) == int16_t{0x0102});
39static_assert(ltoh(htol(uint32_t{0x01020304})) == uint32_t{0x01020304});
40static_assert(ltoh(htol(int32_t{0x01020304})) == int32_t{0x01020304});
41static_assert(ltoh(htol(uint64_t{0x0102030405060708})) == uint64_t{0x0102030405060708});
42static_assert(ltoh(htol(int64_t{0x0102030405060708})) == int64_t{0x0102030405060708});
43
44} // namespace net
45} // namespace toolbox
STL namespace.
constexpr ValueT hton(ValueT n) noexcept
Definition Endian.hpp:71
constexpr ValueT ltoh(ValueT n) noexcept
Definition Endian.hpp:82
constexpr ValueT ntoh(ValueT n) noexcept
Definition Endian.hpp:60
constexpr std::uint16_t bswap(std::uint16_t n) noexcept
Definition Endian.hpp:27
constexpr ValueT htol(ValueT n) noexcept
Definition Endian.hpp:93
constexpr auto bind() noexcept
Definition Slot.hpp:92