1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-12-24 17:51:17 +03:00

Add inline bsearch expansion.

This commit is contained in:
Ondrej Bilka
2013-02-11 23:18:09 +01:00
parent 8ded91fb37
commit 41eda41d74
4 changed files with 56 additions and 28 deletions

View File

@@ -17,32 +17,7 @@
#include <stdlib.h>
/* Perform a binary search for KEY in BASE which has NMEMB elements
of SIZE bytes each. The comparisons are done by (*COMPAR)(). */
void *
bsearch (const void *key, const void *base, size_t nmemb, size_t size,
int (*compar) (const void *, const void *))
{
size_t l, u, idx;
const void *p;
int comparison;
l = 0;
u = nmemb;
while (l < u)
{
idx = (l + u) / 2;
p = (void *) (((const char *) base) + (idx * size));
comparison = (*compar) (key, p);
if (comparison < 0)
u = idx;
else if (comparison > 0)
l = idx + 1;
else
return (void *) p;
}
return NULL;
}
#undef __extern_inline
#define __extern_inline /* Empty, so we get a normal definition. */
#include <bits/stdlib-bsearch.h>
libc_hidden_def (bsearch)