diff options
author | max99x <max99x@gmail.com> | 2011-09-13 01:25:11 +0300 |
---|---|---|
committer | max99x <max99x@gmail.com> | 2011-09-13 01:25:11 +0300 |
commit | d502068f38a0ef61eac9c72bb5cfc725b53e4ad1 (patch) | |
tree | 4880ce4988061bd75cedccf8d66beaca46761e7c | |
parent | 0ae2ed953c9f96b1c50b18009185ba79e40f9316 (diff) |
Allowed library functions to request JS-style varargs.
-rw-r--r-- | src/jsifier.js | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/jsifier.js b/src/jsifier.js index ab381a03..1d8c37d3 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -780,10 +780,11 @@ function JSify(data, functionsOnly, givenFunctions, givenGlobalVariables) { var argsTypes = []; var varargs = []; var varargsTypes = []; + var useJSArgs = (ident.slice(1) + '__jsargs') in LibraryManager.library; params.forEach(function(param, i) { var val = finalizeParam(param); - if (!func || !func.hasVarArgs || i < func.numParams-1) { + if (!func || !func.hasVarArgs || i < func.numParams-1 || useJSArgs) { args.push(val); argsTypes.push(param.type); } else { @@ -797,7 +798,7 @@ function JSify(data, functionsOnly, givenFunctions, givenGlobalVariables) { args = args.map(function(arg, i) { return indexizeFunctions(arg, argsTypes[i]) }); varargs = varargs.map(function(vararg, i) { return vararg === 0 ? 0 : indexizeFunctions(vararg, varargsTypes[i]) }); - if (func && func.hasVarArgs) { + if (func && func.hasVarArgs && !useJSArgs) { if (varargs.length === 0) { varargs = [0]; varargsTypes = ['i32']; |