diff --git a/lime/system/CFFI.hx b/lime/system/CFFI.hx index 1a7d7f527..90aeb6ca7 100644 --- a/lime/system/CFFI.hx +++ b/lime/system/CFFI.hx @@ -117,16 +117,12 @@ class CFFI { var result:Dynamic = neko.Lib.load (__moduleNames.get (library), method, args); if (result == null) return null; - var _trace = function () { trace ("Called " + library + "@" + method); } - - switch (args) { - case 1: return function (a:Dynamic):Dynamic { _trace (); return result (a); } - case 2: return function (a:Dynamic, b:Dynamic):Dynamic { _trace (); return result (a, b); } - case 3: return function (a:Dynamic, b:Dynamic, c:Dynamic):Dynamic { _trace (); return result (a, b, c); } - case 4: return function (a:Dynamic, b:Dynamic, c:Dynamic, d:Dynamic):Dynamic { _trace (); return result (a, b, c, d); } - case 5: return function (a:Dynamic, b:Dynamic, c:Dynamic, d:Dynamic, e:Dynamic):Dynamic { _trace (); return result (a, b, c, d, e); } - default: return function ():Dynamic { _trace (); return result (); } - } + return Reflect.makeVarArgs (function (args) { + + trace ("Called " + library + "@" + method); + return Reflect.callMethod (result, result, args); + + }); #else return neko.Lib.load (__moduleNames.get (library), method, args);