/* SPDX-License-Identifier: BSD-2-Clause */ /* Copyright 1996-2016 The NASM Authors - All Rights Reserved */ /* * nasmlib.c library routines for the Netwide Assembler */ #include "compiler.h" #include "nasmlib.h" /* * Binary search. */ int bsi(const char *string, const char **array, int size) { int i = -1, j = size; /* always, i < index < j */ while (j - i >= 2) { int k = (i + j) / 2; int l = strcmp(string, array[k]); if (l < 0) /* it's in the first half */ j = k; else if (l > 0) /* it's in the second half */ i = k; else /* we've got it :) */ return k; } return -1; /* we haven't got it :( */ } int bsii(const char *string, const char **array, int size) { int i = -1, j = size; /* always, i < index < j */ while (j - i >= 2) { int k = (i + j) / 2; int l = nasm_stricmp(string, array[k]); if (l < 0) /* it's in the first half */ j = k; else if (l > 0) /* it's in the second half */ i = k; else /* we've got it :) */ return k; } return -1; /* we haven't got it :( */ }