Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*      $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $     */
  2. /* $FreeBSD: src/include/search.h,v 1.4 2002/03/23 17:24:53 imp Exp $ */
  3.  
  4. /*
  5.  * Written by J.T. Conklin <jtc@netbsd.org>
  6.  * Public domain.
  7.  */
  8.  
  9. #ifndef _SEARCH_H_
  10. #define _SEARCH_H_
  11.  
  12. #include <sys/cdefs.h>
  13. #include <machine/ansi.h>
  14. #include <sys/types.h>
  15.  
  16. typedef struct entry {
  17.         char *key;
  18.         void *data;
  19. } ENTRY;
  20.  
  21. typedef enum {
  22.         FIND, ENTER
  23. } ACTION;
  24.  
  25. typedef enum {
  26.         preorder,
  27.         postorder,
  28.         endorder,
  29.         leaf
  30. } VISIT;
  31.  
  32. #ifdef _SEARCH_PRIVATE
  33. typedef struct node {
  34.         char         *key;
  35.         struct node  *llink, *rlink;
  36. } node_t;
  37. #endif
  38.  
  39. struct hsearch_data
  40. {
  41.   struct internal_head *htable;
  42.   size_t htablesize;
  43. };
  44.  
  45. __BEGIN_DECLS
  46. int      hcreate(size_t);
  47. void     hdestroy(void);
  48. ENTRY   *hsearch(ENTRY, ACTION);
  49. int      hcreate_r(size_t, struct hsearch_data *);
  50. void     hdestroy_r(struct hsearch_data *);
  51. int     hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
  52. void    *tdelete(const void *, void **, int (*)(const void *, const void *));
  53. void    tdestroy (void *, void (*)(void *));
  54. void    *tfind(const void *, void **, int (*)(const void *, const void *));
  55. void    *tsearch(const void *, void **, int (*)(const void *, const void *));
  56. void      twalk(const void *, void (*)(const void *, VISIT, int));
  57. __END_DECLS
  58.  
  59. #endif /* !_SEARCH_H_ */
  60.