murmurhash3 0.1.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/murmurhash3/murmur3.c +44 -25
- data/lib/murmurhash3/version.rb +1 -1
- metadata +3 -2
data/ext/murmurhash3/murmur3.c
CHANGED
@@ -293,12 +293,16 @@ rb_fmix64(VALUE self, VALUE integer)
|
|
293
293
|
static VALUE
|
294
294
|
rb_murmur3_32_str_hash(int argc, VALUE* argv, VALUE self)
|
295
295
|
{
|
296
|
-
VALUE rstr
|
296
|
+
VALUE rstr;
|
297
297
|
uint32_t result;
|
298
298
|
|
299
|
-
|
299
|
+
if (argc == 0 || argc > 2) {
|
300
|
+
rb_raise(rb_eArgError, "accept 1 or 2 arguments: (string[, seed])");
|
301
|
+
}
|
302
|
+
rstr = argv[0];
|
303
|
+
StringValue(rstr);
|
300
304
|
|
301
|
-
result = MurmurHash3_x86_32(RSTRING_PTR(rstr), RSTRING_LEN(rstr), argc == 1 ? 0 : NUM2UINT(
|
305
|
+
result = MurmurHash3_x86_32(RSTRING_PTR(rstr), RSTRING_LEN(rstr), argc == 1 ? 0 : NUM2UINT(argv[1]));
|
302
306
|
|
303
307
|
return UINT2NUM(result);
|
304
308
|
}
|
@@ -306,14 +310,16 @@ rb_murmur3_32_str_hash(int argc, VALUE* argv, VALUE self)
|
|
306
310
|
static VALUE
|
307
311
|
rb_murmur3_32_int32_hash(int argc, VALUE* argv, VALUE self)
|
308
312
|
{
|
309
|
-
VALUE rint
|
313
|
+
VALUE rint;
|
310
314
|
uint32_t _int;
|
311
315
|
uint32_t result;
|
312
316
|
|
313
|
-
|
314
|
-
|
317
|
+
if (argc == 0 || argc > 2) {
|
318
|
+
rb_raise(rb_eArgError, "accept 1 or 2 arguments: (int32[, seed])");
|
319
|
+
}
|
320
|
+
_int = NUM2UINT(argv[0]);
|
315
321
|
|
316
|
-
result = MurmurHash3_x86_32(&_int, 4, argc == 1 ? 0 : NUM2UINT(
|
322
|
+
result = MurmurHash3_x86_32(&_int, 4, argc == 1 ? 0 : NUM2UINT(argv[1]));
|
317
323
|
|
318
324
|
return UINT2NUM(result);
|
319
325
|
}
|
@@ -321,18 +327,20 @@ rb_murmur3_32_int32_hash(int argc, VALUE* argv, VALUE self)
|
|
321
327
|
static VALUE
|
322
328
|
rb_murmur3_32_int64_hash(int argc, VALUE* argv, VALUE self)
|
323
329
|
{
|
324
|
-
VALUE rint
|
330
|
+
VALUE rint;
|
325
331
|
uint64_t _int;
|
326
332
|
uint32_t result;
|
327
333
|
|
328
|
-
|
334
|
+
if (argc == 0 || argc > 2) {
|
335
|
+
rb_raise(rb_eArgError, "accept 1 or 2 arguments: (int64[, seed])");
|
336
|
+
}
|
329
337
|
#if SIZEOF_LONG == 8
|
330
|
-
_int = NUM2ULONG(
|
338
|
+
_int = NUM2ULONG(argv[0]);
|
331
339
|
#else
|
332
|
-
_int = NUM2ULL(
|
340
|
+
_int = NUM2ULL(argv[0]);
|
333
341
|
#endif
|
334
342
|
|
335
|
-
result = MurmurHash3_x86_32(&_int, 8, argc == 1 ? 0 : NUM2UINT(
|
343
|
+
result = MurmurHash3_x86_32(&_int, 8, argc == 1 ? 0 : NUM2UINT(argv[1]));
|
336
344
|
|
337
345
|
return UINT2NUM(result);
|
338
346
|
}
|
@@ -340,7 +348,6 @@ rb_murmur3_32_int64_hash(int argc, VALUE* argv, VALUE self)
|
|
340
348
|
#define PREPARE_128_BIT() \
|
341
349
|
VALUE rstr, rseed, ar_result; \
|
342
350
|
uint32_t result[4]; \
|
343
|
-
rb_scan_args(argc, argv, "11", &rstr, &rseed)
|
344
351
|
|
345
352
|
#define SWAP_128_BIT() do { \
|
346
353
|
uint32_t tmp; \
|
@@ -363,9 +370,16 @@ rb_murmur3_32_int64_hash(int argc, VALUE* argv, VALUE self)
|
|
363
370
|
static VALUE
|
364
371
|
rb_murmur3_128_str_hash(int argc, VALUE* argv, VALUE self)
|
365
372
|
{
|
366
|
-
|
373
|
+
VALUE rstr, ar_result;
|
374
|
+
uint32_t result[4];
|
375
|
+
|
376
|
+
if (argc == 0 || argc > 2) {
|
377
|
+
rb_raise(rb_eArgError, "accept 1 or 2 arguments: (string[, seed])");
|
378
|
+
}
|
379
|
+
rstr = argv[0];
|
380
|
+
StringValue(rstr);
|
367
381
|
|
368
|
-
MurmurHash3_x64_128(RSTRING_PTR(rstr), RSTRING_LEN(rstr), argc == 1 ? 0 : NUM2UINT(
|
382
|
+
MurmurHash3_x64_128(RSTRING_PTR(rstr), RSTRING_LEN(rstr), argc == 1 ? 0 : NUM2UINT(argv[1]), result);
|
369
383
|
#if WORDS_BIGENDIAN
|
370
384
|
SWAP_128_BIT();
|
371
385
|
#endif
|
@@ -375,12 +389,14 @@ rb_murmur3_128_str_hash(int argc, VALUE* argv, VALUE self)
|
|
375
389
|
static VALUE
|
376
390
|
rb_murmur3_128_int32_hash(int argc, VALUE* argv, VALUE self)
|
377
391
|
{
|
378
|
-
|
392
|
+
VALUE ar_result;
|
393
|
+
uint32_t result[4], _int;
|
379
394
|
|
380
|
-
{
|
381
|
-
|
382
|
-
MurmurHash3_x64_128(&_int, 4, argc == 1 ? 0 : NUM2UINT(rseed), result);
|
395
|
+
if (argc == 0 || argc > 2) {
|
396
|
+
rb_raise(rb_eArgError, "accept 1 or 2 arguments: (int32[, seed])");
|
383
397
|
}
|
398
|
+
_int = NUM2UINT(argv[0]);
|
399
|
+
MurmurHash3_x64_128(&_int, 4, argc == 1 ? 0 : NUM2UINT(argv[1]), result);
|
384
400
|
#if WORDS_BIGENDIAN
|
385
401
|
SWAP_128_BIT();
|
386
402
|
#endif
|
@@ -390,16 +406,19 @@ rb_murmur3_128_int32_hash(int argc, VALUE* argv, VALUE self)
|
|
390
406
|
static VALUE
|
391
407
|
rb_murmur3_128_int64_hash(int argc, VALUE* argv, VALUE self)
|
392
408
|
{
|
393
|
-
|
409
|
+
VALUE ar_result;
|
410
|
+
uint32_t result[4];
|
411
|
+
uint64_t _int;
|
394
412
|
|
395
|
-
{
|
413
|
+
if (argc == 0 || argc > 2) {
|
414
|
+
rb_raise(rb_eArgError, "accept 1 or 2 arguments: (int64[, seed])");
|
415
|
+
}
|
396
416
|
#if SIZEOF_LONG == 8
|
397
|
-
|
417
|
+
_int = NUM2ULONG(argv[0]);
|
398
418
|
#else
|
399
|
-
|
419
|
+
_int = NUM2ULL(argv[0]);
|
400
420
|
#endif
|
401
|
-
|
402
|
-
}
|
421
|
+
MurmurHash3_x64_128(&_int, 8, argc == 1 ? 0 : NUM2UINT(argv[1]), result);
|
403
422
|
#if WORDS_BIGENDIAN
|
404
423
|
SWAP_128_BIT();
|
405
424
|
#endif
|
data/lib/murmurhash3/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: murmurhash3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-06 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: implementation of murmur3 hashing function
|
15
15
|
email:
|
@@ -52,3 +52,4 @@ specification_version: 3
|
|
52
52
|
summary: implements mumur3 hashing function
|
53
53
|
test_files:
|
54
54
|
- test/test_murmur.rb
|
55
|
+
has_rdoc:
|