#if !defined ISO && !defined POSIX && !defined POSIX2008
type ENTRY
type {struct entry}
element {struct entry} {char*} key
element {struct entry} {void*} data

type ACTION
constant FIND
constant ENTER

type VISIT
constant preorder
constant postorder
constant endorder
constant leaf

function int hcreate (size_t)
function void hdestroy (void)
function {ENTRY*} hsearch (ENTRY, ACTION)
function void insque (void*, void*)
function {void*} lfind (const void*, const void*, size_t*, size_t, int (*)(const void*, const void*))
function {void*} lsearch (const void*, void*, size_t*, size_t, int (*)(const void*, const void*))
function void remque (void*)
function {void*} tdelete (const void*, void**, int(*)(const void*, const void*))
function {void*} tfind (const void*, void*const*, int(*)(const void*, const void*))
function {void*} tsearch (const void*, void**, int(*)(const void*, const void*))
function void twalk (const void*, void (*) (const void*, VISIT, int))

allow *_t
#endif
