SEARCH.H(7) Miscellaneous Information Manual SEARCH.H(7)

search.hsearch tables


#include <search.h>

The <search.h> header shall define the type for structure which shall include the following members:

char    *key
void    *data

and shall define and 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 type as described in <sys/types.h>.

The <search.h> header shall define via 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));

None.

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.

None.

<sys/types.h>

XSH hcreate(3), insque(3), lsearch(3), tdelete(3)

First released in Issue 1. Derived from Issue 1 of the SVID.

The Open Group Corrigendum U021/6 is applied, updating the prototypes for tdelete(3) and tsearch(3).

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

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

June 14, 2024 posix.fail