From 58938c980f38a4581b4a0e8a780fffe7ac95bc93 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 26 Nov 2010 02:27:17 +0000 Subject: initial --- ext/tdb/djb.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 ext/tdb/djb.c (limited to 'ext/tdb/djb.c') diff --git a/ext/tdb/djb.c b/ext/tdb/djb.c new file mode 100644 index 0000000..83abe34 --- /dev/null +++ b/ext/tdb/djb.c @@ -0,0 +1,26 @@ +#include "rbtdb.h" + +unsigned int rbtdb_djb2(TDB_DATA *data) +{ + unsigned char *key = data->dptr; + size_t len = data->dsize; + unsigned int hash = 5381; + unsigned int i; + + for (i = 0; i < len; ++i) + hash = ((hash << 5) + hash) + key[i]; /* (hash*33) + key[i] */ + + return hash; +} +unsigned int rbtdb_djb3(TDB_DATA *data) +{ + unsigned char *key = data->dptr; + size_t len = data->dsize; + unsigned int hash = 5381; + unsigned int i; + + for (i = 0; i < len; ++i) + hash = ((hash << 5) + hash) ^ key[i]; /* (hash*33) ^ key[i] */ + + return hash; +} -- cgit v1.2.3-24-ge0c7