<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/0a1f1853d5ca1b1bc05a9c63f47ee7a165a78d3d">https://github.com/macports/macports-ports/commit/0a1f1853d5ca1b1bc05a9c63f47ee7a165a78d3d</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 0a1f1853d5c iowow: new port in databases/devel
</span>0a1f1853d5c is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 0a1f1853d5ca1b1bc05a9c63f47ee7a165a78d3d
</span>Author: barracuda156 <vital.had@gmail.com>
AuthorDate: Mon Jul 31 18:08:34 2023 +0800

<span style='display:block; white-space:pre;color:#404040;'>    iowow: new port in databases/devel
</span>---
 databases/iowow/Portfile                           |  46 ++++++
 .../files/0001-Do-not-use-clangism-with-GCC.patch  |  22 +++
 ...for-Control-reaches-the-end-of-a-non-void.patch |  22 +++
 .../0003-Fix-MurMurHash3-for-Big-endian.patch      | 177 +++++++++++++++++++++
 4 files changed, 267 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/databases/iowow/Portfile b/databases/iowow/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..085ca228057
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/databases/iowow/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,46 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           cmake 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# strndup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+legacysupport.newest_darwin_requires_legacy 10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        Softmotions iowow a274f0fe6e3f0adaf6cfffcb309bdfa85e50e866
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             2023.05.07
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          databases devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@barracuda156 gmail.com:vital.had} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         C11 utility library and persistent key/value storage engine
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    {*}${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://iowow.softmotions.com
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  ab0754994fa83f926743d664d15a06f31c8f6f27 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  be9762ae860e6c15d915bf3ade19083d9cbf668a1232c5a18bb144f1ea945bef \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    617307
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:cunit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/Softmotions/iowow/issues/55
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/Softmotions/iowow/pull/56
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   0001-Do-not-use-clangism-with-GCC.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    0002-unix.c-fix-for-Control-reaches-the-end-of-a-non-void.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    0003-Fix-MurMurHash3-for-Big-endian.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.c_standard 2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DBUILD_TESTS:BOOL=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/Softmotions/iowow/issues/53
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {[string match *gcc* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.ldflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -latomic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# FIXME: several test cases fail on PowerPC: https://github.com/Softmotions/iowow/issues/54
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run            yes
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/databases/iowow/files/0001-Do-not-use-clangism-with-GCC.patch b/databases/iowow/files/0001-Do-not-use-clangism-with-GCC.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..be7f8de2aa7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/databases/iowow/files/0001-Do-not-use-clangism-with-GCC.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 5bd31abed6db385d928f89ab67b64e0d030e4ce5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 31 Jul 2023 01:25:53 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/3] Do not use clangism with GCC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/CMakeLists.txt | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/CMakeLists.txt src/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d17db80..8642ef7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -186,7 +186,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     -Wno-sign-compare -Wno-unused-parameter \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     -Wno-implicit-fallthrough -Wno-unknown-pragmas -Wno-unused-function -Wno-missing-field-initializers \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     -Wno-missing-braces")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if (APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if (APPLE AND CMAKE_C_COMPILER_ID MATCHES "Clang")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-shorten-64-to-32")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/databases/iowow/files/0002-unix.c-fix-for-Control-reaches-the-end-of-a-non-void.patch b/databases/iowow/files/0002-unix.c-fix-for-Control-reaches-the-end-of-a-non-void.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..aea1c138d9c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/databases/iowow/files/0002-unix.c-fix-for-Control-reaches-the-end-of-a-non-void.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 863ead73875f9e595d2e6efc667a07b5c6390f40 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 31 Jul 2023 17:44:30 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/3] unix.c: fix for Control reaches the end of a non-void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ function
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/platform/unix/unix.c | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/platform/unix/unix.c src/platform/unix/unix.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 96b4920..0f8ceb4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/platform/unix/unix.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/platform/unix/unix.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -348,6 +348,7 @@ iwrc iwp_exec_path(char *opath, size_t opath_maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return iwrc_set_errno(IW_ERROR_ERRNO, errno);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // TODO:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return IW_ERROR_NOT_IMPLEMENTED;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/databases/iowow/files/0003-Fix-MurMurHash3-for-Big-endian.patch b/databases/iowow/files/0003-Fix-MurMurHash3-for-Big-endian.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a965ce751b8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/databases/iowow/files/0003-Fix-MurMurHash3-for-Big-endian.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,177 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 40ba6c0dfcc51b4fc76b70eae88e0e74426b097b Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 31 Jul 2023 13:45:53 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3/3] Fix MurMurHash3 for Big-endian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/utils/iwhmap.c  |  6 ++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/utils/murmur3.c | 56 +++++++++++++++++++++++++++------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 37 insertions(+), 25 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/utils/iwhmap.c src/utils/iwhmap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 07ae953..025fb81 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/utils/iwhmap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/utils/iwhmap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -109,13 +109,13 @@ IW_INLINE uint32_t _hash_uint64(uint64_t x) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ IW_INLINE uint32_t _hash_uint64_key(const void *key) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (sizeof(uintptr_t) >= sizeof(uint64_t)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #ifdef IW_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return _hash_uint64((uint64_t) key);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     uint64_t lv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     memcpy(&lv, key, sizeof(lv));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return _hash_uint64(lv);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ IW_INLINE uint32_t _hash_uint32_key(const void *key) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/utils/murmur3.c src/utils/murmur3.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c09bf73..c9da471 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/utils/murmur3.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/utils/murmur3.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7,7 +7,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "murmur3.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !defined(__x86_64__) || defined(IW_TESTS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(IW_64) || defined(IW_TESTS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ IW_INLINE uint32_t rotl32(uint32_t x, int8_t r) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return (x << r) | (x >> (32 - r));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -22,10 +22,28 @@ IW_INLINE uint64_t rotl64(uint64_t x, int8_t r) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define ROTL32(x, y) rotl32(x, y)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define ROTL64(x, y) rotl64(x, y)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++IW_INLINE uint32_t getblock32 (const uint32_t * p, size_t i)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef IW_BIGENDIAN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return p[i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return IW_SWAB32(p[i]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++IW_INLINE uint64_t getblock64 (const uint64_t * p, size_t i)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef IW_BIGENDIAN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return p[i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return IW_SWAB64(p[i]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static uint32_t seed_value = 0x2fa1bca;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Finalization mix - force all bits of a hash block to avalanche
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !defined(__x86_64__) || defined(IW_TESTS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(IW_64) || defined(IW_TESTS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ IW_INLINE uint32_t fmix32(uint32_t h) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   h ^= h >> 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -47,21 +65,20 @@ IW_INLINE uint64_t fmix64(uint64_t k) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return k;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !defined(__x86_64__) || defined(IW_TESTS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(IW_64) || defined(IW_TESTS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void murmur3_x86_32(const void *key, size_t len, uint32_t seed, void *out) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const uint8_t *data = (const uint8_t*) key;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const size_t nblocks = len / 4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   size_t i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t h1 = seed;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t c1 = 0xcc9e2d51;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t c2 = 0x1b873593;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const uint32_t *blocks = (const uint32_t*) (data + nblocks * 4);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (i = -nblocks; i; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    uint32_t k1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    memcpy(&k1, blocks + i, sizeof(k1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32_t k1 = getblock32(blocks, i);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     k1 *= c1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     k1 = ROTL32(k1, 15);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -87,8 +104,7 @@ void murmur3_x86_32(const void *key, size_t len, uint32_t seed, void *out) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       k1 *= c2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       h1 ^= k1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       /* fallthrough */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   h1 ^= (uint32_t) len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   h1 = fmix32(h1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -96,9 +112,9 @@ void murmur3_x86_32(const void *key, size_t len, uint32_t seed, void *out) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void murmur3_x86_128(const void *key, const size_t len, uint32_t seed, void *out) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  size_t i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const uint8_t *data = (const uint8_t*) key;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const size_t nblocks = len / 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t h1 = seed;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t h2 = seed;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -113,12 +129,10 @@ void murmur3_x86_128(const void *key, const size_t len, uint32_t seed, void *out
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const uint32_t *blocks = (const uint32_t*) (data + nblocks * 16);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (i = -nblocks; i; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    uint32_t k1, k2, k3, k4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    memcpy(&k1, blocks + i * 4 + 0, sizeof(k1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    memcpy(&k2, blocks + i * 4 + 1, sizeof(k2));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    memcpy(&k3, blocks + i * 4 + 2, sizeof(k3));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    memcpy(&k4, blocks + i * 4 + 3, sizeof(k4));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32_t k1 = getblock32(blocks, i * 4 + 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32_t k2 = getblock32(blocks, i * 4 + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32_t k3 = getblock32(blocks, i * 4 + 2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32_t k4 = getblock32(blocks, i * 4 + 3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     k1 *= c1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     k1 = ROTL32(k1, 15);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -257,6 +271,7 @@ void murmur3_x64_128(const void *key, const size_t len, const uint32_t seed, voi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const uint8_t *data = (const uint8_t*) key;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const size_t nblocks = len / 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   size_t i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint64_t h1 = seed;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint64_t h2 = seed;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint64_t c1 = 0x87c37b91114253d5LLU;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -264,10 +279,8 @@ void murmur3_x64_128(const void *key, const size_t len, const uint32_t seed, voi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const uint64_t *blocks = (const uint64_t*) (data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (i = 0; i < nblocks; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    uint64_t k1, k2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    memcpy(&k1, blocks + i * 2 + 0, sizeof(k1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    memcpy(&k2, blocks + i * 2 + 1, sizeof(k2));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint64_t k1 = getblock64(blocks, i * 2 + 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint64_t k2 = getblock64(blocks, i * 2 + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     k1 *= c1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     k1 = ROTL64(k1, 31);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -342,8 +355,7 @@ void murmur3_x64_128(const void *key, const size_t len, const uint32_t seed, voi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       k1 *= c2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       h1 ^= k1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       /* fallthrough */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   h1 ^= (uint64_t) len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   h2 ^= (uint64_t) len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -358,7 +370,7 @@ void murmur3_x64_128(const void *key, const size_t len, const uint32_t seed, voi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t murmur3(const char *keyptr, size_t len) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef __x86_64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef IW_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint64_t hash[2];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   murmur3_x64_128(keyptr, len, seed_value, hash);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return (uint32_t) hash[1];
</span></pre><pre style='margin:0'>

</pre>