1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| | #include "rbtdb.h"
#define HASH_FN(fn) \
static VALUE fn(VALUE self,VALUE str) \
{ \
TDB_DATA data; \
StringValue(str); \
data.dptr = (unsigned char *)RSTRING_PTR(str); \
data.dsize = RSTRING_LEN(str); \
return UINT2NUM(rbtdb_##fn(&data)); \
}
HASH_FN(siphash24)
HASH_FN(murmur1)
HASH_FN(murmur1_aligned)
HASH_FN(murmur2)
HASH_FN(murmur2a)
HASH_FN(murmur2_neutral)
HASH_FN(murmur2_aligned)
HASH_FN(murmur3a)
HASH_FN(murmur3f)
HASH_FN(fnv1a)
HASH_FN(djb2)
HASH_FN(djb3)
HASH_FN(jenkins_lookup3)
#define HASH_M(fn) rb_define_method(mHashFunctions, "tdb_hash_"#fn, fn, 1)
void rbtdb_init_tdb_hash_functions(void)
{
VALUE cTDB = rb_const_get(rb_cObject, rb_intern("TDB"));
VALUE mHashFunctions = rb_define_module_under(cTDB, "HashFunctions");
HASH_M(siphash24);
HASH_M(murmur1);
HASH_M(murmur1_aligned);
HASH_M(murmur2);
HASH_M(murmur2a);
HASH_M(murmur2_neutral);
HASH_M(murmur2_aligned);
HASH_M(murmur3a);
HASH_M(murmur3f);
HASH_M(fnv1a);
HASH_M(djb2);
HASH_M(djb3);
HASH_M(jenkins_lookup3);
}
|