/ include / strhash.h
strhash.h
 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 */