diff options
author | alfred <alfred@FreeBSD.org> | 2000-07-01 06:55:11 +0000 |
---|---|---|
committer | alfred <alfred@FreeBSD.org> | 2000-07-01 06:55:11 +0000 |
commit | 5a1e6c960d9a13a4078c249a02eea6c731abd3c5 (patch) | |
tree | ac4858db9bf0905af84e0d5b7542d95bf1cd9e17 /include/search.h | |
parent | 2cd7c167097741abca2a3cd42f54cd066b988858 (diff) | |
download | FreeBSD-src-5a1e6c960d9a13a4078c249a02eea6c731abd3c5.zip FreeBSD-src-5a1e6c960d9a13a4078c249a02eea6c731abd3c5.tar.gz |
bring in binary search tree code.
Obtained from: NetBSD
Diffstat (limited to 'include/search.h')
-rw-r--r-- | include/search.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/include/search.h b/include/search.h new file mode 100644 index 0000000..c72b16f --- /dev/null +++ b/include/search.h @@ -0,0 +1,66 @@ +/* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ */ +/* $FreeBSD$ */ + +/* + * Written by J.T. Conklin <jtc@netbsd.org> + * Public domain. + */ + +#ifndef _SEARCH_H_ +#define _SEARCH_H_ + +#include <sys/cdefs.h> +#include <machine/ansi.h> + +#ifdef _BSD_SIZE_T_ +typedef _BSD_SIZE_T_ size_t; +#undef _BSD_SIZE_T_ +#endif + +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 + +__BEGIN_DECLS +void *bsearch __P((const void *, const void *, size_t, size_t, + int (*)(const void *, const void *))); +int hcreate __P((size_t)); +void hdestroy __P((void)); +ENTRY *hsearch __P((ENTRY, ACTION)); + +void *lfind __P((const void *, const void *, size_t *, size_t, + int (*)(const void *, const void *))); +void *lsearch __P((const void *, const void *, size_t *, size_t, + int (*)(const void *, const void *))); +void insque __P((void *, void *)); +void remque __P((void *)); + +void *tdelete __P((const void *, void **, + int (*)(const void *, const void *))); +void *tfind __P((const void *, void **, + int (*)(const void *, const void *))); +void *tsearch __P((const void *, void **, + int (*)(const void *, const void *))); +void twalk __P((const void *, void (*)(const void *, VISIT, int))); +__END_DECLS + +#endif /* !_SEARCH_H_ */ |