Subversion Repositories Kolibri OS

Rev

Rev 4874 | Blame | Compare with Previous | Last modification | View Log | 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. #ifndef __compar_fn_t_defined
  46. #define __compar_fn_t_defined
  47. typedef int (*__compar_fn_t) (const void *, const void *);
  48. #endif
  49.  
  50. __BEGIN_DECLS
  51. int      hcreate(size_t);
  52. void     hdestroy(void);
  53. ENTRY   *hsearch(ENTRY, ACTION);
  54. int      hcreate_r(size_t, struct hsearch_data *);
  55. void     hdestroy_r(struct hsearch_data *);
  56. int     hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
  57. void    *tdelete(const void *__restrict, void **__restrict, __compar_fn_t);
  58. void    tdestroy (void *, void (*)(void *));
  59. void    *tfind(const void *, void **, __compar_fn_t);
  60. void    *tsearch(const void *, void **, __compar_fn_t);
  61. void      twalk(const void *, void (*)(const void *, VISIT, int));
  62. __END_DECLS
  63.  
  64. #endif /* !_SEARCH_H_ */
  65.