hash.h
上传用户:liugui
上传日期:2007-01-04
资源大小:822k
文件大小:2k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. /*
  2.  * $Id: hash.h,v 1.3 1998/09/23 20:13:46 wessels Exp $
  3.  */
  4. typedef void HASHFREE(void *);
  5. typedef int HASHCMP(const void *, const void *);
  6. typedef unsigned int HASHHASH(const void *, unsigned int);
  7. typedef struct _hash_link hash_link;
  8. typedef struct _hash_table hash_table;
  9. struct _hash_link {
  10.     char *key;
  11.     hash_link *next;
  12. };
  13. struct _hash_table {
  14.     hash_link **buckets;
  15.     HASHCMP *cmp;
  16.     HASHHASH *hash;
  17.     unsigned int size;
  18.     unsigned int current_slot;
  19.     hash_link *next;
  20.     int count;
  21. };
  22. extern hash_table *hash_create(HASHCMP *, int, HASHHASH *);
  23. extern void hash_join(hash_table *, hash_link *);
  24. extern void hash_remove_link(hash_table *, hash_link *);
  25. extern int hashPrime(int n);
  26. extern void *hash_lookup(hash_table *, const void *);
  27. extern void hash_first(hash_table *);
  28. extern void *hash_next(hash_table *);
  29. extern void hash_last(hash_table *);
  30. extern hash_link *hash_get_bucket(hash_table *, unsigned int);
  31. extern void hashFreeMemory(hash_table *);
  32. extern void hashFreeItems(hash_table *, HASHFREE *);
  33. extern HASHHASH hash_string;
  34. extern HASHHASH hash4;
  35. /*
  36.  *  Here are some good prime number choices.  It's important not to
  37.  *  choose a prime number that is too close to exact powers of 2.
  38.  *
  39.  *  HASH_SIZE 103               // prime number < 128
  40.  *  HASH_SIZE 229               // prime number < 256
  41.  *  HASH_SIZE 467               // prime number < 512
  42.  *  HASH_SIZE 977               // prime number < 1024
  43.  *  HASH_SIZE 1979              // prime number < 2048
  44.  *  HASH_SIZE 4019              // prime number < 4096
  45.  *  HASH_SIZE 6037              // prime number < 6144
  46.  *  HASH_SIZE 7951              // prime number < 8192
  47.  *  HASH_SIZE 12149             // prime number < 12288
  48.  *  HASH_SIZE 16231             // prime number < 16384
  49.  *  HASH_SIZE 33493             // prime number < 32768
  50.  *  HASH_SIZE 65357             // prime number < 65536
  51.  */
  52. #define  DEFAULT_HASH_SIZE 7951 /* prime number < 8192 */