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