]> pd.if.org Git - pdclib/blob - functions/stdlib/bsearch.c
c03cd45716e435b884a01f5b8e4ac20ea12decc4
[pdclib] / functions / stdlib / bsearch.c
1 // ----------------------------------------------------------------------------
2 // $Id$
3 // ----------------------------------------------------------------------------
4 // Public Domain C Library - http://pdclib.sourceforge.net
5 // This code is Public Domain. Use, modify, and redistribute at will.
6 // ----------------------------------------------------------------------------
7
8 // TODO: C/C++ linkage
9 void * bsearch( const void * key, const void * base, size_t nelem, size_t size, int (*cmp) ( const void * ck, const void * ce) ) { /* TODO */ };
10
11 /* PDPC code - unreviewed
12 {
13     size_t try;
14     int res;
15     const void *ptr;
16     
17     while (nmemb > 0)
18     {
19         try = nmemb / 2;    
20         ptr = (void *)((char *)base + try * size);
21         res = compar(ptr, key);
22         if (res == 0)
23         {
24             return ((void *)ptr);
25         }
26         else if (res < 0)
27         {
28             nmemb = nmemb - try - 1;
29             base = (const void *)((const char *)ptr + size);
30         }
31         else
32         {
33             nmemb = try;
34         }
35     }
36     return (NULL);
37 }
38 */