/trunk/Examples/lua/arrays/example.i
Swig | 42 lines | 30 code | 6 blank | 6 comment | 0 complexity | a58523ee4a4854b80a20179290730890 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* 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);
- %}