Fri, 19 Nov 2010 16:04:30 +0000
New Lua<->native function interface, simpler. Added type() to baselib.
lvm.js | file | annotate | diff | comparison | revisions |
--- a/lvm.js Fri Nov 19 16:02:55 2010 +0000 +++ b/lvm.js Fri Nov 19 16:04:30 2010 +0000 @@ -36,10 +36,7 @@ call: function (args) { var f = this.precall(); - if(typeof(f) == "function") - var ret = f.apply(this.vm, args?args.map(function (a) { return a.value; }):[]); - else - var ret = this.vm.call(f); + var ret = this.vm.call(f, args); if(typeof(ret) == "undefined") ret = []; return ret; @@ -567,20 +564,26 @@ // Standard library var baselib = { - print: function (args) + print: function () { + var args = Array.prototype.slice.call(arguments); sys.print(args[0].toString()); for(var i = 1; i<args.length; i++) sys.print("\t"+args[i].toString()); sys.print("\n"); - return 0; + return []; }, - setmetatable: function (args) + setmetatable: function (table, metatable) { - if(args.length!=2) - throw "setmetatable expects 2 arguments, got "+args.length; - args[0].setMetatable(args[1]); - return 1; + if(arguments.length!=2) + throw "setmetatable expects 2 arguments, got "+arguments.length; + + table.setMetatable(metatable); + return [table]; + }, + type: function (o) + { + return [o.type]; } };