From cb68fee268b144f6d16f7102cbc646e7d810f64a Mon Sep 17 00:00:00 2001 From: Luke Alonso Date: Thu, 10 Mar 2016 16:30:59 -0800 Subject: [PATCH] Lua 5.3 integer support --- types.lua | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/types.lua b/types.lua index fb0cb3c..4c7445e 100644 --- a/types.lua +++ b/types.lua @@ -74,7 +74,7 @@ argtypes.index = { end } -for _,typename in ipairs({"real", "unsigned char", "char", "short", "int", "long", "float", "double"}) do +for _,typename in ipairs({"real", "float", "double"}) do argtypes[typename] = { helpname = function(arg) @@ -127,6 +127,59 @@ for _,typename in ipairs({"real", "unsigned char", "char", "short", "int", "long } end +for _,typename in ipairs({"unsigned char", "char", "short", "int", "long"}) do + argtypes[typename] = { + + helpname = function(arg) + return typename + end, + + declare = function(arg) + -- if it is a number we initialize here + local default = tonumber(interpretdefaultvalue(arg)) or 0 + return string.format("%s arg%d = %g;", typename, arg.i, default) + end, + + check = function(arg, idx) + return string.format("lua_isnumber(L, %d)", idx) + end, + + read = function(arg, idx) + return string.format("arg%d = (%s)lua_tointeger(L, %d);", arg.i, typename, idx) + end, + + init = function(arg) + -- otherwise do it here + if arg.default then + local default = interpretdefaultvalue(arg) + if not tonumber(default) then + return string.format("arg%d = %s;", arg.i, default) + end + end + end, + + carg = function(arg) + return string.format('arg%d', arg.i) + end, + + creturn = function(arg) + return string.format('arg%d', arg.i) + end, + + precall = function(arg) + if arg.returned then + return string.format('lua_pushinteger(L, (long)arg%d);', arg.i) + end + end, + + postcall = function(arg) + if arg.creturned then + return string.format('lua_pushinteger(L, (long)arg%d);', arg.i) + end + end + } +end + argtypes.byte = argtypes['unsigned char'] argtypes.boolean = {