nocopy.i 1.04 KB
/* 
 * int *INTARRAY  typemaps. 
 * These are input typemaps for mapping a Java int[] array to a C int array.
 * Note that as a Java array is used and thus passeed by reference, the C routine 
 * can return data to Java via the parameter.
 *
 * Example usage wrapping:
 *   void foo((int *INTARRAY, int INTARRAYSIZE);
 *  
 * Java usage:
 *   byte b[] = new byte[20];
 *   modulename.foo(b);
 */

%typemap(in) (int *INTARRAY, int INTARRAYSIZE) {
    $1 = (int *) JCALL2(GetIntArrayElements, jenv, $input, 0); 
    jsize sz = JCALL1(GetArrayLength, jenv, $input);
    $2 = (int)sz;
}

%typemap(argout) (int *INTARRAY, int INTARRAYSIZE) {
    JCALL3(ReleaseIntArrayElements, jenv, $input, (jint *) $1, 0); 
}


/* Prevent default freearg typemap from being used */
%typemap(freearg) (int *INTARRAY, int INTARRAYSIZE) ""

%typemap(jni) (int *INTARRAY, int INTARRAYSIZE) "jintArray"
%typemap(jtype) (int *INTARRAY, int INTARRAYSIZE) "int[]"
%typemap(jstype) (int *INTARRAY, int INTARRAYSIZE) "int[]"
%typemap(javain) (int *INTARRAY, int INTARRAYSIZE) "$javainput"