]>
Commit | Line | Data |
---|---|---|
1 | #ifndef _STRHASH_H_INCLUDE | |
2 | #define _STRHASH_H_INCLUDE | |
3 | ||
4 | /* $FreeBSD: /repoman/r/ncvs/src/include/strhash.h,v 1.3 1999/08/28 04:59:30 peter Exp $ */ | |
5 | ||
6 | /* | |
7 | * | |
8 | * Copyright 1990 | |
9 | * Terry Jones & Jordan Hubbard | |
10 | * | |
11 | * PCS Computer Systeme, GmbH. | |
12 | * Munich, West Germany | |
13 | * | |
14 | * | |
15 | * All rights reserved. | |
16 | * | |
17 | * This is unsupported software and is subject to change without notice. | |
18 | * the author makes no representations about the suitability of this software | |
19 | * for any purpose. It is supplied "as is" without express or implied | |
20 | * warranty. | |
21 | * | |
22 | * Permission to use, copy, modify, and distribute this software and its | |
23 | * documentation for any purpose and without fee is hereby granted, provided | |
24 | * that the above copyright notice appear in all copies and that both that | |
25 | * copyright notice and this permission notice appear in supporting | |
26 | * documentation, and that the name of the author not be used in | |
27 | * advertising or publicity pertaining to distribution of the software | |
28 | * without specific, written prior permission. | |
29 | * | |
30 | */ | |
31 | ||
32 | /* | |
33 | * This is the definition file for hash.c. The plunderer from down-under | |
34 | * did the code, I just helped define the spec. That's why his name gets | |
35 | * to go first. | |
36 | */ | |
37 | ||
38 | #define HASH_SZ 97 | |
39 | ||
40 | typedef struct _node { | |
41 | char *key; | |
42 | void *data; | |
43 | struct _node *next; | |
44 | } hash_node; | |
45 | ||
46 | typedef struct { | |
47 | int size; | |
48 | hash_node **buckets; | |
49 | } hash_table; | |
50 | ||
51 | #include <sys/cdefs.h> | |
52 | ||
53 | __BEGIN_DECLS | |
54 | hash_table *hash_create(int size); | |
55 | void hash_destroy(hash_table *table, char *key, | |
56 | void (*nukefunc)(char *k, void *d)); | |
57 | void *hash_search(hash_table *table, char *key, void *datum, | |
58 | void (*replace_func)(void *d)); | |
59 | void hash_traverse(hash_table *table, | |
60 | int (*func)(char *k, void *d, void *arg), void *arg); | |
61 | void hash_purge(hash_table *table, void (*purge_func)(char *k, void *d)); | |
62 | ||
63 | #ifdef HASH_STATS | |
64 | extern void hash_stats(); | |
65 | #endif | |
66 | __END_DECLS | |
67 | ||
68 | #endif /* _STRHASH_H_INCLUDE */ |