(root)/
glib-2.79.0/
girepository/
cmph/
djb2_hash.c
       1  #include "djb2_hash.h"
       2  #include <stdlib.h>
       3  
       4  djb2_state_t *djb2_state_new()
       5  {
       6  	djb2_state_t *state = (djb2_state_t *)malloc(sizeof(djb2_state_t));
       7  	state->hashfunc = CMPH_HASH_DJB2;
       8  	return state;
       9  }
      10  
      11  void djb2_state_destroy(djb2_state_t *state)
      12  {
      13  	free(state);
      14  }
      15  
      16  cmph_uint32 djb2_hash(djb2_state_t *state, const char *k, cmph_uint32 keylen)
      17  {
      18  	register cmph_uint32 hash = 5381;
      19  	const unsigned char *ptr = (unsigned char *)k;
      20  	cmph_uint32 i = 0;
      21  	while (i < keylen) 
      22  	{
      23  		hash = hash*33 ^ *ptr;
      24  		++ptr, ++i;
      25  	}
      26  	return hash;
      27  }
      28  
      29  
      30  void djb2_state_dump(djb2_state_t *state, char **buf, cmph_uint32 *buflen)
      31  {
      32  	*buf = NULL;
      33  	*buflen = 0;
      34  	return;
      35  }
      36  
      37  djb2_state_t *djb2_state_copy(djb2_state_t *src_state)
      38  {
      39  	djb2_state_t *dest_state = (djb2_state_t *)malloc(sizeof(djb2_state_t));
      40  	dest_state->hashfunc = src_state->hashfunc;
      41  	return dest_state;
      42  }
      43  
      44  djb2_state_t *djb2_state_load(const char *buf, cmph_uint32 buflen)
      45  {
      46  	djb2_state_t *state = (djb2_state_t *)malloc(sizeof(djb2_state_t));
      47  	state->hashfunc = CMPH_HASH_DJB2;
      48  	return state;
      49  }