Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1693 serge 1
/*	$NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $	*/
2
/* $FreeBSD: src/include/search.h,v 1.4 2002/03/23 17:24:53 imp Exp $ */
3
 
4
/*
5
 * Written by J.T. Conklin 
6
 * Public domain.
7
 */
8
 
9
#ifndef _SEARCH_H_
10
#define _SEARCH_H_
11
 
12
#include 
13
#include 
14
#include 
15
 
16
typedef struct entry {
17
	char *key;
18
	void *data;
19
} ENTRY;
20
 
21
typedef enum {
22
	FIND, ENTER
23
} ACTION;
24
 
25
typedef enum {
26
	preorder,
27
	postorder,
28
	endorder,
29
	leaf
30
} VISIT;
31
 
32
#ifdef _SEARCH_PRIVATE
33
typedef struct node {
34
	char         *key;
35
	struct node  *llink, *rlink;
36
} node_t;
37
#endif
38
 
39
struct hsearch_data
40
{
41
  struct internal_head *htable;
42
  size_t htablesize;
43
};
44
 
45
__BEGIN_DECLS
46
int	 hcreate(size_t);
47
void	 hdestroy(void);
48
ENTRY	*hsearch(ENTRY, ACTION);
49
int	 hcreate_r(size_t, struct hsearch_data *);
50
void	 hdestroy_r(struct hsearch_data *);
51
int	hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
52
void	*tdelete(const void *, void **, int (*)(const void *, const void *));
53
void	tdestroy (void *, void (*)(void *));
54
void	*tfind(const void *, void **, int (*)(const void *, const void *));
55
void	*tsearch(const void *, void **, int (*)(const void *, const void *));
56
void      twalk(const void *, void (*)(const void *, VISIT, int));
57
__END_DECLS
58
 
59
#endif /* !_SEARCH_H_ */