Home | History | Annotate | Download | only in include
      1 /*-
      2  * Written by J.T. Conklin <jtc (at) netbsd.org>
      3  * Public domain.
      4  *
      5  *	$NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $
      6  * $FreeBSD: release/9.0.0/include/search.h 105250 2002-10-16 14:29:23Z robert $
      7  */
      8 
      9 #ifndef _SEARCH_H_
     10 #define _SEARCH_H_
     11 
     12 #include <sys/cdefs.h>
     13 #include <sys/types.h>
     14 
     15 typedef enum {
     16   FIND,
     17   ENTER
     18 } ACTION;
     19 
     20 typedef struct entry {
     21   char* key;
     22   void* data;
     23 } ENTRY;
     24 
     25 typedef enum {
     26   preorder,
     27   postorder,
     28   endorder,
     29   leaf
     30 } VISIT;
     31 
     32 #if defined(__USE_BSD) || defined(__USE_GNU)
     33 struct hsearch_data {
     34   struct __hsearch* __hsearch;
     35 };
     36 #endif
     37 
     38 __BEGIN_DECLS
     39 
     40 void insque(void* __element, void* __previous) __INTRODUCED_IN(21);
     41 void remque(void* __element) __INTRODUCED_IN(21);
     42 
     43 int hcreate(size_t) __INTRODUCED_IN(28);
     44 void hdestroy(void) __INTRODUCED_IN(28);
     45 ENTRY* hsearch(ENTRY, ACTION) __INTRODUCED_IN(28);
     46 
     47 #if defined(__USE_BSD) || defined(__USE_GNU)
     48 int hcreate_r(size_t, struct hsearch_data*) __INTRODUCED_IN(28);
     49 void hdestroy_r(struct hsearch_data*) __INTRODUCED_IN(28);
     50 int hsearch_r(ENTRY, ACTION, ENTRY**, struct hsearch_data*) __INTRODUCED_IN(28);
     51 #endif
     52 
     53 void* lfind(const void* __key, const void* __base, size_t* __count, size_t __size, int (*__comparator)(const void*, const void*))
     54   __INTRODUCED_IN(21);
     55 void* lsearch(const void* __key, void* __base, size_t* __count, size_t __size, int (*__comparator)(const void*, const void*))
     56   __INTRODUCED_IN(21);
     57 
     58 void* tdelete(const void* __key, void** __root_ptr, int (*__comparator)(const void*, const void*)) __INTRODUCED_IN(16);
     59 void tdestroy(void* __root, void (*__free_fn)(void*)) __INTRODUCED_IN(16);
     60 void* tfind(const void* __key, void* const* __root_ptr, int (*__comparator)(const void*, const void*)) __INTRODUCED_IN(16);
     61 void* tsearch(const void* __key, void** __root_ptr, int (*__comparator)(const void*, const void*)) __INTRODUCED_IN(16);
     62 void twalk(const void* __root, void (*__visitor)(const void*, VISIT, int)) __INTRODUCED_IN(21);
     63 
     64 __END_DECLS
     65 
     66 #endif
     67