diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-05-07 23:07:38 +0200 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-05-07 23:07:38 +0200 |
commit | 19621b67f7f23518df1c27d50c4d52dc99f6f65c (patch) | |
tree | 9f289e84bfff762c77c90249464e5939c0ec1a2e /include/_bsearch.h | |
parent | 6b3518c84ad90b1b593ef4bb700b39465c79b50e (diff) |
Use a 2-stage lookup for u8wnext() and u8wcnt()
Diffstat (limited to 'include/_bsearch.h')
-rw-r--r-- | include/_bsearch.h | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/include/_bsearch.h b/include/_bsearch.h deleted file mode 100644 index ce8f118..0000000 --- a/include/_bsearch.h +++ /dev/null @@ -1,60 +0,0 @@ -#include <stddef.h> - -#include "macros.h" - -#define _MLIB_DEFINE_BSEARCH(TYPE, TABLE, DEFAULT) \ - static TYPE mlib_lookup(rune ch) \ - { \ - ptrdiff_t i, lo, hi; \ - lo = 0; \ - hi = lengthof(TABLE) - 1; \ - i = (lo + hi) / 2; \ - do { \ - if (ch < TABLE[i].lo) \ - hi = i - 1; \ - else if (ch > TABLE[i].hi) \ - lo = i + 1; \ - else \ - return TABLE[i].val; \ - i = (lo + hi) / 2; \ - } while (lo <= hi); \ - return DEFAULT; \ - } - -#define _MLIB_DEFINE_BSEARCH_CONTAINS(TABLE) \ - static bool mlib_lookup_contains(rune ch) \ - { \ - ptrdiff_t i, lo, hi; \ - lo = 0; \ - hi = lengthof(TABLE) - 1; \ - i = (lo + hi) / 2; \ - do { \ - if (ch < TABLE[i].lo) \ - hi = i - 1; \ - else if (ch > TABLE[i].hi) \ - lo = i + 1; \ - else \ - return true; \ - i = (lo + hi) / 2; \ - } while (lo <= hi); \ - return false; \ - } - -#define _MLIB_DEFINE_BSEARCH_KV(TYPE, TABLE, DEFAULT) \ - static TYPE mlib_lookup_kv(rune ch) \ - { \ - ptrdiff_t i, lo, hi; \ - lo = 0; \ - hi = lengthof(TABLE) - 1; \ - i = (lo + hi) / 2; \ - do { \ - if (ch < TABLE[i].k) \ - hi = i - 1; \ - else if (ch > TABLE[i].k) \ - lo = i + 1; \ - else \ - return TABLE[i].v; \ - i = (lo + hi) / 2; \ - } while (lo <= hi); \ - return DEFAULT; \ - } |