aboutsummaryrefslogtreecommitdiff
path: root/src/compat/byteswap.h
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-03-06 18:23:45 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2015-03-06 18:35:25 +0100
commit7c3fbc34aed578398b3f180a621c671ff3837cec (patch)
treee52428f7cb819fddbdc8b801ea3894306e266d85 /src/compat/byteswap.h
parent51377c2dbe0d71dad953a43187749a38010d1f1f (diff)
parenta0ae79d77552d9ee67469c934458a3f3bd170858 (diff)
Merge pull request #5510
a0ae79d Replace CBlockHeader::GetHash with call to SerializeHash (Wladimir J. van der Laan) 62b30f0 Add serialize float/double tests (Wladimir J. van der Laan) 9f4fac9 src/txmempool.cpp: make numEntries a uint32_t (Wladimir J. van der Laan) f4e6487 src/arith_256.cpp: bigendian compatibility (Wladimir J. van der Laan) aac3205 src/netbase.h: Fix endian in CNetAddr serialization (Wladimir J. van der Laan) 01f9c34 src/serialize.h: base serialization level endianness neutrality (Wladimir J. van der Laan) 4e853aa src/script/script.h: endian compatibility for PUSHDATA sizes (Wladimir J. van der Laan) 4f92773 src/primitives/transaction.h: endian compatibility in serialization (Wladimir J. van der Laan) 81aeb28 src/primitives/block.cpp: endian compatibility in GetHash (Wladimir J. van der Laan) dec84ca src/net.cpp: endian compatibility in EndMessage (Wladimir J. van der Laan) 556814e src/main.cpp: endian compatibility in packet checksum check (Wladimir J. van der Laan) 3ca5852 src/hash.cpp: endian compatibility (Wladimir J. van der Laan) 4414f5f build: Endian compatibility (Wladimir J. van der Laan)
Diffstat (limited to 'src/compat/byteswap.h')
-rw-r--r--src/compat/byteswap.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/compat/byteswap.h b/src/compat/byteswap.h
new file mode 100644
index 0000000000..899220bdc5
--- /dev/null
+++ b/src/compat/byteswap.h
@@ -0,0 +1,47 @@
+// Copyright (c) 2014 The Bitcoin developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#ifndef BITCOIN_COMPAT_BYTESWAP_H
+#define BITCOIN_COMPAT_BYTESWAP_H
+
+#if defined(HAVE_CONFIG_H)
+#include "config/bitcoin-config.h"
+#endif
+
+#include <stdint.h>
+
+#if defined(HAVE_BYTESWAP_H)
+#include <byteswap.h>
+#endif
+
+#if HAVE_DECL_BSWAP_16 == 0
+inline uint16_t bswap_16(uint16_t x)
+{
+ return (x >> 8) | ((x & 0x00ff) << 8);
+}
+#endif // HAVE_DECL_BSWAP16
+
+#if HAVE_DECL_BSWAP_32 == 0
+inline uint32_t bswap_32(uint32_t x)
+{
+ return (((x & 0xff000000U) >> 24) | ((x & 0x00ff0000U) >> 8) |
+ ((x & 0x0000ff00U) << 8) | ((x & 0x000000ffU) << 24));
+}
+#endif // HAVE_DECL_BSWAP32
+
+#if HAVE_DECL_BSWAP_64 == 0
+inline uint64_t bswap_64(uint64_t x)
+{
+ return (((x & 0xff00000000000000ull) >> 56)
+ | ((x & 0x00ff000000000000ull) >> 40)
+ | ((x & 0x0000ff0000000000ull) >> 24)
+ | ((x & 0x000000ff00000000ull) >> 8)
+ | ((x & 0x00000000ff000000ull) << 8)
+ | ((x & 0x0000000000ff0000ull) << 24)
+ | ((x & 0x000000000000ff00ull) << 40)
+ | ((x & 0x00000000000000ffull) << 56));
+}
+#endif // HAVE_DECL_BSWAP64
+
+#endif // BITCOIN_COMPAT_BYTESWAP_H