annotate swig/java/jxtract.i @ 162:39d168ee5917

Remove obsolete reference to xtract_scalar_private.h
author Jamie Bullock <jamie@jamiebullock.com>
date Fri, 31 May 2013 22:57:13 +0100
parents 826eb46b2f91
children
rev   line source
jamie@133 1
jamie@134 2 %include "../xtract.i"
jamie@133 3 %include "arrays_java.i"
jamie@134 4
jamie@154 5 %apply double[] {const double *data};
jamie@154 6 %apply double *OUTPUT { double *result };
jamie@134 7 %typemap(in,numinputs=0) JNIEnv *env "$1 = jenv;"
jamie@134 8
jamie@154 9 %javamethodmodifiers arr2voidd "private";
jamie@134 10 %javamethodmodifiers arr2voidi "private";
jamie@154 11 %javamethodmodifiers freearrd "private";
jamie@134 12 %javamethodmodifiers freearri "private";
jamie@154 13
jamie@134 14 %inline %{
jamie@154 15 jlong arr2voidd(JNIEnv *env, jdoubleArray arr) {
jamie@134 16 void *ptr = (*env)->GetFloatArrayElements(env, arr, NULL);
jamie@134 17 return (intptr_t)ptr;
jamie@134 18 }
jamie@134 19
jamie@154 20 void freearrd(JNIEnv *env, jdoubleArray arr, jlong map) {
jamie@134 21 void *ptr = 0;
jamie@134 22 ptr = *(void **)&map;
jamie@134 23 (*env)->ReleaseFloatArrayElements(env, arr, ptr, JNI_ABORT);
jamie@134 24 }
jamie@134 25
jamie@134 26 jlong arr2voidi(JNIEnv *env, jintArray arr) {
jamie@134 27 void *ptr = (*env)->GetIntArrayElements(env, arr, NULL);
jamie@134 28 return (intptr_t)ptr;
jamie@134 29 }
jamie@134 30
jamie@134 31 void freearri(JNIEnv *env, jintArray arr, jlong map) {
jamie@134 32 void *ptr = 0;
jamie@134 33 ptr = *(void **)&map;
jamie@134 34 (*env)->ReleaseIntArrayElements(env, arr, ptr, JNI_ABORT);
jamie@134 35 }
jamie@134 36 %}
jamie@134 37
jamie@134 38
jamie@134 39 %pragma(java) modulecode=%{
jamie@134 40 private static long arrPtr(Object o) {
jamie@154 41 if (o instanceof double[]) {
jamie@154 42 return arr2voidd((double[])o);
jamie@134 43 }
jamie@134 44 else if (o instanceof int[]) {
jamie@134 45 return arr2voidi((int[])o);
jamie@134 46 }
jamie@134 47 else if (o == null) {
jamie@134 48 return 0L;
jamie@134 49 }
jamie@134 50 throw new IllegalArgumentException();
jamie@134 51 }
jamie@134 52
jamie@134 53 private static void freeArrPtr(Object o, long addr) {
jamie@154 54 if (o instanceof double[]) {
jamie@154 55 freearrd((double[])o, addr);
jamie@134 56 return;
jamie@134 57 }
jamie@134 58 else if (o instanceof int[]) {
jamie@134 59 freearri((int[])o, addr);
jamie@134 60 return;
jamie@134 61 }
jamie@134 62 else if (o == null) {
jamie@134 63 return;
jamie@134 64 }
jamie@134 65 throw new IllegalArgumentException();
jamie@134 66 }
jamie@134 67 %}
jamie@134 68
jamie@134 69 %typemap(jstype) void *argv "Object"
jamie@134 70 %typemap(javain,pre=" long tmp$javainput = arrPtr($javainput);",post=" freeArrPtr($javainput, tmp$javainput);") void *argv "tmp$javainput"
jamie@134 71
jamie@134 72 %include xtract_redeclare.i
jamie@134 73