blob: 197a5a21b83613556cf476e86a2e5611328df616 [file] [log] [blame]
/* File : example.i */
%module example
/* in this file there are two sorting functions
and three different ways to wrap them.
See the lua code for how they are called
*/
%include <carrays.i> // array helpers
// this declares a batch of function for manipulating C integer arrays
%array_functions(int,int)
// this adds some lua code directly into the module
// warning: you need the example. prefix if you want it added into the module
// addmittedly this code is a bit tedious, but its a one off effort
%luacode {
function example.sort_int2(t)
local len=table.maxn(t) -- the len
local arr=example.new_int(len)
for i=1,len do
example.int_setitem(arr,i-1,t[i]) -- note: C index is one less then lua indea
end
example.sort_int(arr,len) -- call the fn
-- copy back
for i=1,len do
t[i]=example.int_getitem(arr,i-1) -- note: C index is one less then lua indea
end
example.delete_int(arr) -- must delete it
end
}
// this way uses the SWIG-Lua typemaps to do the conversion for us
// the %apply command states to apply this wherever the argument signature matches
%include <typemaps.i>
%apply (double *INOUT,int) {(double* arr,int len)};
%inline %{
extern void sort_int(int* arr, int len);
extern void sort_double(double* arr, int len);
%}