Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/cwrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonan Collobert <ronan@collobert.com>2014-02-13 20:40:19 +0400
committerRonan Collobert <ronan@collobert.com>2014-02-14 13:00:20 +0400
commitb2b35a6ba9ce8245030510ffe4b8558d68d309fd (patch)
treec729eadedbc9351644ac74af1aa140c582f55a75 /types.lua
parent28c17710cde9fd9a22359f5e0c6fef47e12edd46 (diff)
repackaged wrap into a standalone cwrap module
Diffstat (limited to 'types.lua')
-rw-r--r--types.lua263
1 files changed, 7 insertions, 256 deletions
diff --git a/types.lua b/types.lua
index 059ec12..bc9a900 100644
--- a/types.lua
+++ b/types.lua
@@ -1,255 +1,4 @@
-wrap.argtypes = {}
-
-wrap.argtypes.Tensor = {
-
- helpname = function(arg)
- if arg.dim then
- return string.format("Tensor~%dD", arg.dim)
- else
- return "Tensor"
- end
- end,
-
- declare = function(arg)
- local txt = {}
- table.insert(txt, string.format("THTensor *arg%d = NULL;", arg.i))
- if arg.returned then
- table.insert(txt, string.format("int arg%d_idx = 0;", arg.i));
- end
- return table.concat(txt, '\n')
- end,
-
- check = function(arg, idx)
- if arg.dim then
- return string.format("(arg%d = luaT_toudata(L, %d, torch_Tensor)) && (arg%d->nDimension == %d)", arg.i, idx, arg.i, arg.dim)
- else
- return string.format("(arg%d = luaT_toudata(L, %d, torch_Tensor))", arg.i, idx)
- end
- end,
-
- read = function(arg, idx)
- if arg.returned then
- return string.format("arg%d_idx = %d;", arg.i, idx)
- end
- end,
-
- init = function(arg)
- if type(arg.default) == 'boolean' then
- return string.format('arg%d = THTensor_(new)();', arg.i)
- elseif type(arg.default) == 'number' then
- return string.format('arg%d = %s;', arg.i, arg.args[arg.default]:carg())
- else
- error('unknown default tensor type value')
- 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)
- local txt = {}
- if arg.default and arg.returned then
- table.insert(txt, string.format('if(arg%d_idx)', arg.i)) -- means it was passed as arg
- table.insert(txt, string.format('lua_pushvalue(L, arg%d_idx);', arg.i))
- table.insert(txt, string.format('else'))
- if type(arg.default) == 'boolean' then -- boolean: we did a new()
- table.insert(txt, string.format('luaT_pushudata(L, arg%d, torch_Tensor);', arg.i))
- else -- otherwise: point on default tensor --> retain
- table.insert(txt, string.format('{'))
- table.insert(txt, string.format('THTensor_(retain)(arg%d);', arg.i)) -- so we need a retain
- table.insert(txt, string.format('luaT_pushudata(L, arg%d, torch_Tensor);', arg.i))
- table.insert(txt, string.format('}'))
- end
- elseif arg.default then
- -- we would have to deallocate the beast later if we did a new
- -- unlikely anyways, so i do not support it for now
- if type(arg.default) == 'boolean' then
- error('a tensor cannot be optional if not returned')
- end
- elseif arg.returned then
- table.insert(txt, string.format('lua_pushvalue(L, arg%d_idx);', arg.i))
- end
- return table.concat(txt, '\n')
- end,
-
- postcall = function(arg)
- local txt = {}
- if arg.creturned then
- -- this next line is actually debatable
- table.insert(txt, string.format('THTensor_(retain)(arg%d);', arg.i))
- table.insert(txt, string.format('luaT_pushudata(L, arg%d, torch_Tensor);', arg.i))
- end
- return table.concat(txt, '\n')
- end
-}
-
-wrap.argtypes.IndexTensor = {
-
- helpname = function(arg)
- return "LongTensor"
- end,
-
- declare = function(arg)
- local txt = {}
- table.insert(txt, string.format("THLongTensor *arg%d = NULL;", arg.i))
- if arg.returned then
- table.insert(txt, string.format("int arg%d_idx = 0;", arg.i));
- end
- return table.concat(txt, '\n')
- end,
-
- check = function(arg, idx)
- return string.format('(arg%d = luaT_toudata(L, %d, "torch.LongTensor"))', arg.i, idx)
- end,
-
- read = function(arg, idx)
- local txt = {}
- if not arg.noreadadd then
- table.insert(txt, string.format("THLongTensor_add(arg%d, arg%d, -1);", arg.i, arg.i));
- end
- if arg.returned then
- table.insert(txt, string.format("arg%d_idx = %d;", arg.i, idx))
- end
- return table.concat(txt, '\n')
- end,
-
- init = function(arg)
- return string.format('arg%d = THLongTensor_new();', arg.i)
- 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)
- local txt = {}
- if arg.default and arg.returned then
- table.insert(txt, string.format('if(arg%d_idx)', arg.i)) -- means it was passed as arg
- table.insert(txt, string.format('lua_pushvalue(L, arg%d_idx);', arg.i))
- table.insert(txt, string.format('else')) -- means we did a new()
- table.insert(txt, string.format('luaT_pushudata(L, arg%d, "torch.LongTensor");', arg.i))
- elseif arg.default then
- error('a tensor cannot be optional if not returned')
- elseif arg.returned then
- table.insert(txt, string.format('lua_pushvalue(L, arg%d_idx);', arg.i))
- end
- return table.concat(txt, '\n')
- end,
-
- postcall = function(arg)
- local txt = {}
- if arg.creturned or arg.returned then
- table.insert(txt, string.format("THLongTensor_add(arg%d, arg%d, 1);", arg.i, arg.i));
- end
- if arg.creturned then
- -- this next line is actually debatable
- table.insert(txt, string.format('THLongTensor_retain(arg%d);', arg.i))
- table.insert(txt, string.format('luaT_pushudata(L, arg%d, "torch.LongTensor");', arg.i))
- end
- return table.concat(txt, '\n')
- end
-}
-
-for _,typename in ipairs({"ByteTensor", "CharTensor", "ShortTensor", "IntTensor", "LongTensor",
- "FloatTensor", "DoubleTensor"}) do
-
- wrap.argtypes[typename] = {
-
- helpname = function(arg)
- if arg.dim then
- return string.format('%s~%dD', typename, arg.dim)
- else
- return typename
- end
- end,
-
- declare = function(arg)
- local txt = {}
- table.insert(txt, string.format("TH%s *arg%d = NULL;", typename, arg.i))
- if arg.returned then
- table.insert(txt, string.format("int arg%d_idx = 0;", arg.i));
- end
- return table.concat(txt, '\n')
- end,
-
- check = function(arg, idx)
- if arg.dim then
- return string.format('(arg%d = luaT_toudata(L, %d, "torch.%s")) && (arg%d->nDimension == %d)', arg.i, idx, typename, arg.i, arg.dim)
- else
- return string.format('(arg%d = luaT_toudata(L, %d, "torch.%s"))', arg.i, idx, typename)
- end
- end,
-
- read = function(arg, idx)
- if arg.returned then
- return string.format("arg%d_idx = %d;", arg.i, idx)
- end
- end,
-
- init = function(arg)
- if type(arg.default) == 'boolean' then
- return string.format('arg%d = TH%s_new();', arg.i, typename)
- elseif type(arg.default) == 'number' then
- return string.format('arg%d = %s;', arg.i, arg.args[arg.default]:carg())
- else
- error('unknown default tensor type value')
- 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)
- local txt = {}
- if arg.default and arg.returned then
- table.insert(txt, string.format('if(arg%d_idx)', arg.i)) -- means it was passed as arg
- table.insert(txt, string.format('lua_pushvalue(L, arg%d_idx);', arg.i))
- table.insert(txt, string.format('else'))
- if type(arg.default) == 'boolean' then -- boolean: we did a new()
- table.insert(txt, string.format('luaT_pushudata(L, arg%d, "torch.%s");', arg.i, typename))
- else -- otherwise: point on default tensor --> retain
- table.insert(txt, string.format('{'))
- table.insert(txt, string.format('TH%s_retain(arg%d);', typename, arg.i)) -- so we need a retain
- table.insert(txt, string.format('luaT_pushudata(L, arg%d, "torch.%s");', arg.i, typename))
- table.insert(txt, string.format('}'))
- end
- elseif arg.default then
- -- we would have to deallocate the beast later if we did a new
- -- unlikely anyways, so i do not support it for now
- if type(arg.default) == 'boolean' then
- error('a tensor cannot be optional if not returned')
- end
- elseif arg.returned then
- table.insert(txt, string.format('lua_pushvalue(L, arg%d_idx);', arg.i))
- end
- return table.concat(txt, '\n')
- end,
-
- postcall = function(arg)
- local txt = {}
- if arg.creturned then
- -- this next line is actually debatable
- table.insert(txt, string.format('TH%s_retain(arg%d);', typename, arg.i))
- table.insert(txt, string.format('luaT_pushudata(L, arg%d, "torch.%s");', arg.i, typename))
- end
- return table.concat(txt, '\n')
- end
- }
-end
+local argtypes = {}
local function interpretdefaultvalue(arg)
local default = arg.default
@@ -274,7 +23,7 @@ local function interpretdefaultvalue(arg)
end
end
-wrap.argtypes.index = {
+argtypes.index = {
helpname = function(arg)
return "index"
@@ -326,7 +75,7 @@ wrap.argtypes.index = {
}
for _,typename in ipairs({"real", "unsigned char", "char", "short", "int", "long", "float", "double"}) do
- wrap.argtypes[typename] = {
+ argtypes[typename] = {
helpname = function(arg)
return typename
@@ -378,9 +127,9 @@ for _,typename in ipairs({"real", "unsigned char", "char", "short", "int", "long
}
end
-wrap.argtypes.byte = wrap.argtypes['unsigned char']
+argtypes.byte = argtypes['unsigned char']
-wrap.argtypes.boolean = {
+argtypes.boolean = {
helpname = function(arg)
return "boolean"
@@ -430,3 +179,5 @@ wrap.argtypes.boolean = {
end
end
}
+
+return argtypes