1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| /* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ */
| /* $FreeBSD: src/include/search.h,v 1.4 2002/03/23 17:24:53 imp Exp $ */
|
| /*
| * Written by J.T. Conklin <jtc@netbsd.org>
| * Public domain.
| */
|
| #ifndef _SEARCH_H_
| #define _SEARCH_H_
|
| #include <sys/cdefs.h>
| #include <machine/ansi.h>
| #include <sys/types.h>
|
| typedef struct entry {
| char *key;
| void *data;
| } ENTRY;
|
| typedef enum {
| FIND, ENTER
| } ACTION;
|
| typedef enum {
| preorder,
| postorder,
| endorder,
| leaf
| } VISIT;
|
| #ifdef _SEARCH_PRIVATE
| typedef struct node {
| char *key;
| struct node *llink, *rlink;
| } node_t;
| #endif
|
| struct hsearch_data
| {
| struct internal_head *htable;
| size_t htablesize;
| };
|
| __BEGIN_DECLS
| int hcreate(size_t);
| void hdestroy(void);
| ENTRY *hsearch(ENTRY, ACTION);
| int hcreate_r(size_t, struct hsearch_data *);
| void hdestroy_r(struct hsearch_data *);
| int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
| void *tdelete(const void *, void **, int (*)(const void *, const void *));
| void tdestroy (void *, void (*)(void *));
| void *tfind(const void *, void **, int (*)(const void *, const void *));
| void *tsearch(const void *, void **, int (*)(const void *, const void *));
| void twalk(const void *, void (*)(const void *, VISIT, int));
| __END_DECLS
|
| #endif /* !_SEARCH_H_ */
|
|