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 | |
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')
-rw-r--r-- | include/Makefile | 3 | ||||
-rw-r--r-- | include/search.h | 66 |
2 files changed, 68 insertions, 1 deletions
diff --git a/include/Makefile b/include/Makefile index 4cd856e..c6fd25e 100644 --- a/include/Makefile +++ b/include/Makefile @@ -14,7 +14,8 @@ FILES= a.out.h ar.h assert.h bitstring.h ctype.h db.h dirent.h disktab.h \ limits.h link.h locale.h malloc.h memory.h mpool.h \ ndbm.h netdb.h nl_types.h nlist.h objformat.h \ paths.h pthread.h pthread_np.h pwd.h \ - ranlib.h regex.h regexp.h resolv.h rune.h runetype.h setjmp.h sgtty.h \ + ranlib.h regex.h regexp.h resolv.h rune.h runetype.h \ + search.h setjmp.h sgtty.h \ signal.h stab.h stddef.h stdio.h stdlib.h string.h stringlist.h \ strings.h struct.h sysexits.h tar.h time.h timers.h \ ttyent.h unistd.h utime.h utmp.h vis.h 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_ */ |