[pointer_default(ref)] interface Arrays { /* Strings */ [string] char * str1([in,string] unsigned char * s); /* Arrays */ void array1([in, out] int t[10]); void array2([in] int n, [in, out, size_is(n)] int t[]); void array3([in] int n, [in, out, size_is(n)] int t[10]); void array4([in] int n, [out] int * m, [in, out, size_is(n), length_is(*m)] int t[10]); void array5([in,out] int *n, [in, out, size_is(*n), length_is(*n)] int t[]); /* Optional strings and arrays */ [string,unique] char * optstr1([in,string,unique] unsigned char * s); void optarray1([in,null_terminated,unique] int options[]); /* Multidimensional arrays */ void multarray1([in] int i, [in] int j, [in, size_is(i,j)] int t[][]); void multarray2([in] int i, [in, size_is(,i)] int t[10][]); /* Big arrays */ void bigarray1([bigarray,in,out] double t[10][20]); void bigarray2([in] int dimx, [in] int dimy, [in,bigarray,size_is(dimx,dimy)] long t[][], [out,bigarray,size_is(dimy,dimx)] long tt[][]); [bigarray,unique,size_is(10)] long * bigarray3([bigarray,in,unique] long * b); }