NAME

search.h — search tables

SYNOPSIS

[XSI] [Option Start] #include <search.h> [Option End]

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));

The following sections are informative.

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

<sys/types.h>

XSH hcreate , insque , lsearch , tdelete

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() and tsearch().

The restrict keyword is added to the prototype for tdelete().

Issue 8

Austin Group Defect 1011 is applied, adding the posix_tnode type and changing some prototypes to use it instead of void.

End of informative text.