haiku/headers/posix/search.h
Augustin Cavalier ffbe2ad946 libroot: Reinstate tdestroy.
It was removed in hrev55422 as we never had declared it in any headers.
But it seems some software came to depend on it anyway. Reinstate it,
and add a declaration for it, behind _GNU_SOURCE.
2021-09-17 15:34:10 -04:00

61 lines
1.4 KiB
C

/*
* Copyright 2008-2012 Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _SEARCH_H_
#define _SEARCH_H_
#include <sys/types.h>
typedef enum {
FIND,
ENTER
} ACTION;
typedef struct entry {
char *key;
void *data;
} ENTRY;
typedef enum {
preorder,
postorder,
endorder,
leaf
} VISIT;
#ifdef __cplusplus
extern "C" {
#endif
extern int hcreate(size_t elementCount);
extern void hdestroy(void);
extern ENTRY *hsearch(ENTRY iteam, ACTION action);
extern void insque(void *element, void *insertAfter);
extern void *lfind(const void *key, const void *base, size_t *_elementCount,
size_t width, int (*compareFunction)(const void *, const void *));
extern void *lsearch(const void *key, void *base, size_t *_elementCount,
size_t width, int (*compareFunction)(const void *, const void *));
extern void remque(void *element);
extern void *tdelete(const void *key, void **_root,
int (*compare)(const void *, const void *));
extern void *tfind(const void *key, void *const *root,
int (*compare)(const void *, const void *));
extern void *tsearch(const void *key, void **_root,
int (*compare)(const void *, const void *));
extern void twalk(const void *root,
void (*action)(const void *, VISIT, int ));
#ifdef _GNU_SOURCE
extern void tdestroy(void *root, void (*free_key)(void *))
#endif
#ifdef __cplusplus
}
#endif
#endif /* _SEARCH_H_ */