/* * search.h * * Functions for searching and sorting. * * This file is part of the Mingw32 package. * * Contributors: * Created by Danny Smith * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */ #ifndef _SEARCH_H_ #define _SEARCH_H_ /* All the headers include this file. */ #include <_mingw.h> #ifndef RC_INVOKED #ifdef __cplusplus extern "C" { #endif #ifndef _SIZE_T_DEFINED typedef unsigned int size_t; #define _SIZE_T_DEFINED #endif /* bsearch and qsort are also declared in stdlib.h */ _CRTIMP void* __cdecl bsearch (const void*, const void*, size_t, size_t, int (*)(const void*, const void*)); _CRTIMP void __cdecl qsort (void*, size_t, size_t, int (*)(const void*, const void*)); _CRTIMP void* __cdecl _lfind (const void*, const void*, unsigned int*, unsigned int, int (*)(const void*, const void*)); _CRTIMP void* __cdecl _lsearch (const void*, void*, unsigned int*, unsigned int, int (*)(const void*, const void*)); /* Documentation for these POSIX definitions and prototypes can be found in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. eg: http://www.opengroup.org/onlinepubs/009695399/functions/twalk.html */ typedef struct entry { char *key; void *data; } ENTRY; typedef enum { FIND, ENTER } ACTION; typedef enum { preorder, postorder, endorder, leaf } VISIT; #ifdef _SEARCH_PRIVATE typedef struct node { char *key; struct node *llink, *rlink; } node_t; #endif void * __cdecl tdelete (const void * __restrict__, void ** __restrict__, int (*)(const void *, const void *)) __MINGW_ATTRIB_NONNULL (1) __MINGW_ATTRIB_NONNULL (3); void * __cdecl tfind (const void *, void * const *, int (*)(const void *, const void *)) __MINGW_ATTRIB_NONNULL (1) __MINGW_ATTRIB_NONNULL (3); void * __cdecl tsearch (const void *, void **, int (*)(const void *, const void *)) __MINGW_ATTRIB_NONNULL (1) __MINGW_ATTRIB_NONNULL (3); void __cdecl twalk (const void *, void (*)(const void *, VISIT, int)); #ifndef _NO_OLDNAMES _CRTIMP void* __cdecl lfind (const void*, const void*, unsigned int*, unsigned int, int (*)(const void*, const void*)); _CRTIMP void* __cdecl lsearch (const void*, void*, unsigned int*, unsigned int, int (*)(const void*, const void*)); #endif #ifdef __cplusplus } #endif #endif /* RC_INVOKED */ #endif /* _SEARCH_H_ */