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

代理服务器

开发平台:

Unix_Linux

  1. #define  DEFAULT_HASH_SIZE 7951     
  2. typedef unsigned int HASHHASH(const void *, unsigned int);
  3. struct _hash_link {  
  4.     char *key;
  5.     struct _hash_link *next;
  6.     void *item;
  7. };
  8. typedef int HASHCMP(const void *, const void *);
  9. typedef struct _hash_link hash_link;
  10. struct _hash_table {
  11.     int valid;
  12.     hash_link **buckets;
  13.     HASHCMP *cmp;
  14.     HASHHASH *hash;
  15.     unsigned int size;
  16.     unsigned int current_slot;
  17.     hash_link *current_ptr;
  18. };  
  19. typedef struct _hash_table hash_table;
  20. extern int hash_links_allocated;
  21. extern int store_hash_buckets;        /* 0 */
  22. extern hash_table *store_table;       /* NULL */
  23. extern hash_table *hash_create(HASHCMP *, int, HASHHASH *);
  24. extern void hash_insert(hash_table *, const char *, void *);
  25. extern int hash_delete(hash_table *, const char *);
  26. int hash_delete_link(hash_table *, hash_link *);
  27. int hash_unlink(hash_table *,hash_link *, int);
  28. void hash_join(hash_table *, hash_link *);
  29. int hash_remove_link(hash_table *, hash_link *);
  30. hash_link *hash_lookup(hash_table *, const void *);
  31. hash_link *hash_first(hash_table *);
  32. hash_link *hash_next(hash_table *);
  33. hash_link *hash_get_bucket(hash_table *, unsigned int);
  34. void hashFreeMemory(hash_table *);
  35. HASHHASH hash_string;
  36. HASHHASH hash_url;
  37. HASHHASH hash4;