1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
|
#include "javasci_SciDoubleArray.h"
/********************************************************************************************************/
/* Allan CORNET */
/* INRIA 2005 */
/********************************************************************************************************/
/********************************************************************************************************/
/* public native boolean Job(String job); */
JNIEXPORT jboolean JNICALL Java_javasci_SciDoubleArray_Job(JNIEnv *env , jobject obj_this, jstring job)
/********************************************************************************************************/
{
const char *cjob;
jboolean bOK=0;
/* get the class */
jclass class_Mine = (*env)->GetObjectClass(env, obj_this);
/* get the field value */
cjob = (*env)->GetStringUTFChars(env, job, NULL);
if (strlen(cjob) >= MAX_STR)
{
fprintf(stderr,"Error in Java_javasci_SciDoubleArray_Job routine (line too long).\n");
bOK=0;
}
else
{
if ( GetInterfState() == 0) { EnableInterf(); Initialize();}
if (send_scilab_job((char*)cjob))
{
fprintf(stderr,"Error in Java_javasci_SciDoubleArray_Job routine.\n");
bOK=0;
}
else bOK=1;
}
(*env)->ReleaseStringUTFChars(env, job , cjob);
return bOK;
}
/********************************************************************************************************/
/*! public native void Get(); */
JNIEXPORT void JNICALL Java_javasci_SciDoubleArray_Get(JNIEnv *env , jobject obj_this)
/********************************************************************************************************/
{
int cm,cn,lp;
const char *cname;
/* get the class */
jclass class_Mine = (*env)->GetObjectClass(env, obj_this);
/* get the fields i.e x,m,n,name */
jfieldID id_x = (*env)->GetFieldID(env, class_Mine, "x", "[D");
jfieldID id_name = (*env)->GetFieldID(env, class_Mine, "name","Ljava/lang/String;");
jfieldID id_m = (*env)->GetFieldID(env, class_Mine, "m", "I");
jfieldID id_n = (*env)->GetFieldID(env, class_Mine, "n", "I");
/* get the field value */
jdoubleArray jx = (*env)->GetObjectField(env, obj_this, id_x);
jstring jname = (jstring) (*env)->GetObjectField(env, obj_this, id_name);
jint jm = (*env)->GetIntField(env, obj_this, id_m);
jint jn = (*env)->GetIntField(env, obj_this, id_n);
double *cx = (*env)->GetDoubleArrayElements(env,jx,NULL);
cname = (*env)->GetStringUTFChars(env, jname, NULL);
if ( GetInterfState() == 0) { EnableInterf(); Initialize();}
cm=jm;cn=jn;
if ( ! C2F(cmatptr)((char *)cname, &cm, &cn, &lp,(unsigned long)strlen(cname)))
{
fprintf(stderr,"Error in Java_javasci_SciDoubleArray_Get (1).\n");
}
else
if (! C2F(creadmat)((char *)cname,&cm, &cn,cx,(unsigned long)strlen(cname) ))
{
fprintf(stderr,"Error in Java_javasci_SciDoubleArray_Get (2).\n");
}
(*env)->ReleaseStringUTFChars(env, jname , cname);
(*env)->ReleaseDoubleArrayElements(env,jx,cx,0);
}
/********************************************************************************************************/
/*! public native void Send(); */
JNIEXPORT void JNICALL Java_javasci_SciDoubleArray_Send(JNIEnv *env , jobject obj_this)
/********************************************************************************************************/
{
int cm,cn;
const char *cname;
/* get the class */
jclass class_Mine = (*env)->GetObjectClass(env, obj_this);
/* get the fields i.e x,m,n,name */
jfieldID id_x = (*env)->GetFieldID(env, class_Mine, "x", "[D");
jfieldID id_name = (*env)->GetFieldID(env, class_Mine, "name","Ljava/lang/String;");
jfieldID id_m = (*env)->GetFieldID(env, class_Mine, "m", "I");
jfieldID id_n = (*env)->GetFieldID(env, class_Mine, "n", "I");
/* get the field value */
jdoubleArray jx = (*env)->GetObjectField(env, obj_this, id_x);
jstring jname = (jstring) (*env)->GetObjectField(env, obj_this, id_name);
jint jm = (*env)->GetIntField(env, obj_this, id_m);
jint jn = (*env)->GetIntField(env, obj_this, id_n);
double *cx = (*env)->GetDoubleArrayElements(env,jx,NULL);
cname = (*env)->GetStringUTFChars(env, jname, NULL);
if ( GetInterfState() == 0) { EnableInterf(); Initialize();}
cm=jm;cn=jn;
if (!C2F(cwritemat)((char *)cname,&cm,&cn,cx,(unsigned long)strlen(cname)))
{
fprintf(stderr,"Error in Java_javasci_SciDoubleArray_Send.\n");
}
(*env)->ReleaseStringUTFChars(env, jname , cname);
(*env)->ReleaseDoubleArrayElements(env,jx,cx,0);
}
/********************************************************************************************************/
/*! public native double GetElement(int indr, int indc); */
JNIEXPORT jdouble JNICALL Java_javasci_SciDoubleArray_GetElement(JNIEnv *env , jobject obj_this,jint indrarg, jint indcarg)
{
int cm,cn,lp;
const char *cname;
double Value=0.0;
/* get the class */
jclass class_Mine = (*env)->GetObjectClass(env, obj_this);
/* get the fields i.e x,m,n,name */
jfieldID id_x = (*env)->GetFieldID(env, class_Mine, "x", "[D");
jfieldID id_name = (*env)->GetFieldID(env, class_Mine, "name","Ljava/lang/String;");
jfieldID id_m = (*env)->GetFieldID(env, class_Mine, "m", "I");
jfieldID id_n = (*env)->GetFieldID(env, class_Mine, "n", "I");
/* get the field value */
jdoubleArray jx = (*env)->GetObjectField(env, obj_this, id_x);
jstring jname = (jstring) (*env)->GetObjectField(env, obj_this, id_name);
jint jm = (*env)->GetIntField(env, obj_this, id_m);
jint jn = (*env)->GetIntField(env, obj_this, id_n);
double *cx = (*env)->GetDoubleArrayElements(env,jx,NULL);
cname = (*env)->GetStringUTFChars(env, jname, NULL);
if ( GetInterfState() == 0) { EnableInterf(); Initialize();}
cm=jm;cn=jn;
if ( ! C2F(cmatptr)((char *)cname, &cm, &cn, &lp,(unsigned long)strlen(cname)))
{
fprintf(stderr,"Error in Java_javasci_SciDoubleArray_GetReal (1).\n");
}
else
if (! C2F(creadmat)((char *)cname,&cm, &cn,cx,(unsigned long)strlen(cname) ))
{
fprintf(stderr,"Error in Java_javasci_SciDoubleArray_GetReal (2).\n");
}
(*env)->ReleaseStringUTFChars(env, jname , cname);
if ( (indrarg<=0) || (indcarg<=0) )
{
fprintf(stderr,"Error with int indr & int indc must be >0.\n");
return 0.0;
}
if ( (indrarg>jm) || (indcarg>jn) )
{
fprintf(stderr,"Error with int indr & int indc.\n");
return 0.0;
}
Value=cx[(indcarg-1)*cm+(indrarg-1)];
return Value;
}
/********************************************************************************************************/
|