]> git.saurik.com Git - apple/libc.git/blame_incremental - include/strhash.h
Libc-594.9.5.tar.gz
[apple/libc.git] / include / strhash.h
... / ...
CommitLineData
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
40typedef struct _node {
41 char *key;
42 void *data;
43 struct _node *next;
44} hash_node;
45
46typedef struct {
47 int size;
48 hash_node **buckets;
49} hash_table;
50
51#include <sys/cdefs.h>
52
53__BEGIN_DECLS
54hash_table *hash_create(int size);
55void hash_destroy(hash_table *table, char *key,
56 void (*nukefunc)(char *k, void *d));
57void *hash_search(hash_table *table, char *key, void *datum,
58 void (*replace_func)(void *d));
59void hash_traverse(hash_table *table,
60 int (*func)(char *k, void *d, void *arg), void *arg);
61void hash_purge(hash_table *table, void (*purge_func)(char *k, void *d));
62
63#ifdef HASH_STATS
64extern void hash_stats();
65#endif
66__END_DECLS
67
68#endif /* _STRHASH_H_INCLUDE */