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
|
JNIEXPORT jdoubleArray JNICALL Java_GetPosition (JNIEnv * env, jobject obj){
int Vector64_Length = 3;
jdoubleArray jPosition = NULL; //Tabla que almacena las posiciones Java type
jdouble *Pos; //Vector position
C_Vectors64 *position; //Vector Position C++ type
C_Trajectory_Segment s = C_Trajectory_Segment(7);//Final
position = Get_Position (s);
if (Tratar_Excepcion() == -1) {
jclass newExceptionCls = env->FindClass("java/lang/IllegalArgumentException");
env->ThrowNew(newExceptionCls, String_Excepcion);
delete[](position);
return jPosition;
}
else {
Status_IO_Write(Result_Index[0], String_Resultado);
Status_Clear(Result_Index[0]);
}
//Crea una tabla de double tipo java
jPosition = env->NewDoubleArray(Vector64_Length);
//Saca los elementos de la tabla
Pos = env->GetDoubleArrayElements(jPosition, 0);
//initializa los valores de la tabla java con el vector velocidad devuelto
for (int i=0; i<Vector64_Length; i++) {
Pos[i] = *position[i];
}
//Libera memoria
delete[](position);
env->ReleaseDoubleArrayElements(jPosition, Pos, 0);
return jPosition;
} |
Partager