search.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef _SEARCH_H
  2. #define _SEARCH_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include <features.h>
  7. #define __NEED_size_t
  8. #include <bits/alltypes.h>
  9. typedef enum { FIND, ENTER } ACTION;
  10. typedef enum { preorder, postorder, endorder, leaf } VISIT;
  11. typedef struct entry {
  12. char *key;
  13. void *data;
  14. } ENTRY;
  15. int hcreate(size_t);
  16. void hdestroy(void);
  17. ENTRY *hsearch(ENTRY, ACTION);
  18. void insque(void *, void *);
  19. void remque(void *);
  20. void *lsearch(const void *, void *, size_t *, size_t,
  21. int (*)(const void *, const void *));
  22. void *lfind(const void *, const void *, size_t *, size_t,
  23. int (*)(const void *, const void *));
  24. void *tdelete(const void *__restrict, void **__restrict, int(*)(const void *, const void *));
  25. void *tfind(const void *, void *const *, int(*)(const void *, const void *));
  26. void *tsearch(const void *, void **, int (*)(const void *, const void *));
  27. void twalk(const void *, void (*)(const void *, VISIT, int));
  28. #ifdef _GNU_SOURCE
  29. struct qelem {
  30. struct qelem *q_forw, *q_back;
  31. char q_data[1];
  32. };
  33. void tdestroy(void *, void (*)(void *));
  34. #endif
  35. #ifdef __cplusplus
  36. }
  37. #endif
  38. #endif