ext/digest/murmurhash/murmurhash2a.c in digest-murmurhash-0.3.0 vs ext/digest/murmurhash/murmurhash2a.c in digest-murmurhash-1.0.0
- old
+ new
@@ -7,84 +7,63 @@
#define mmix(h,k) { k *= m; k ^= k >> r; k *= m; h *= m; h ^= k; }
static uint32_t
murmur_hash_process2a(const char *key, uint32_t length, uint32_t seed)
{
- const uint32_t m = MURMURHASH_MAGIC;
- const uint8_t r = 24;
- uint32_t h, k, t, l;
- const unsigned char *data = (const unsigned char *) key;
+ const uint32_t m = MURMURHASH_MAGIC;
+ const uint8_t r = 24;
+ uint32_t h, k, t, l;
+ const unsigned char *data = (const unsigned char *) key;
- l = length;
- h = seed;
+ l = length;
+ h = seed;
- while (4 <= length) {
- k = *(uint32_t*)data;
- mmix(h,k);
- data += 4;
- length -= 4;
- }
+ while (4 <= length) {
+ k = *(uint32_t*)data;
+ mmix(h,k);
+ data += 4;
+ length -= 4;
+ }
- t = 0;
- switch (length) {
- case 3: t ^= data[2] << 16;
- case 2: t ^= data[1] << 8;
- case 1: t ^= data[0];
- }
+ t = 0;
+ switch (length) {
+ case 3: t ^= data[2] << 16;
+ case 2: t ^= data[1] << 8;
+ case 1: t ^= data[0];
+ }
- mmix(h,t);
- mmix(h,l);
+ mmix(h,t);
+ mmix(h,l);
- h ^= h >> 13;
- h *= m;
- h ^= h >> 15;
+ h ^= h >> 13;
+ h *= m;
+ h ^= h >> 15;
- return h;
+ return h;
}
-static uint32_t
-_murmur2a_finish(VALUE self)
-{
- const char *seed = RSTRING_PTR(murmur_seed_get32(self));
- MURMURHASH(self, ptr);
- return murmur_hash_process2a(ptr->buffer, ptr->p - ptr->buffer, *(uint32_t*)seed);
-}
-
VALUE
murmur2a_finish(VALUE self)
{
- uint8_t digest[4];
- uint64_t h;
+ uint8_t digest[4];
+ uint64_t h;
- h = _murmur2a_finish(self);
- ASSINE_BY_ENDIAN_32(digest, h);
- return rb_str_new((const char*) digest, 4);
+ h = _murmur_finish32(self, murmur_hash_process2a);
+ assign_by_endian_32(digest, h);
+ return rb_str_new((const char*) digest, 4);
}
VALUE
-murmur2a_to_i(VALUE self)
-{
- return ULONG2NUM(_murmur2a_finish(self));
-}
-
-VALUE
murmur2a_s_digest(int argc, VALUE *argv, VALUE klass)
{
- uint8_t digest[4];
- uint32_t h;
- h = _murmur_s_digest32(argc, argv, klass, murmur_hash_process2a);
- ASSINE_BY_ENDIAN_32(digest, h);
- return rb_str_new((const char*) digest, 4);
+ uint8_t digest[4];
+ uint32_t h;
+ h = _murmur_s_digest32(argc, argv, klass, murmur_hash_process2a);
+ assign_by_endian_32(digest, h);
+ return rb_str_new((const char*) digest, 4);
}
VALUE
-murmur2a_s_hexdigest(int argc, VALUE *argv, VALUE klass)
-{
- return hexencode_str_new(murmur2a_s_digest(argc, argv, klass));
-}
-
-VALUE
murmur2a_s_rawdigest(int argc, VALUE *argv, VALUE klass)
{
- return ULL2NUM(_murmur_s_digest32(argc, argv, klass, murmur_hash_process2a));
+ return ULL2NUM(_murmur_s_digest32(argc, argv, klass, murmur_hash_process2a));
}
-