
Hallo!
First, my plan is to add to numpy.i, typemaps for signatures like the following:
%typemap(argout) (double** ARGOUT_ARRAY1, int* DIM1)
It is important to note that even though the same argument *names* are used, this is a different typemap signature than
%typemap(argout) (double* ARGOUT_ARRAY1, int DIM1)
and thus can have (logically) different implementations. For the latter, the typemap allocates a new numpy array and passes the buffer pointer and dimension in; for the former, the buffer pointer and dimension will be obtained from the wrapped function and used to build a new numpy array.
Hm ... maybe it is more clear for users then, if the new typemap has a different name ? In example ARRAY_VIEW1, or something else with "VIEW" (although it's not really a view ?) ?
As for having a COPY version of the first typemap signature (in addition to the non-copy, or "view" version), I currently do not plan to do [...] The example Georg gives in his link below is not a counter-example to this. He provides two methods,
void getBigData(double **mtx, int *rows, int *cols) void getBigDataCopy(double **cpmtx, int *cprows, int *cpcols)
but in addition to the same argument types, they have the exact same implementation. The only thing that is different is the names of the arguments, which is clearly so that we can apply different swig typemaps to the two methods. I submit that you will not find a class written by someone else that will be designed this way. You will only find it if
Yes this copy method was only for demonstration - I also did not use this method for my "real" code. One can simply call .copy() in python ... LG Georg