|
@@ -38,6 +38,10 @@
|
|
|
#include <vector>
|
|
|
#include <map>
|
|
|
|
|
|
+#if defined(__FreeBSD__)
|
|
|
+#include <sys/endian.h>
|
|
|
+#endif
|
|
|
+
|
|
|
#include "Constants.hpp"
|
|
|
|
|
|
#ifdef __LINUX__
|
|
@@ -419,8 +423,12 @@ public:
|
|
|
static inline uint64_t hton(uint64_t n)
|
|
|
{
|
|
|
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
|
-#if defined(__GNUC__) && (!defined(__OpenBSD__))
|
|
|
+#if defined(__GNUC__)
|
|
|
+#if defined(__FreeBSD__)
|
|
|
+ return bswap64(n);
|
|
|
+#elif (!defined(__OpenBSD__))
|
|
|
return __builtin_bswap64(n);
|
|
|
+#endif
|
|
|
#else
|
|
|
return (
|
|
|
((n & 0x00000000000000FFULL) << 56) |
|
|
@@ -448,8 +456,12 @@ public:
|
|
|
static inline uint64_t ntoh(uint64_t n)
|
|
|
{
|
|
|
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
|
-#if defined(__GNUC__) && !defined(__OpenBSD__)
|
|
|
+#if defined(__GNUC__)
|
|
|
+#if defined(__FreeBSD__)
|
|
|
+ return bswap64(n);
|
|
|
+#elif (!defined(__OpenBSD__))
|
|
|
return __builtin_bswap64(n);
|
|
|
+#endif
|
|
|
#else
|
|
|
return (
|
|
|
((n & 0x00000000000000FFULL) << 56) |
|