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_ */ |