1748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/*- 2748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * Written by J.T. Conklin <jtc@netbsd.org> 3748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * Public domain. 4748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * 5748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ 6748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * $FreeBSD: release/9.0.0/include/search.h 105250 2002-10-16 14:29:23Z robert $ 7748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat */ 8748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef _SEARCH_H_ 10748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define _SEARCH_H_ 11748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 12748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef _MSC_FULL_VER 13748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <sys/cdefs.h> 14748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* _MSC_FULL_VER */ 15748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if !defined(__BEGIN_DECLS) || !defined(__END_DECLS) 16748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(__cplusplus) 17748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define __BEGIN_DECLS extern "C" { 18748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define __END_DECLS }; 19748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else /* !__cplusplus */ 20748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define __BEGIN_DECLS 21748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define __END_DECLS 22748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* !__cplusplus */ 23748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* !__BEGIN_DECLS || !__END_DECLS */ 24748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <sys/types.h> 25748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 26748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattypedef enum { 27748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat preorder, 28748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat postorder, 29748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat endorder, 30748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat leaf 31748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} VISIT; 32748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 33748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef _SEARCH_PRIVATE 34748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattypedef struct node { 35748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *key; 36748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat struct node *llink, *rlink; 37748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} node_t; 38748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 39748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 40748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat__BEGIN_DECLS 41748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid *tdelete(const void * __restrict, void ** __restrict, 42748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int (*)(const void *, const void *)); 43748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid *tfind(const void *, void * const *, 44748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int (*)(const void *, const void *)); 45748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid *tsearch(const void *, void **, int (*)(const void *, const void *)); 46748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid twalk(const void *, void (*)(const void *, VISIT, int)); 47748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid tdestroy(void *, void (*)(void *)); 48748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat__END_DECLS 49748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 50748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* !_SEARCH_H_ */ 51