]>
Commit | Line | Data |
---|---|---|
9385eb3d A |
1 | /*- |
2 | * Written by J.T. Conklin <jtc@netbsd.org> | |
3 | * Public domain. | |
4 | * | |
5 | * $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ | |
6 | * $FreeBSD: src/include/search.h,v 1.10 2002/10/16 14:29:23 robert Exp $ | |
7 | */ | |
8 | ||
9 | #ifndef _SEARCH_H_ | |
10 | #define _SEARCH_H_ | |
11 | ||
12 | #include <sys/cdefs.h> | |
59e0d9fe A |
13 | #include <_types.h> |
14 | ||
3d9156a7 A |
15 | #ifndef _SIZE_T |
16 | #define _SIZE_T | |
17 | typedef __darwin_size_t size_t; | |
59e0d9fe | 18 | #endif |
9385eb3d A |
19 | |
20 | typedef struct entry { | |
21 | char *key; | |
22 | void *data; | |
23 | } ENTRY; | |
24 | ||
25 | typedef enum { | |
26 | FIND, ENTER | |
27 | } ACTION; | |
28 | ||
29 | typedef enum { | |
30 | preorder, | |
31 | postorder, | |
32 | endorder, | |
33 | leaf | |
34 | } VISIT; | |
35 | ||
36 | #ifdef _SEARCH_PRIVATE | |
37 | typedef struct node { | |
38 | char *key; | |
39 | struct node *llink, *rlink; | |
40 | } node_t; | |
41 | ||
42 | struct que_elem { | |
43 | struct que_elem *next; | |
44 | struct que_elem *prev; | |
45 | }; | |
46 | #endif | |
47 | ||
48 | __BEGIN_DECLS | |
49 | int hcreate(size_t); | |
50 | void hdestroy(void); | |
51 | ENTRY *hsearch(ENTRY, ACTION); | |
52 | void insque(void *, void *); | |
53 | void *lfind(const void *, const void *, size_t *, size_t, | |
54 | int (*)(const void *, const void *)); | |
55 | void *lsearch(const void *, void *, size_t *, size_t, | |
56 | int (*)(const void *, const void *)); | |
57 | void remque(void *); | |
58 | void *tdelete(const void * __restrict, void ** __restrict, | |
59 | int (*)(const void *, const void *)); | |
60 | void *tfind(const void *, void * const *, | |
61 | int (*)(const void *, const void *)); | |
62 | void *tsearch(const void *, void **, int (*)(const void *, const void *)); | |
63 | void twalk(const void *, void (*)(const void *, VISIT, int)); | |
64 | __END_DECLS | |
65 | ||
66 | #endif /* !_SEARCH_H_ */ |