summaryrefslogtreecommitdiff
path: root/newlib/libc/stdlib/bsearch.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-03 17:39:24 -0700
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-03 17:39:24 -0700
commita6c1ed4716cf02626ea035beb6dd4a921642ba80 (patch)
treeef582c1b52819e27bdd16097ec03b69799d04ede /newlib/libc/stdlib/bsearch.c
parentf6c9a624fa8a6878a7fb2b02f55e4990a20feb59 (diff)
Use libc from agbcc instead of standalone newlib\nYou must have AGBCC commit 80d029caec189587f8b9294b6c8a5a489b8f5f88 in order to compile pmd_red.gbalibc
Diffstat (limited to 'newlib/libc/stdlib/bsearch.c')
-rw-r--r--newlib/libc/stdlib/bsearch.c100
1 files changed, 0 insertions, 100 deletions
diff --git a/newlib/libc/stdlib/bsearch.c b/newlib/libc/stdlib/bsearch.c
deleted file mode 100644
index b9539aa..0000000
--- a/newlib/libc/stdlib/bsearch.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * bsearch.c
- * Original Author: G. Haley
- * Rewritten by: G. Noer
- *
- * Searches an array of nmemb members, the initial member of which is pointed
- * to by base, for a member that matches the object pointed to by key. The
- * contents of the array shall be in ascending order according to a comparison
- * function pointed to by compar. The function shall return an integer less
- * than, equal to or greater than zero if the first argument is considered to be
- * respectively less than, equal to or greater than the second. Returns a
- * pointer to the matching member of the array, or a null pointer if no match
- * is found.
- */
-
-/*
-FUNCTION
-<<bsearch>>---binary search
-
-INDEX
- bsearch
-
-ANSI_SYNOPSIS
- #include <stdlib.h>
- void *bsearch(const void *<[key]>, const void *<[base]>,
- size_t <[nmemb]>, size_t <[size]>,
- int (*<[compar]>)(const void *, const void *));
-
-TRAD_SYNOPSIS
- #include <stdlib.h>
- char *bsearch(<[key]>, <[base]>, <[nmemb]>, <[size]>, <[compar]>)
- char *<[key]>;
- char *<[base]>;
- size_t <[nmemb]>, <[size]>;
- int (*<[compar]>)();
-
-DESCRIPTION
-<<bsearch>> searches an array beginning at <[base]> for any element
-that matches <[key]>, using binary search. <[nmemb]> is the element
-count of the array; <[size]> is the size of each element.
-
-The array must be sorted in ascending order with respect to the
-comparison function <[compar]> (which you supply as the last argument of
-<<bsearch>>).
-
-You must define the comparison function <<(*<[compar]>)>> to have two
-arguments; its result must be negative if the first argument is
-less than the second, zero if the two arguments match, and
-positive if the first argument is greater than the second (where
-``less than'' and ``greater than'' refer to whatever arbitrary
-ordering is appropriate).
-
-RETURNS
-Returns a pointer to an element of <[array]> that matches <[key]>. If
-more than one matching element is available, the result may point to
-any of them.
-
-PORTABILITY
-<<bsearch>> is ANSI.
-
-No supporting OS subroutines are required.
-*/
-
-#include <stdlib.h>
-
-_PTR
-_DEFUN (bsearch, (key, base, nmemb, size, compar),
- _CONST _PTR key _AND
- _CONST _PTR base _AND
- size_t nmemb _AND
- size_t size _AND
- int _EXFUN ((*compar), (const _PTR, const _PTR)))
-{
- _PTR current;
- size_t lower = 0;
- size_t upper = nmemb;
- size_t index;
- int result;
-
- if (nmemb == 0 || size == 0)
- return NULL;
-
- while (lower < upper)
- {
- index = (lower + upper) / 2;
- current = (_PTR) (((char *) base) + (index * size));
-
- result = compar (key, current);
-
- if (result < 0)
- upper = index;
- else if (result > 0)
- lower = index + 1;
- else
- return current;
- }
-
- return NULL;
-}
-