tdb.gemspec: fix license field name
[ruby-tdb.git] / ext / tdb / hash_functions.c
blobaab2fc548c9e344bdb7dd7488008263038a9f209
1 #include "rbtdb.h"
3 #define HASH_FN(fn) \
4 static VALUE fn(VALUE self,VALUE str) \
5 { \
6 TDB_DATA data; \
7 StringValue(str); \
8 data.dptr = (unsigned char *)RSTRING_PTR(str); \
9 data.dsize = RSTRING_LEN(str); \
10 return UINT2NUM(rbtdb_##fn(&data)); \
13 HASH_FN(siphash24)
14 HASH_FN(murmur1)
15 HASH_FN(murmur1_aligned)
16 HASH_FN(murmur2)
17 HASH_FN(murmur2a)
18 HASH_FN(murmur2_neutral)
19 HASH_FN(murmur2_aligned)
20 HASH_FN(murmur3a)
21 HASH_FN(murmur3f)
22 HASH_FN(fnv1a)
23 HASH_FN(djb2)
24 HASH_FN(djb3)
25 HASH_FN(jenkins_lookup3)
27 #define HASH_M(fn) rb_define_method(mHashFunctions, "tdb_hash_"#fn, fn, 1)
28 void rbtdb_init_tdb_hash_functions(void)
30 VALUE cTDB = rb_const_get(rb_cObject, rb_intern("TDB"));
31 VALUE mHashFunctions = rb_define_module_under(cTDB, "HashFunctions");
33 HASH_M(siphash24);
34 HASH_M(murmur1);
35 HASH_M(murmur1_aligned);
36 HASH_M(murmur2);
37 HASH_M(murmur2a);
38 HASH_M(murmur2_neutral);
39 HASH_M(murmur2_aligned);
40 HASH_M(murmur3a);
41 HASH_M(murmur3f);
42 HASH_M(fnv1a);
43 HASH_M(djb2);
44 HASH_M(djb3);
45 HASH_M(jenkins_lookup3);