Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
compat
endian.h
Go to the documentation of this file.
1
// Copyright (c) 2014-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef BITCOIN_COMPAT_ENDIAN_H
6
#define BITCOIN_COMPAT_ENDIAN_H
7
8
#include <
compat/byteswap.h
>
9
10
#include <bit>
11
#include <cstdint>
12
13
inline
BSWAP_CONSTEXPR
uint16_t
htobe16_internal
(uint16_t host_16bits)
14
{
15
if
constexpr
(std::endian::native == std::endian::little)
return
internal_bswap_16
(host_16bits);
16
else
return
host_16bits;
17
}
18
inline
BSWAP_CONSTEXPR
uint16_t
htole16_internal
(uint16_t host_16bits)
19
{
20
if
constexpr
(std::endian::native == std::endian::big)
return
internal_bswap_16
(host_16bits);
21
else
return
host_16bits;
22
}
23
inline
BSWAP_CONSTEXPR
uint16_t
be16toh_internal
(uint16_t big_endian_16bits)
24
{
25
if
constexpr
(std::endian::native == std::endian::little)
return
internal_bswap_16
(big_endian_16bits);
26
else
return
big_endian_16bits;
27
}
28
inline
BSWAP_CONSTEXPR
uint16_t
le16toh_internal
(uint16_t little_endian_16bits)
29
{
30
if
constexpr
(std::endian::native == std::endian::big)
return
internal_bswap_16
(little_endian_16bits);
31
else
return
little_endian_16bits;
32
}
33
inline
BSWAP_CONSTEXPR
uint32_t
htobe32_internal
(uint32_t host_32bits)
34
{
35
if
constexpr
(std::endian::native == std::endian::little)
return
internal_bswap_32
(host_32bits);
36
else
return
host_32bits;
37
}
38
inline
BSWAP_CONSTEXPR
uint32_t
htole32_internal
(uint32_t host_32bits)
39
{
40
if
constexpr
(std::endian::native == std::endian::big)
return
internal_bswap_32
(host_32bits);
41
else
return
host_32bits;
42
}
43
inline
BSWAP_CONSTEXPR
uint32_t
be32toh_internal
(uint32_t big_endian_32bits)
44
{
45
if
constexpr
(std::endian::native == std::endian::little)
return
internal_bswap_32
(big_endian_32bits);
46
else
return
big_endian_32bits;
47
}
48
inline
BSWAP_CONSTEXPR
uint32_t
le32toh_internal
(uint32_t little_endian_32bits)
49
{
50
if
constexpr
(std::endian::native == std::endian::big)
return
internal_bswap_32
(little_endian_32bits);
51
else
return
little_endian_32bits;
52
}
53
inline
BSWAP_CONSTEXPR
uint64_t
htobe64_internal
(uint64_t host_64bits)
54
{
55
if
constexpr
(std::endian::native == std::endian::little)
return
internal_bswap_64
(host_64bits);
56
else
return
host_64bits;
57
}
58
inline
BSWAP_CONSTEXPR
uint64_t
htole64_internal
(uint64_t host_64bits)
59
{
60
if
constexpr
(std::endian::native == std::endian::big)
return
internal_bswap_64
(host_64bits);
61
else
return
host_64bits;
62
}
63
inline
BSWAP_CONSTEXPR
uint64_t
be64toh_internal
(uint64_t big_endian_64bits)
64
{
65
if
constexpr
(std::endian::native == std::endian::little)
return
internal_bswap_64
(big_endian_64bits);
66
else
return
big_endian_64bits;
67
}
68
inline
BSWAP_CONSTEXPR
uint64_t
le64toh_internal
(uint64_t little_endian_64bits)
69
{
70
if
constexpr
(std::endian::native == std::endian::big)
return
internal_bswap_64
(little_endian_64bits);
71
else
return
little_endian_64bits;
72
}
73
74
#endif
// BITCOIN_COMPAT_ENDIAN_H
byteswap.h
internal_bswap_32
BSWAP_CONSTEXPR uint32_t internal_bswap_32(uint32_t x)
Definition
byteswap.h:53
internal_bswap_16
BSWAP_CONSTEXPR uint16_t internal_bswap_16(uint16_t x)
Definition
byteswap.h:44
internal_bswap_64
BSWAP_CONSTEXPR uint64_t internal_bswap_64(uint64_t x)
Definition
byteswap.h:63
BSWAP_CONSTEXPR
#define BSWAP_CONSTEXPR
Definition
byteswap.h:39
be32toh_internal
BSWAP_CONSTEXPR uint32_t be32toh_internal(uint32_t big_endian_32bits)
Definition
endian.h:43
be16toh_internal
BSWAP_CONSTEXPR uint16_t be16toh_internal(uint16_t big_endian_16bits)
Definition
endian.h:23
htobe64_internal
BSWAP_CONSTEXPR uint64_t htobe64_internal(uint64_t host_64bits)
Definition
endian.h:53
htobe16_internal
BSWAP_CONSTEXPR uint16_t htobe16_internal(uint16_t host_16bits)
Definition
endian.h:13
htole32_internal
BSWAP_CONSTEXPR uint32_t htole32_internal(uint32_t host_32bits)
Definition
endian.h:38
htole16_internal
BSWAP_CONSTEXPR uint16_t htole16_internal(uint16_t host_16bits)
Definition
endian.h:18
be64toh_internal
BSWAP_CONSTEXPR uint64_t be64toh_internal(uint64_t big_endian_64bits)
Definition
endian.h:63
le16toh_internal
BSWAP_CONSTEXPR uint16_t le16toh_internal(uint16_t little_endian_16bits)
Definition
endian.h:28
htole64_internal
BSWAP_CONSTEXPR uint64_t htole64_internal(uint64_t host_64bits)
Definition
endian.h:58
le64toh_internal
BSWAP_CONSTEXPR uint64_t le64toh_internal(uint64_t little_endian_64bits)
Definition
endian.h:68
le32toh_internal
BSWAP_CONSTEXPR uint32_t le32toh_internal(uint32_t little_endian_32bits)
Definition
endian.h:48
htobe32_internal
BSWAP_CONSTEXPR uint32_t htobe32_internal(uint32_t host_32bits)
Definition
endian.h:33
Generated on
for Bitcoin Core by
1.17.0