xxhash 0.2.0 → 0.3.0
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.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/CHANGELOG.md +4 -0
- data/Rakefile +1 -0
- data/ext/xxhash/extconf.rb +2 -3
- data/ext/xxhash/libxxhash.c +545 -93
- data/ext/xxhash/libxxhash.h +56 -64
- data/ext/xxhash/xxhash.c +109 -0
- data/ext/xxhash/xxhash.h +18 -0
- data/lib/xxhash.rb +20 -4
- data/lib/xxhash/version.rb +1 -1
- data/test/xxhash_test.rb +32 -4
- data/xxhash.gemspec +2 -1
- metadata +13 -19
- data/ext/xxhash/xxhash.cc +0 -56
data/ext/xxhash/xxhash.cc
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
#include <ruby.h>
|
|
2
|
-
#include "libxxhash.h"
|
|
3
|
-
|
|
4
|
-
// Use this typedef to make the compiler happy when
|
|
5
|
-
// calling rb_define_method()
|
|
6
|
-
typedef VALUE (ruby_method)(...);
|
|
7
|
-
|
|
8
|
-
extern "C" VALUE xxhash_xxh32(VALUE mod, VALUE input, VALUE seed)
|
|
9
|
-
{
|
|
10
|
-
return ULL2NUM(XXH32(StringValuePtr(input), RSTRING_LEN(input), NUM2ULL(seed)));
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
extern "C" void xxhash_streaming_hash_free(void* state)
|
|
14
|
-
{
|
|
15
|
-
// Digest frees the memory.
|
|
16
|
-
(void) XXH32_digest(state);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
extern "C" VALUE xxhash_streaming_hash_new(VALUE klass, VALUE seed)
|
|
20
|
-
{
|
|
21
|
-
void* state = XXH32_init(NUM2ULL(seed));
|
|
22
|
-
return Data_Wrap_Struct(klass, 0, xxhash_streaming_hash_free, state);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
extern "C" VALUE xxhash_streaming_hash_update(VALUE self, VALUE data)
|
|
26
|
-
{
|
|
27
|
-
void* state;
|
|
28
|
-
Data_Get_Struct(self, void, state);
|
|
29
|
-
|
|
30
|
-
XXH32_update(state, StringValuePtr(data), RSTRING_LEN(data));
|
|
31
|
-
return Qnil;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
extern "C" VALUE xxhash_streaming_hash_digest(VALUE self)
|
|
35
|
-
{
|
|
36
|
-
void* state;
|
|
37
|
-
Data_Get_Struct(self, void, state);
|
|
38
|
-
|
|
39
|
-
// Do not free memory now.
|
|
40
|
-
return ULL2NUM(XXH32_intermediateDigest(state));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
extern "C" void Init_xxhash()
|
|
44
|
-
{
|
|
45
|
-
VALUE mXXhash = rb_define_module("XXhash");
|
|
46
|
-
VALUE mInternal = rb_define_module_under(mXXhash, "Internal");
|
|
47
|
-
|
|
48
|
-
rb_define_singleton_method(mInternal, "xxh32", (ruby_method*) &xxhash_xxh32, 2);
|
|
49
|
-
|
|
50
|
-
VALUE cStreamingHash = rb_define_class_under(mInternal, "StreamingHash", rb_cObject);
|
|
51
|
-
|
|
52
|
-
rb_define_singleton_method(cStreamingHash, "new", (ruby_method*) &xxhash_streaming_hash_new, 1);
|
|
53
|
-
rb_define_method(cStreamingHash, "update", (ruby_method*) &xxhash_streaming_hash_update, 1);
|
|
54
|
-
rb_define_method(cStreamingHash, "digest", (ruby_method*) &xxhash_streaming_hash_digest, 0);
|
|
55
|
-
rb_define_method(cStreamingHash, "intermediate_digest", (ruby_method*) &xxhash_streaming_hash_digest, 0);
|
|
56
|
-
}
|