| %module csharp_lib_arrays |
| |
| %include "arrays_csharp.i" |
| |
| %apply int INPUT[] { int* sourceArray } |
| %apply int OUTPUT[] { int* targetArray } |
| |
| %apply int INOUT[] { int* array1 } |
| %apply int INOUT[] { int* array2 } |
| |
| %inline %{ |
| /* copy the contents of the first array to the second */ |
| void myArrayCopy( int* sourceArray, int* targetArray, int nitems ) { |
| int i; |
| for ( i = 0; i < nitems; i++ ) { |
| targetArray[ i ] = sourceArray[ i ]; |
| } |
| } |
| |
| /* swap the contents of the two arrays */ |
| void myArraySwap( int* array1, int* array2, int nitems ) { |
| int i, temp; |
| for ( i = 0; i < nitems; i++ ) { |
| temp = array1[ i ]; |
| array1[ i ] = array2[ i ]; |
| array2[ i ] = temp; |
| } |
| } |
| %} |
| |
| |
| %clear int* sourceArray; |
| %clear int* targetArray; |
| |
| %clear int* array1; |
| %clear int* array2; |
| |
| |
| // Below replicates the above array handling but this time using the pinned (fixed) array typemaps |
| %csmethodmodifiers myArrayCopyUsingFixedArrays "public unsafe"; |
| %csmethodmodifiers myArraySwapUsingFixedArrays "public unsafe"; |
| |
| %apply int FIXED[] { int* sourceArray } |
| %apply int FIXED[] { int* targetArray } |
| |
| %inline %{ |
| void myArrayCopyUsingFixedArrays( int *sourceArray, int* targetArray, int nitems ) { |
| myArrayCopy(sourceArray, targetArray, nitems); |
| } |
| %} |
| |
| %apply int FIXED[] { int* array1 } |
| %apply int FIXED[] { int* array2 } |
| |
| %inline %{ |
| void myArraySwapUsingFixedArrays( int* array1, int* array2, int nitems ) { |
| myArraySwap(array1, array2, nitems); |
| } |
| %} |
| |
| |