%module csharp_lib_arrays_bool %include "arrays_csharp.i" %apply bool INPUT[] { bool* sourceArray } %apply bool OUTPUT[] { bool* targetArray } %apply bool INOUT[] { bool* array1 } %apply bool INOUT[] { bool* array2 } %inline %{ #include /* copy the contents of the first array to the second */ void myArrayCopyBool( bool* sourceArray, bool* targetArray, int nitems ) { int i; for ( i = 0; i < nitems; i++ ) { targetArray[ i ] = sourceArray[ i ]; } } /* swap the contents of the two arrays */ void myArraySwapBool( bool* array1, bool* array2, int nitems ) { int i; bool temp; for ( i = 0; i < nitems; i++ ) { temp = array1[ i ]; array1[ i ] = array2[ i ]; array2[ i ] = temp; } } bool checkBoolArrayCorrect( bool* sourceArray, int sourceArraySize ) { if( sourceArraySize != 8 ) { std::cout << "checkBoolArrayCorrect: Expected array with 8 elements" << std::endl; return false; } return sourceArray[0] == true && sourceArray[1] == false && sourceArray[2] == false && sourceArray[3] == true && sourceArray[4] == false && sourceArray[5] == true && sourceArray[6] == true && sourceArray[7] == false; } %} %clear bool* sourceArray; %clear bool* targetArray; %clear bool* array1; %clear bool* array2; // Below replicates the above array handling but this time using the pinned (fixed) array typemaps %csmethodmodifiers myArrayCopyUsingFixedArraysBool "public unsafe"; %csmethodmodifiers myArraySwapUsingFixedArraysBool "public unsafe"; %apply bool FIXED[] { bool* sourceArray } %apply bool FIXED[] { bool* targetArray } %inline %{ void myArrayCopyUsingFixedArraysBool( bool *sourceArray, bool* targetArray, int nitems ) { myArrayCopyBool(sourceArray, targetArray, nitems); } %} %apply bool FIXED[] { bool* array1 } %apply bool FIXED[] { bool* array2 } %inline %{ void myArraySwapUsingFixedArraysBool( bool* array1, bool* array2, int nitems ) { myArraySwapBool(array1, array2, nitems); } %}