Bitcoin ABC 0.32.5
P2P Digital Currency
common.h
Go to the documentation of this file.
1// Copyright (c) 2014 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_CRYPTO_COMMON_H
6#define BITCOIN_CRYPTO_COMMON_H
7
8#include <compat/endian.h>
9
10#include <cstdint>
11#include <cstring>
12
13static inline uint16_t ReadLE16(const uint8_t *ptr) {
14 uint16_t x;
15 memcpy((char *)&x, ptr, 2);
16 return le16toh_internal(x);
17}
18
19static inline uint32_t ReadLE32(const uint8_t *ptr) {
20 uint32_t x;
21 memcpy((char *)&x, ptr, 4);
22 return le32toh_internal(x);
23}
24
25static inline uint64_t ReadLE64(const uint8_t *ptr) {
26 uint64_t x;
27 memcpy((char *)&x, ptr, 8);
28 return le64toh_internal(x);
29}
30
31static inline void WriteLE16(uint8_t *ptr, uint16_t x) {
32 uint16_t v = htole16_internal(x);
33 memcpy(ptr, (char *)&v, 2);
34}
35
36static inline void WriteLE32(uint8_t *ptr, uint32_t x) {
37 uint32_t v = htole32_internal(x);
38 memcpy(ptr, (char *)&v, 4);
39}
40
41static inline void WriteLE64(uint8_t *ptr, uint64_t x) {
42 uint64_t v = htole64_internal(x);
43 memcpy(ptr, (char *)&v, 8);
44}
45
46uint16_t static inline ReadBE16(const uint8_t *ptr) {
47 uint16_t x;
48 memcpy((char *)&x, ptr, 2);
49 return be16toh_internal(x);
50}
51
52static inline uint32_t ReadBE32(const uint8_t *ptr) {
53 uint32_t x;
54 memcpy((char *)&x, ptr, 4);
55 return be32toh_internal(x);
56}
57
58static inline uint64_t ReadBE64(const uint8_t *ptr) {
59 uint64_t x;
60 memcpy((char *)&x, ptr, 8);
61 return be64toh_internal(x);
62}
63
64static inline void WriteBE32(uint8_t *ptr, uint32_t x) {
65 uint32_t v = htobe32_internal(x);
66 memcpy(ptr, (char *)&v, 4);
67}
68
69static inline void WriteBE64(uint8_t *ptr, uint64_t x) {
70 uint64_t v = htobe64_internal(x);
71 memcpy(ptr, (char *)&v, 8);
72}
73
74#endif // BITCOIN_CRYPTO_COMMON_H
static void WriteLE16(uint8_t *ptr, uint16_t x)
Definition: common.h:31
static void WriteLE32(uint8_t *ptr, uint32_t x)
Definition: common.h:36
static void WriteBE64(uint8_t *ptr, uint64_t x)
Definition: common.h:69
static void WriteBE32(uint8_t *ptr, uint32_t x)
Definition: common.h:64
static uint64_t ReadLE64(const uint8_t *ptr)
Definition: common.h:25
static uint16_t ReadBE16(const uint8_t *ptr)
Definition: common.h:46
static uint32_t ReadBE32(const uint8_t *ptr)
Definition: common.h:52
static uint16_t ReadLE16(const uint8_t *ptr)
Definition: common.h:13
static uint64_t ReadBE64(const uint8_t *ptr)
Definition: common.h:58
static uint32_t ReadLE32(const uint8_t *ptr)
Definition: common.h:19
static void WriteLE64(uint8_t *ptr, uint64_t x)
Definition: common.h:41
BSWAP_CONSTEXPR uint32_t be32toh_internal(uint32_t big_endian_32bits)
Definition: endian.h:56
BSWAP_CONSTEXPR uint16_t be16toh_internal(uint16_t big_endian_16bits)
Definition: endian.h:27
BSWAP_CONSTEXPR uint64_t htobe64_internal(uint64_t host_64bits)
Definition: endian.h:71
BSWAP_CONSTEXPR uint32_t htole32_internal(uint32_t host_32bits)
Definition: endian.h:49
BSWAP_CONSTEXPR uint16_t htole16_internal(uint16_t host_16bits)
Definition: endian.h:20
BSWAP_CONSTEXPR uint64_t be64toh_internal(uint64_t big_endian_64bits)
Definition: endian.h:85
BSWAP_CONSTEXPR uint16_t le16toh_internal(uint16_t little_endian_16bits)
Definition: endian.h:35
BSWAP_CONSTEXPR uint64_t htole64_internal(uint64_t host_64bits)
Definition: endian.h:78
BSWAP_CONSTEXPR uint64_t le64toh_internal(uint64_t little_endian_64bits)
Definition: endian.h:93
BSWAP_CONSTEXPR uint32_t le32toh_internal(uint32_t little_endian_32bits)
Definition: endian.h:64
BSWAP_CONSTEXPR uint32_t htobe32_internal(uint32_t host_32bits)
Definition: endian.h:42