diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-09-24 18:41:07 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-09-24 18:41:07 -0700 |
commit | f2a8bdc4c3bd88cb6a9ff85c4f2c43e9b9f77b97 (patch) | |
tree | 172b11e658bf266a001050bf90a029c36ac97bd2 /system/include/libc/search.h | |
parent | 1c8b4752414132e27abc608dda7db8dc0268f73a (diff) |
reorganize system/include
Diffstat (limited to 'system/include/libc/search.h')
-rw-r--r-- | system/include/libc/search.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/system/include/libc/search.h b/system/include/libc/search.h new file mode 100644 index 00000000..c78ce184 --- /dev/null +++ b/system/include/libc/search.h @@ -0,0 +1,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_ */ |