diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js index a665fc8f..1971ab66 100644 --- a/src/library.js +++ b/src/library.js @@ -3201,6 +3201,29 @@ LibraryManager.library = { throw 'ABORT: ' + code + ', at ' + (new Error().stack); }, + bsearch: function(key, base, num, size, compar) { + var cmp = FUNCTION_TABLE[compar]; + var left = 0; + var right = num; + var mid, test, addr; + + while (left < right) { + mid = (left + right) >>> 1; + addr = base + (mid * size); + test = cmp(key, addr); + + if (test < 0) { + right = mid; + } else if (test > 0) { + left = mid + 1; + } else { + return addr; + } + } + + return 0; + }, + realloc__deps: ['memcpy'], realloc: function(ptr, size) { // Very simple, inefficient implementation - if you use a real malloc, best to use |