Postfix3.3.1
binhash.h
[詳解]
1 #ifndef _BINHASH_H_INCLUDED_
2 #define _BINHASH_H_INCLUDED_
3 
4 /*++
5 /* NAME
6 /* binhash 3h
7 /* SUMMARY
8 /* hash table manager
9 /* SYNOPSIS
10 /* #include <binhash.h>
11 /* DESCRIPTION
12 /* .nf
13 
14  /* Structure of one hash table entry. */
15 
16 typedef struct BINHASH_INFO {
17  void *key; /* lookup key */
18  ssize_t key_len; /* key length */
19  void *value; /* associated value */
20  struct BINHASH_INFO *next; /* colliding entry */
21  struct BINHASH_INFO *prev; /* colliding entry */
22 } BINHASH_INFO;
23 
24  /* Structure of one hash table. */
25 
26 typedef struct BINHASH {
27  ssize_t size; /* length of entries array */
28  ssize_t used; /* number of entries in table */
29  BINHASH_INFO **data; /* entries array, auto-resized */
30 } BINHASH;
31 
32 extern BINHASH *binhash_create(ssize_t);
33 extern BINHASH_INFO *binhash_enter(BINHASH *, const void *, ssize_t, void *);
34 extern BINHASH_INFO *binhash_locate(BINHASH *, const void *, ssize_t);
35 extern void *binhash_find(BINHASH *, const void *, ssize_t);
36 extern void binhash_delete(BINHASH *, const void *, ssize_t, void (*) (void *));
37 extern void binhash_free(BINHASH *, void (*) (void *));
38 extern void binhash_walk(BINHASH *, void (*) (BINHASH_INFO *, void *), void *);
40 
41 /* LICENSE
42 /* .ad
43 /* .fi
44 /* The Secure Mailer license must be distributed with this software.
45 /* AUTHOR(S)
46 /* Wietse Venema
47 /* IBM T.J. Watson Research
48 /* P.O. Box 704
49 /* Yorktown Heights, NY 10598, USA
50 /* CREATION DATE
51 /* Thu Feb 20 16:54:29 EST 1997
52 /* LAST MODIFICATION
53 /* %E% %U%
54 /* VERSION/RELEASE
55 /* %I%
56 /*--*/
57 
58 #endif
BINHASH * binhash_create(ssize_t)
Definition: binhash.c:175
BINHASH_INFO * binhash_locate(BINHASH *, const void *, ssize_t)
Definition: binhash.c:238
void binhash_free(BINHASH *, void(*)(void *))
Definition: binhash.c:279
void * value
Definition: binhash.h:19
void * key
Definition: binhash.h:17
ssize_t used
Definition: binhash.h:28
BINHASH_INFO ** binhash_list(BINHASH *)
Definition: binhash.c:319
ssize_t size
Definition: binhash.h:27
BINHASH_INFO ** data
Definition: binhash.h:29
struct BINHASH_INFO * prev
Definition: binhash.h:21
void * binhash_find(BINHASH *, const void *, ssize_t)
Definition: binhash.c:223
struct BINHASH_INFO * next
Definition: binhash.h:20
BINHASH_INFO * binhash_enter(BINHASH *, const void *, ssize_t, void *)
Definition: binhash.c:207
struct BINHASH BINHASH
struct BINHASH_INFO BINHASH_INFO
void binhash_delete(BINHASH *, const void *, ssize_t, void(*)(void *))
Definition: binhash.c:251
void binhash_walk(BINHASH *, void(*)(BINHASH_INFO *, void *), void *)
Definition: binhash.c:304
ssize_t key_len
Definition: binhash.h:18