NAME
search.h — search
tables
SYNOPSIS
DESCRIPTION
The <search.h> header shall define the ENTRY type for structure entry which shall include the following members:
char *key void *data
and shall define ACTION and VISIT as enumeration data types through type definitions as follows:
enum { FIND, ENTER } ACTION;
enum { preorder, postorder, endorder, leaf } VISIT;
The <search.h> header shall define the size_t type as described in <sys/types.h>.
The <search.h> header shall define via typedef the posix_tnode type as an alias for void.
The following shall be declared as functions and may also be defined as macros. Function prototypes shall be provided.
int hcreate(size_t);
void hdestroy(void);
ENTRY *hsearch(ENTRY, ACTION);
void insque(void *, void *);
void *lfind(const void *, const void *, size_t *,
size_t, int (*)(const void *, const void *));
void *lsearch(const void *, void *, size_t *,
size_t, int (*)(const void *, const void *));
void remque(void *);
void *tdelete(const void *restrict, posix_tnode **restrict,
int(*)(const void *, const void *));
posix_tnode *tfind(const void *, posix_tnode *const *,
int(*)(const void *, const void *));
posix_tnode *tsearch(const void *, posix_tnode **,
int(*)(const void *, const void *));
void twalk(const posix_tnode *,
void (*)(const posix_tnode *, VISIT, int));
APPLICATION USAGE
None.
RATIONALE
Earlier versions of this standard explicitly used void for both node and key references where this version now uses posix_tnode for nodes and keeps void in the text referring only to keys. In order to preserve backwards compatibility, this version defines posix_tnode as an alias for void. The change was made to make the function prototypes more easily understandable.
FUTURE DIRECTIONS
None.
SEE ALSO
XSH hcreate(3), insque(3), lsearch(3), tdelete(3)
CHANGE HISTORY
First released in Issue 1. Derived from Issue 1 of the SVID.
Issue 6
The Open Group Corrigendum U021/6 is applied, updating the prototypes for tdelete(3) and tsearch(3).
The restrict keyword is added to the prototype for tdelete(3).
Issue 8
Austin Group Defect 1011 is applied, adding the posix_tnode type and changing some prototypes to use it instead of void.