Sha256: 2fc7b8f39eaf4a5fc9aa3e3df54088d68ea69fd630c95d960a8b65772b3c6c32

Contents?: true

Size: 715 Bytes

Versions: 2

Compression:

Stored size: 715 Bytes

Contents

/* HashKit
 * Copyright (C) 2009 Brian Aker
 * All rights reserved.
 *
 * Use and distribution licensed under the BSD license.  See
 * the COPYING file in the parent directory for full text.
 */

/*
  This has is Jenkin's "One at A time Hash".
http://en.wikipedia.org/wiki/Jenkins_hash_function
*/

#include <libhashkit/common.h>

uint32_t hashkit_one_at_a_time(const char *key, size_t key_length, void *context)
{
  const char *ptr= key;
  uint32_t value= 0;
  (void)context;

  while (key_length--)
  {
    uint32_t val= (uint32_t) *ptr++;
    value += val;
    value += (value << 10);
    value ^= (value >> 6);
  }
  value += (value << 3);
  value ^= (value >> 11);
  value += (value << 15);

  return value;
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
couchbase-memcached-1.2.9 ext/libmemcached-0.50/libhashkit/one_at_a_time.cc
couchbase-memcached-1.2.8 ext/libmemcached-0.50/libhashkit/one_at_a_time.cc