src/hashkit: apply clang-format
[m6w6/libmemcached] / src / libhashkit / murmur3.cc
index f685a240358675244bc24cf9e5f905703c03c235..fa83b76b0af2f0041ef76f9069c6994850d22eec 100644 (file)
@@ -1,11 +1,17 @@
-//-----------------------------------------------------------------------------
-//MurmurHash3 was written by Austin Appleby, and is placed in the public
-//domain. The author hereby disclaims copyright to this source code.
-
-// Note - The x86 and x64 versions do _not_ produce the same results, as the
-// algorithms are optimized for their respective platforms. You can still
-// compile and run any of them on any platform, but your performance with the
-// non-native version will be less than optimal.
+/*
+    +--------------------------------------------------------------------+
+    | libmemcached - C/C++ Client Library for memcached                  |
+    +--------------------------------------------------------------------+
+    | Redistribution and use in source and binary forms, with or without |
+    | modification, are permitted under the terms of the BSD license.    |
+    | You should have received a copy of the license in a bundled file   |
+    | named LICENSE; in case you did not receive a copy you can review   |
+    | the terms online at: https://opensource.org/licenses/BSD-3-Clause  |
+    +--------------------------------------------------------------------+
+    | Copyright (c) 2006-2014 Brian Aker   https://datadifferential.com/ |
+    | Copyright (c) 2020 Michael Wallner   <mike@php.net>                |
+    +--------------------------------------------------------------------+
+*/
 
 #include "libhashkit/hashkitcon.h"
 
 // Platform-specific functions and macros
 
 #ifdef __GNUC__
-#define FORCE_INLINE __attribute__((always_inline)) inline
+#  define FORCE_INLINE __attribute__((always_inline)) inline
 #else
-#define FORCE_INLINE inline
+#  define FORCE_INLINE inline
 #endif
 
-static FORCE_INLINE uint32_t rotl32 ( uint32_t x, int8_t r )
-{
+static FORCE_INLINE uint32_t rotl32(uint32_t x, int8_t r) {
   return (x << r) | (x >> (32 - r));
 }
 
-#define        ROTL32(x,y)     rotl32(x,y)
+#define ROTL32(x, y) rotl32(x, y)
 
 //-----------------------------------------------------------------------------
 // Block read - if your platform needs to do endian-swapping or can only
@@ -33,7 +38,7 @@ static FORCE_INLINE uint32_t rotl32 ( uint32_t x, int8_t r )
 
 #include <cassert>
 #include <cstring>
-template <typename T>
+template<typename T>
 static inline T getblock(const T *blocks, int i) {
   T b;
   memcpy(&b, ((const uint8_t *) blocks) + i * sizeof(T), sizeof(T));
@@ -43,8 +48,7 @@ static inline T getblock(const T *blocks, int i) {
 //-----------------------------------------------------------------------------
 // Finalization mix - force all bits of a hash block to avalanche
 
-static FORCE_INLINE uint32_t fmix32 ( uint32_t h )
-{
+static FORCE_INLINE uint32_t fmix32(uint32_t h) {
   h ^= h >> 16;
   h *= 0x85ebca6b;
   h ^= h >> 13;
@@ -56,10 +60,8 @@ static FORCE_INLINE uint32_t fmix32 ( uint32_t h )
 
 //-----------------------------------------------------------------------------
 
-void MurmurHash3_x86_32 ( const void * key, int len,
-                          uint32_t seed, void * out )
-{
-  const uint8_t * data = (const uint8_t*)key;
+void MurmurHash3_x86_32(const void *key, int len, uint32_t seed, void *out) {
+  const uint8_t *data = (const uint8_t *) key;
   const int nblocks = len / 4;
   int i;
 
@@ -71,28 +73,27 @@ void MurmurHash3_x86_32 ( const void * key, int len,
   //----------
   // body
 
-  const uint32_t * blocks = (const uint32_t *)(data + nblocks*4);
+  const uint32_t *blocks = (const uint32_t *) (data + nblocks * 4);
 
-  for(i = -nblocks; i; i++)
-  {
-    uint32_t k1 = getblock(blocks,i);
+  for (i = -nblocks; i; i++) {
+    uint32_t k1 = getblock(blocks, i);
 #if WORDS_BIGENDIAN
     k1 = BYTESWAP_32(k1);
 #endif
 
     k1 *= c1;
-    k1 = ROTL32(k1,15);
+    k1 = ROTL32(k1, 15);
     k1 *= c2;
 
     h1 ^= k1;
-    h1 = ROTL32(h1,13);
-    h1 = h1*5+0xe6546b64;
+    h1 = ROTL32(h1, 13);
+    h1 = h1 * 5 + 0xe6546b64;
   }
 
   //----------
   // tail
 
-  const uint8_t * tail = (const uint8_t*)(data + nblocks*4);
+  const uint8_t *tail = (const uint8_t *) (data + nblocks * 4);
 
   uint32_t k1 = 0;
   memcpy(&k1, tail, len & 3);
@@ -101,7 +102,7 @@ void MurmurHash3_x86_32 ( const void * key, int len,
 #endif
 
   k1 *= c1;
-  k1 = ROTL32(k1,15);
+  k1 = ROTL32(k1, 15);
   k1 *= c2;
   h1 ^= k1;
 
@@ -112,5 +113,5 @@ void MurmurHash3_x86_32 ( const void * key, int len,
 
   h1 = fmix32(h1);
 
-  *(uint32_t*)out = h1;
+  *(uint32_t *) out = h1;
 }