From 29da5c9909249ea18d67a00c276e586199b7c945 Mon Sep 17 00:00:00 2001 From: COFFEETALES <46571757+COFFEETALES@users.noreply.github.com> Date: Mon, 21 Oct 2019 23:39:48 +0200 Subject: Ability to list each item on Exports/Data Segments/Functions (#2386) Adds functionality to the C API for getting the number of items in a module and fetching them out by index. --- src/js/binaryen.js-post.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/js/binaryen.js-post.js') diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 7c99ded15..0da3f2df4 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -2096,6 +2096,23 @@ function wrapModule(module, self) { ); }); }; + self['getNumMemorySegments'] = function() { + return Module['_BinaryenGetNumMemorySegments'](module); + } + self['getMemorySegmentInfoByIndex'] = function(id) { + return { + 'byteOffset': Module['_BinaryenGetMemorySegmentByteOffset'](module, id), + 'data': (function(){ + var size = Module['_BinaryenGetMemorySegmentByteLength'](module, id); + var ptr = _malloc(size); + Module['_BinaryenCopyMemorySegmentData'](module, id, ptr); + var res = new Uint8Array(size); + res.set(new Uint8Array(buffer, ptr, size)); + _free(ptr); + return res.buffer; + })() + }; + } self['setStart'] = function(start) { return Module['_BinaryenSetStart'](module, start); }; @@ -2110,6 +2127,18 @@ function wrapModule(module, self) { return Module['_BinaryenAddCustomSection'](module, strToStack(name), i8sToStack(contents), contents.length); }); }; + self['getNumExports'] = function() { + return Module['_BinaryenGetNumExports'](module); + } + self['getExportByIndex'] = function(id) { + return Module['_BinaryenGetExportByIndex'](module, id); + } + self['getNumFunctions'] = function() { + return Module['_BinaryenGetNumFunctions'](module); + } + self['getFunctionByIndex'] = function(id) { + return Module['_BinaryenGetFunctionByIndex'](module, id); + } self['emitText'] = function() { var old = out; var ret = ''; -- cgit v1.2.3