holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/search.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
equal deleted inserted replaced
19:da7c1a80df0d 20:d2d6724aef32
       
     1 /* 
       
     2  * search.h
       
     3  *
       
     4  * Functions for searching and sorting.
       
     5  *
       
     6  * This file is part of the Mingw32 package.
       
     7  *
       
     8  * Contributors:
       
     9  *  Created by Danny Smith  <dannysmith@users.sourceforge.net>
       
    10  *
       
    11  *  THIS SOFTWARE IS NOT COPYRIGHTED
       
    12  *
       
    13  *  This source code is offered for use in the public domain. You may
       
    14  *  use, modify or distribute it freely.
       
    15  *
       
    16  *  This code is distributed in the hope that it will be useful but
       
    17  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
       
    18  *  DISCLAIMED. This includes but is not limited to warranties of
       
    19  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
       
    20  *
       
    21  */
       
    22 
       
    23 #ifndef _SEARCH_H_
       
    24 #define _SEARCH_H_
       
    25 
       
    26 /* All the headers include this file. */
       
    27 #include <_mingw.h>
       
    28 
       
    29 #ifndef RC_INVOKED
       
    30 
       
    31 #ifdef __cplusplus
       
    32 extern "C" {
       
    33 #endif
       
    34 
       
    35 #ifndef _SIZE_T_DEFINED
       
    36 typedef unsigned int size_t;
       
    37 #define _SIZE_T_DEFINED
       
    38 #endif
       
    39 
       
    40 /* bsearch and qsort are also declared in stdlib.h */
       
    41 _CRTIMP void* __cdecl bsearch (const void*, const void*, size_t, size_t, 
       
    42 			       int (*)(const void*, const void*));
       
    43 _CRTIMP void __cdecl qsort (void*, size_t, size_t,
       
    44 			    int (*)(const void*, const void*));
       
    45 
       
    46 _CRTIMP void* __cdecl _lfind (const void*, const void*, unsigned int*,
       
    47 			      unsigned int, int (*)(const void*, const void*));
       
    48 _CRTIMP void* __cdecl _lsearch (const void*, void*, unsigned int*, unsigned int,
       
    49 				int (*)(const void*, const void*));
       
    50 /*
       
    51 Documentation for these POSIX definitions and prototypes can be found in 
       
    52 The Open Group Base Specifications Issue 6
       
    53 IEEE Std 1003.1, 2004 Edition.
       
    54 eg:  http://www.opengroup.org/onlinepubs/009695399/functions/twalk.html
       
    55 */
       
    56 
       
    57 
       
    58 typedef struct entry {
       
    59 	char *key;
       
    60 	void *data;
       
    61 } ENTRY;
       
    62 
       
    63 typedef enum {
       
    64 	FIND,
       
    65 	ENTER
       
    66 } ACTION;
       
    67 
       
    68 typedef enum {
       
    69 	preorder,
       
    70 	postorder,
       
    71 	endorder,
       
    72 	leaf
       
    73 } VISIT;
       
    74 
       
    75 #ifdef _SEARCH_PRIVATE
       
    76 typedef struct node {
       
    77 	char         *key;
       
    78 	struct node  *llink, *rlink;
       
    79 } node_t;
       
    80 #endif
       
    81 
       
    82 void * __cdecl tdelete (const void * __restrict__, void ** __restrict__,
       
    83 			int (*)(const void *, const void *))
       
    84 			__MINGW_ATTRIB_NONNULL (1)  __MINGW_ATTRIB_NONNULL (3);
       
    85 void * __cdecl tfind (const void *, void * const *,
       
    86 		      int (*)(const void *, const void *))
       
    87 		      __MINGW_ATTRIB_NONNULL (1)  __MINGW_ATTRIB_NONNULL (3);
       
    88 void * __cdecl tsearch (const void *, void **, 
       
    89 			int (*)(const void *, const void *))
       
    90 			__MINGW_ATTRIB_NONNULL (1)  __MINGW_ATTRIB_NONNULL (3);
       
    91 void __cdecl twalk (const void *, void (*)(const void *, VISIT, int));
       
    92 
       
    93 #ifndef	_NO_OLDNAMES
       
    94 _CRTIMP void* __cdecl lfind (const void*, const void*, unsigned int*,
       
    95 			     unsigned int, int (*)(const void*, const void*));
       
    96 _CRTIMP void* __cdecl lsearch (const void*, void*, unsigned int*, unsigned int,
       
    97 			       int (*)(const void*, const void*));
       
    98 #endif
       
    99 
       
   100 #ifdef __cplusplus
       
   101 }
       
   102 #endif
       
   103 
       
   104 #endif /* RC_INVOKED */
       
   105 
       
   106 #endif /*  _SEARCH_H_ */