home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / search.h < prev    next >
C/C++ Source or Header  |  2004-01-30  |  1KB  |  60 lines

  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.