ITM AMNS: User Interface  \$Id: Doxyfile 502 2015-10-15 12:23:45Z dpc $
amns_jni_call.c File Reference
#include "amns_interface.h"
#include <stdbool.h>
#include <math.h>
#include <assert.h>
#include <stdio.h>
#include "amns_jni_call.h"
#include <jni.h>
Include dependency graph for amns_jni_call.c:

Go to the source code of this file.

Functions

void copyCError2JavaError (amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
 
JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCcSetupReactants (JNIEnv *env, jobject obj, jint idx)
 
JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCcSetupReactantsNumber (JNIEnv *env, jobject obj, jint idx, jint number)
 
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSetReactant (JNIEnv *env, jobject obj, jlong ptr, jobject acrt)
 
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSetReactantIdx (JNIEnv *env, jobject obj, jlong ptr, jint idx, jobject acrt)
 
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCGetReactant (JNIEnv *env, jobject obj, jlong ptr, jobject jSpecies)
 
JNIEXPORT long JNICALL Java_amns_Amns_ItmAmnsCCSetup (JNIEnv *env, jobject obj, jobject error_structure)
 
JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCCSetupTable (JNIEnv *env, jobject obj, jlong ptr_amns_handle, jobject j_reaction_type, jlong ptr_reactants_handle, jobject j_error_state)
 
JNIEXPORT jdouble JNICALL Java_amns_Amns_ItmAmnsCCRX0B (JNIEnv *env, jobject obj, jlong ptrHandleRx, double j_arg1, double j_arg2, jobject j_error_state)
 
JNIEXPORT long JNICALL Java_amns_Amns_ItmAmnsCCFinishTable (JNIEnv *env, jobject obj, jlong ptrHandleRX, jobject j_error_state)
 
JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCCFinishReactants (JNIEnv *env, jobject obj, jlong ptr_reactants_handle)
 
JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCCFinish (JNIEnv *env, jobject obj, jlong ptr_amns_handle, jobject j_error_state)
 
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSet (JNIEnv *env, jobject obj, jlong ptrAmnsHandle, jobject j_amns_set_type, jobject j_error_state)
 
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCQuery (JNIEnv *env, jobject obj, jlong ptrAmnsHandle, jobject j_amns_query, jobject j_amns_answer, jobject j_error_state)
 
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCQueryTable (JNIEnv *env, jobject obj, jlong ptrTableHandle, jobject j_amns_query, jobject j_amns_answer, jobject j_error_state)
 
JNIEXPORT jdoubleArray JNICALL Java_amns_Amns_ItmAmnsCCRX1A (JNIEnv *env, jobject obj, jlong ptrHandleRx, jint nx, jdoubleArray j_arg1, jobject j_error_state)
 
JNIEXPORT jdoubleArray JNICALL Java_amns_Amns_ItmAmnsCCRX1B (JNIEnv *env, jobject obj, jlong ptrHandleRx, jint nx, jdoubleArray j_arg1, jdoubleArray j_arg2, jobject j_error_state)
 
JNIEXPORT jdoubleArray JNICALL Java_amns_Amns_ItmAmnsCCRX1C (JNIEnv *env, jobject obj, jlong ptrHandleRx, jint nx, jdoubleArray j_arg1, jdoubleArray j_arg2, jdoubleArray j_arg3, jobject j_error_state)
 
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSetTable (JNIEnv *env, jobject obj, jlong ptrAmnsCxHandle, jobject j_amns_set_type, jobject j_error_state)
 

Function Documentation

void copyCError2JavaError ( amns_c_error_type error_stat,
JNIEnv *  env,
jobject  error_structure 
)

Definition at line 9 of file amns_jni_call.c.

9  {
10 
11  // we have to return values into Java
12  // note that we are playing here with pointers - they should be preserved accross calls
13  // but will not be garbage collected from java
14 
15  jclass cls = (*env)->GetObjectClass(env, error_structure);
16  jfieldID paramFlag = (*env)->GetFieldID(env, cls, "flag", "Z");
17  jfieldID paramString = (*env)->GetFieldID(env, cls, "string", "Ljava/lang/String;");
18 
19  jstring ret_message;
20 
21  if(error_stat->string != NULL) {
22  ret_message = (*env)->NewStringUTF(env,error_stat->string);
23  } else {
24  ret_message = (*env)->NewStringUTF(env,"");
25  }
26  if(ret_message == NULL) {
27  (*env)->SetObjectField(env, error_structure, paramString, "");
28  } else {
29  (*env)->SetObjectField(env, error_structure, paramString, ret_message);
30  }
31 
32  jboolean ret_flag = error_stat->flag;
33  (*env)->SetBooleanField(env, error_structure, paramFlag, ret_flag);
34 }
bool flag
True if an error occurred.
char * string
text describing the error if flag was True

Here is the caller graph for this function:

JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCCFinish ( JNIEnv *  env,
jobject  obj,
jlong  ptr_amns_handle,
jobject  j_error_state 
)

Definition at line 284 of file amns_jni_call.c.

288  {
289 
291  void* amns_handle = (void*) ptr_amns_handle;
292 
293  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_FINISH\n");
294  // DEBUG printf("[JNI] amns_handle: %lu\n", (long)ptr_amns_handle);
295  ITM_AMNS_CC_FINISH(&amns_handle, &error_stat);
296  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_FINISH\n");
297 
298  // we have to make sure that error_stat is passed back inside object
299 
300  copyCError2JavaError( &error_stat, env, j_error_state);
301 
302  return (long) amns_handle;
303 
304 }
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
void ITM_AMNS_CC_FINISH(void **handle_inout, amns_c_error_type *error_status)

Here is the call graph for this function:

JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCCFinishReactants ( JNIEnv *  env,
jobject  obj,
jlong  ptr_reactants_handle 
)

Definition at line 268 of file amns_jni_call.c.

271  {
272 
273  void* reactants_handle = (void *) ptr_reactants_handle;
274 
275  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_FINISH_REACTANTS\n");
276  // DEBUG printf("[JNI] reactants_handle: %lu\n", (long)ptr_reactants_handle);
277  ITM_AMNS_CC_FINISH_REACTANTS(&reactants_handle);
278  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_FINISH_REACTANTS\n");
279 
280  return (long) reactants_handle;
281 }
void ITM_AMNS_CC_FINISH_REACTANTS(void **reactants_handle_inout)

Here is the call graph for this function:

JNIEXPORT long JNICALL Java_amns_Amns_ItmAmnsCCFinishTable ( JNIEnv *  env,
jobject  obj,
jlong  ptrHandleRX,
jobject  j_error_state 
)

Definition at line 246 of file amns_jni_call.c.

250  {
251 
253  void* amns_cx_handle = (void *) ptrHandleRX;
254 
255  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_FINISH_TABLE\n");
256  // DEBUG printf("[JNI] cx_handle: %lu\n", (long)ptrHandleRX);
257  ITM_AMNS_CC_FINISH_TABLE(&amns_cx_handle, &error_stat);
258  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_FINISH_TABLE\n");
259 
260  // we have to make sure that error_stat is passed back inside object
261 
262  copyCError2JavaError( &error_stat, env, j_error_state );
263 
264  return (jlong) amns_cx_handle;
265 
266 }
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
void ITM_AMNS_CC_FINISH_TABLE(void **handle_rx_inout, amns_c_error_type *error_status)

Here is the call graph for this function:

JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCGetReactant ( JNIEnv *  env,
jobject  obj,
jlong  ptr,
jobject  jSpecies 
)

Definition at line 116 of file amns_jni_call.c.

116  {
117 
118  void *reactant_handle = (void*) ptr;
119 
121 
122  // at first, get all elements of the species
123  jclass cls = (*env)->GetObjectClass(env, jSpecies);
124  jfieldID paramZN = (*env)->GetFieldID(env, cls, "ZN", "D");
125  jfieldID paramZA = (*env)->GetFieldID(env, cls, "ZA", "D");
126  jfieldID paramMI = (*env)->GetFieldID(env, cls, "MI", "D");
127  jfieldID paramLR = (*env)->GetFieldID(env, cls, "LR", "I");
128  jfieldID paramRealSpecifier = (*env)->GetFieldID(env, cls, "real_specifier", "D");
129  jfieldID paramIntSpecifier = (*env)->GetFieldID(env, cls, "int_specifier", "I");
130 
131  // retrieve data into C structure
132  ITM_AMNS_CC_GET_REACTANT(reactant_handle, 1, &species);
133  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_GET_REACTANTS\n");
134 
135  // copy data back to Java
136  (*env)->SetDoubleField(env, jSpecies, paramZN, (jdouble)species.ZN );
137  (*env)->SetDoubleField(env, jSpecies, paramZA, species.ZA );
138  (*env)->SetDoubleField(env, jSpecies, paramMI, species.MI );
139  (*env)->SetIntField(env, jSpecies, paramLR, species.LR );
140  (*env)->SetDoubleField(env, jSpecies, paramRealSpecifier, species.real_specifier);
141  (*env)->SetIntField(env, jSpecies, paramIntSpecifier, species.int_specifier);
142 }
const amns_c_reactant_type DEFAULT_AMNS_C_REACTANT_TYPE
double MI
Atomic mass.
double real_specifier
a place holder to specify an optional real further characterising a reactant/product ...
void ITM_AMNS_CC_GET_REACTANT(void *reactants_handle_in, int reactant_index, amns_c_reactant_type *reactant_out)
double ZA
Atomic charge.
double ZN
Nuclear charge.
Type for indicating a single reactant or product when using the AMNS interface.
int int_specifier
a place holder to specify an optional integer further characterising a reactant/product ...
int LR
reactant (LR=0) or product (LR=1)

Here is the call graph for this function:

JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCQuery ( JNIEnv *  env,
jobject  obj,
jlong  ptrAmnsHandle,
jobject  j_amns_query,
jobject  j_amns_answer,
jobject  j_error_state 
)

Definition at line 337 of file amns_jni_call.c.

343  {
344 
348  void *amns_handler = (void *) ptrAmnsHandle;
349 
350  // we have to retrieve the query and pass it to function
351 
352  jclass cls = (*env)->GetObjectClass(env, j_amns_query);
353  jfieldID paramString = (*env)->GetFieldID(env, cls, "string", "Ljava/lang/String;");
354 
355  jstring j_query_string = (*env)->GetObjectField(env, j_amns_query, paramString);
356 
357  char *query_string = (char*)(*env)->GetStringUTFChars(env, j_query_string, NULL);
358 
359  query.string = query_string;
360 
361  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_QUERY\n");
362  // DEBUG printf("[JNI] amns_handle: %lu\n", (long)ptrAmnsHandle);
363  ITM_AMNS_CC_QUERY(amns_handler, &query, &answer, &error_stat);
364  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_QUERY\n");
365 
366  // copy error to Java
367  copyCError2JavaError( &error_stat, env, j_error_state);
368 
369  // copy answer to Java
370 
371  jclass cls_answer = (*env)->GetObjectClass(env, j_amns_answer);
372  jfieldID answerNumber = (*env)->GetFieldID(env, cls_answer, "number", "I");
373  jfieldID answerString = (*env)->GetFieldID(env, cls_answer, "string", "Ljava/lang/String;");
374 
375  jstring answer_value;
376 
377  if(answer.string != NULL) {
378  answer_value = (*env)->NewStringUTF(env,answer.string);
379  } else {
380  answer_value = (*env)->NewStringUTF(env,"");
381  }
382  if(answer_value == NULL) {
383  (*env)->SetObjectField(env, j_amns_answer, answerString, "");
384  } else {
385  (*env)->SetObjectField(env, j_amns_answer, answerString, answer_value);
386  }
387 
388  jint answer_number = answer.number;
389  (*env)->SetIntField(env, j_amns_answer, answerNumber, answer_number);
390 }
char * string
string version of the answer to a query
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
int number
integer version of the answer to a query
Type for error returns from the AMNS interface (&quot;C&quot; version)
Type for querying parameters in the AMNS package (&quot;C&quot; version)
if error_status & query
Definition: amns.pyx:11
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
if error_status & answer
Definition: amns.pyx:11
Type for answers from queries in the AMNS package (&quot;C&quot; version)
const amns_c_answer_type DEFAULT_AMNS_C_ANSWER_TYPE
void ITM_AMNS_CC_QUERY(void *handle_in, amns_c_query_type *query, amns_c_answer_type *answer, amns_c_error_type *error_status)
const amns_c_query_type DEFAULT_AMNS_C_QUERY_TYPE
char * string
used to pass a query about settings

Here is the call graph for this function:

JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCQueryTable ( JNIEnv *  env,
jobject  obj,
jlong  ptrTableHandle,
jobject  j_amns_query,
jobject  j_amns_answer,
jobject  j_error_state 
)

Definition at line 392 of file amns_jni_call.c.

398  {
399 
403  void *table_handler = (void *) ptrTableHandle;
404 
405  // we have to retrieve the query and pass it to function
406 
407  jclass cls = (*env)->GetObjectClass(env, j_amns_query);
408  jfieldID paramString = (*env)->GetFieldID(env, cls, "string", "Ljava/lang/String;");
409 
410  jstring j_query_string = (*env)->GetObjectField(env, j_amns_query, paramString);
411 
412  char *query_string = (char*)(*env)->GetStringUTFChars(env, j_query_string, NULL);
413 
414  query.string = query_string;
415 
416  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_QUERY_TABLE\n");
417  // DEBUG printf("[JNI] table_handle: %lu\n", (long)ptrTableHandle);
418  ITM_AMNS_CC_QUERY_TABLE(table_handler, &query, &answer, &error_stat);
419  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_QUERY_TABLE\n");
420 
421  // copy error to Java
422  copyCError2JavaError( &error_stat, env, j_error_state);
423 
424  // copy answer to Java
425 
426  jclass cls_answer = (*env)->GetObjectClass(env, j_amns_answer);
427  jfieldID answerNumber = (*env)->GetFieldID(env, cls_answer, "number", "I");
428  jfieldID answerString = (*env)->GetFieldID(env, cls_answer, "string", "Ljava/lang/String;");
429 
430  jstring answer_value;
431 
432  if(answer.string != NULL) {
433  answer_value = (*env)->NewStringUTF(env,answer.string);
434  } else {
435  answer_value = (*env)->NewStringUTF(env,"");
436  }
437  if(answer_value == NULL) {
438  (*env)->SetObjectField(env, j_amns_answer, answerString, "");
439  } else {
440  (*env)->SetObjectField(env, j_amns_answer, answerString, answer_value);
441  }
442 
443  jint answer_number = answer.number;
444  (*env)->SetIntField(env, j_amns_answer, answerNumber, answer_number);
445 }
char * string
string version of the answer to a query
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
int number
integer version of the answer to a query
Type for error returns from the AMNS interface (&quot;C&quot; version)
Type for querying parameters in the AMNS package (&quot;C&quot; version)
if error_status & query
Definition: amns.pyx:11
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
if error_status & answer
Definition: amns.pyx:11
Type for answers from queries in the AMNS package (&quot;C&quot; version)
const amns_c_answer_type DEFAULT_AMNS_C_ANSWER_TYPE
void ITM_AMNS_CC_QUERY_TABLE(void *handle_rx_in, amns_c_query_type *query, amns_c_answer_type *answer, amns_c_error_type *error_status)
const amns_c_query_type DEFAULT_AMNS_C_QUERY_TYPE
char * string
used to pass a query about settings

Here is the call graph for this function:

JNIEXPORT jdouble JNICALL Java_amns_Amns_ItmAmnsCCRX0B ( JNIEnv *  env,
jobject  obj,
jlong  ptrHandleRx,
double  j_arg1,
double  j_arg2,
jobject  j_error_state 
)

Definition at line 218 of file amns_jni_call.c.

224  {
225 
227  void* amns_cx_handle = (void *) ptrHandleRx;
228  double arg1 = (double) j_arg1;
229  double arg2 = (double) j_arg2;
230  double rate;
231 
232  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_RX_0_B\n");
233  // DEBUG printf("[JNI] cx_handle: %x, arg1: %e, arg2: %e\n", ptrHandleRx, arg1, arg2);
234  ITM_AMNS_CC_RX_0_B(amns_cx_handle, &rate, arg1, arg2, &error_stat);
235  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_RX_0_B\n");
236  // DEBUG printf("[JNI] rate: %e\n", rate);
237 
238  // we have to make sure that error_stat is passed back inside object
239 
240  copyCError2JavaError( &error_stat, env, j_error_state);
241 
242  return (jdouble) rate;
243 
244 }
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
void ITM_AMNS_CC_RX_0_B(void *handle_rx_in, double *out, double arg1, double arg2, amns_c_error_type *error_status)

Here is the call graph for this function:

JNIEXPORT jdoubleArray JNICALL Java_amns_Amns_ItmAmnsCCRX1A ( JNIEnv *  env,
jobject  obj,
jlong  ptrHandleRx,
jint  nx,
jdoubleArray  j_arg1,
jobject  j_error_state 
)

Definition at line 447 of file amns_jni_call.c.

453  {
454 
456  void *handle_rx_in = (void *) ptrHandleRx;
457 
458  jsize len_arr1 = (*env)->GetArrayLength(env, j_arg1);
459  jdouble *arg1 = (*env)->GetDoubleArrayElements(env, j_arg1, 0);
460 
461  double *outputArray = (double *) malloc(nx * sizeof(double));
462 
463  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_RX_1_A\n");
464  // DEBUG printf("[JNI] table_handle: %lu\n", (long)handle_rx_in);
465  ITM_AMNS_CC_RX_1_A(handle_rx_in, nx, outputArray, arg1, &error_stat);
466  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_RX_1_A\n");
467 
468  // copy error to Java
469  copyCError2JavaError( &error_stat, env, j_error_state);
470 
471  jdoubleArray outJNIArray = (*env)->NewDoubleArray(env, nx);
472  if (NULL == outJNIArray) {
473  return NULL;
474  }
475  (*env)->SetDoubleArrayRegion(env, outJNIArray, 0 , nx, outputArray);
476 
477  return outJNIArray;
478 }
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
void ITM_AMNS_CC_RX_1_A(void *handle_rx_in, int nx, double *out, double *arg1, amns_c_error_type *error_status)

Here is the call graph for this function:

JNIEXPORT jdoubleArray JNICALL Java_amns_Amns_ItmAmnsCCRX1B ( JNIEnv *  env,
jobject  obj,
jlong  ptrHandleRx,
jint  nx,
jdoubleArray  j_arg1,
jdoubleArray  j_arg2,
jobject  j_error_state 
)

Definition at line 480 of file amns_jni_call.c.

487  {
488 
490  void *handle_rx_in = (void *) ptrHandleRx;
491 
492  jsize len_arr1 = (*env)->GetArrayLength(env, j_arg1);
493  jdouble *arg1 = (*env)->GetDoubleArrayElements(env, j_arg1, 0);
494 
495  jsize len_arr2 = (*env)->GetArrayLength(env, j_arg2);
496  jdouble *arg2 = (*env)->GetDoubleArrayElements(env, j_arg2, 0);
497 
498  double *outputArray = (double *) malloc(nx * sizeof(double));
499 
500  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_RX_1_B\n");
501  // DEBUG printf("[JNI] table_handle: %lu\n", (long)handle_rx_in);
502 
503  /*printf("--- JNI CODE - arg1 - start ---\n");
504  int ii=0;
505  for(ii=0; ii<nx; ii++ ) {
506  printf("%1.6f ", arg1[ii]);
507  }
508  printf("\n");
509  printf("--- JNI CODE - end ---\n");
510  fflush(stdout);
511  printf("--- JNI CODE - arg2 - start ---\n");
512  for(ii=0; ii<nx; ii++ ) {
513  printf("%1.6f ", arg2[ii]);
514  }
515  printf("\n");
516  printf("--- JNI CODE - end ---\n");
517  fflush(stdout);*/
518 
519  ITM_AMNS_CC_RX_1_B(handle_rx_in, nx, outputArray, arg1, arg2, &error_stat);
520  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_RX_1_B\n");
521 
522  // copy error to Java
523  copyCError2JavaError( &error_stat, env, j_error_state);
524 
525  jdoubleArray outJNIArray = (*env)->NewDoubleArray(env, nx);
526  if (NULL == outJNIArray) {
527  return NULL;
528  }
529  (*env)->SetDoubleArrayRegion(env, outJNIArray, 0 , nx, outputArray);
530 
531  return outJNIArray;
532 
533 }
void ITM_AMNS_CC_RX_1_B(void *handle_rx_in, int nx, double *out, double *arg1, double *arg2, amns_c_error_type *error_status)
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE

Here is the call graph for this function:

JNIEXPORT jdoubleArray JNICALL Java_amns_Amns_ItmAmnsCCRX1C ( JNIEnv *  env,
jobject  obj,
jlong  ptrHandleRx,
jint  nx,
jdoubleArray  j_arg1,
jdoubleArray  j_arg2,
jdoubleArray  j_arg3,
jobject  j_error_state 
)

Definition at line 535 of file amns_jni_call.c.

543  {
544 
546  void *handle_rx_in = (void *) ptrHandleRx;
547 
548 
549  jsize len_arr1 = (*env)->GetArrayLength(env, j_arg1);
550  jdouble *arg1 = (*env)->GetDoubleArrayElements(env, j_arg1, 0);
551 
552  jsize len_arr2 = (*env)->GetArrayLength(env, j_arg2);
553  jdouble *arg2 = (*env)->GetDoubleArrayElements(env, j_arg2, 0);
554 
555  jsize len_arr3 = (*env)->GetArrayLength(env, j_arg3);
556  jdouble *arg3 = (*env)->GetDoubleArrayElements(env, j_arg3, 0);
557 
558  double *outputArray = (double *) malloc(nx * sizeof(double));
559 
560  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_RX_1_C\n");
561  // DEBUG printf("[JNI] table_handle: %lu\n", (long)handle_rx_in);
562  ITM_AMNS_CC_RX_1_C(handle_rx_in, nx, outputArray, arg1, arg2, arg3, &error_stat);
563  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_RX_1_C\n");
564 
565  // copy error to Java
566  copyCError2JavaError( &error_stat, env, j_error_state);
567 
568  jdoubleArray outJNIArray = (*env)->NewDoubleArray(env, nx);
569  if (NULL == outJNIArray) {
570  return NULL;
571  }
572  (*env)->SetDoubleArrayRegion(env, outJNIArray, 0 , nx, outputArray);
573 
574  return outJNIArray;
575 
576 }
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
void ITM_AMNS_CC_RX_1_C(void *handle_rx_in, int nx, double *out, double *arg1, double *arg2, double *arg3, amns_c_error_type *error_status)

Here is the call graph for this function:

JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSet ( JNIEnv *  env,
jobject  obj,
jlong  ptrAmnsHandle,
jobject  j_amns_set_type,
jobject  j_error_state 
)

Definition at line 306 of file amns_jni_call.c.

311  {
312 
315  void *amns_handler = (void *) ptrAmnsHandle;
316 
317  jclass cls = (*env)->GetObjectClass(env, j_amns_set_type);
318  jfieldID paramString = (*env)->GetFieldID(env, cls, "string", "Ljava/lang/String;");
319 
320  jstring j_set_type_string = (*env)->GetObjectField(env, j_amns_set_type, paramString);
321 
322  char *set_type_string = (char*)(*env)->GetStringUTFChars(env, j_set_type_string, NULL);
323 
324  set.string = set_type_string;
325 
326  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_SET\n");
327  // DEBUG printf("[JNI] amns_handle: %lu\n", (long)ptrAmnsHandle);
328  ITM_AMNS_CC_SET(amns_handler, &set, &error_stat);
329  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_SET\n");
330 
331  copyCError2JavaError( &error_stat, env, j_error_state);
332 
333  (*env)->ReleaseStringUTFChars(env, j_set_type_string, set_type_string);
334 
335 }
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
char * string
used to pass a change in the settings
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_set_type DEFAULT_AMNS_C_SET_TYPE
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
Type for setting parameters in the AMNS package (&quot;C&quot; version)
void ITM_AMNS_CC_SET(void *handle_in, amns_c_set_type *set, amns_c_error_type *error_status)

Here is the call graph for this function:

JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSetReactant ( JNIEnv *  env,
jobject  obj,
jlong  ptr,
jobject  acrt 
)

Definition at line 54 of file amns_jni_call.c.

54  {
55 
56  void *reactant_handle = (void*) ptr;
57 
59 
60  jclass cls = (*env)->GetObjectClass(env, acrt);
61  jfieldID paramZN = (*env)->GetFieldID(env, cls, "ZN", "D");
62  jfieldID paramZA = (*env)->GetFieldID(env, cls, "ZA", "D");
63  jfieldID paramMI = (*env)->GetFieldID(env, cls, "MI", "D");
64  jfieldID paramLR = (*env)->GetFieldID(env, cls, "LR", "I");
65  jfieldID paramRealSpecifier = (*env)->GetFieldID(env, cls, "real_specifier", "D");
66  jfieldID paramIntSpecifier = (*env)->GetFieldID(env, cls, "int_specifier", "I");
67 
68  jdouble zn = (*env)->GetDoubleField(env, acrt, paramZN);
69  jdouble za = (*env)->GetDoubleField(env, acrt, paramZA);
70  jdouble mi = (*env)->GetDoubleField(env, acrt, paramMI);
71  jint lr = (*env)->GetIntField(env, acrt, paramLR);
72  jdouble rs = (*env)->GetDoubleField(env, acrt, paramRealSpecifier);
73  jint int_spec = (*env)->GetIntField(env, acrt, paramIntSpecifier);
74 
75  // DEBUG printf("[JNI] Values from Java: %f:%f:%f:%i:%f:%i\n", zn, za, mi, lr, rs, int_spec);
76 
77  species.ZN=zn; species.ZA=za; species.MI=mi; species.LR=lr; species.real_specifier=rs; species.int_specifier=int_spec;
78  ITM_AMNS_CC_SET_REACTANT(reactant_handle, 1, &species);
79  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_SET_REACTANT\n");
80 }
const amns_c_reactant_type DEFAULT_AMNS_C_REACTANT_TYPE
double MI
Atomic mass.
double real_specifier
a place holder to specify an optional real further characterising a reactant/product ...
void ITM_AMNS_CC_SET_REACTANT(void *reactants_handle_in, int reactant_index, amns_c_reactant_type *reactant_in)
double ZA
Atomic charge.
double ZN
Nuclear charge.
Type for indicating a single reactant or product when using the AMNS interface.
int int_specifier
a place holder to specify an optional integer further characterising a reactant/product ...
int LR
reactant (LR=0) or product (LR=1)

Here is the call graph for this function:

JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSetReactantIdx ( JNIEnv *  env,
jobject  obj,
jlong  ptr,
jint  idx,
jobject  acrt 
)

Definition at line 82 of file amns_jni_call.c.

87  {
88 
89  void *reactant_handle = (void*) ptr;
90 
92 
93  jclass cls = (*env)->GetObjectClass(env, acrt);
94  jfieldID paramZN = (*env)->GetFieldID(env, cls, "ZN", "D");
95  jfieldID paramZA = (*env)->GetFieldID(env, cls, "ZA", "D");
96  jfieldID paramMI = (*env)->GetFieldID(env, cls, "MI", "D");
97  jfieldID paramLR = (*env)->GetFieldID(env, cls, "LR", "I");
98  jfieldID paramRealSpecifier = (*env)->GetFieldID(env, cls, "real_specifier", "D");
99  jfieldID paramIntSpecifier = (*env)->GetFieldID(env, cls, "int_specifier", "I");
100 
101  jdouble zn = (*env)->GetDoubleField(env, acrt, paramZN);
102  jdouble za = (*env)->GetDoubleField(env, acrt, paramZA);
103  jdouble mi = (*env)->GetDoubleField(env, acrt, paramMI);
104  jint lr = (*env)->GetIntField(env, acrt, paramLR);
105  jdouble rs = (*env)->GetDoubleField(env, acrt, paramRealSpecifier);
106  jint int_spec = (*env)->GetIntField(env, acrt, paramIntSpecifier);
107 
108  // DEBUG printf("[JNI] Values from Java: %f:%f:%f:%i:%f:%i\n", zn, za, mi, lr, rs, int_spec);
109 
110  species.ZN=zn; species.ZA=za; species.MI=mi; species.LR=lr; species.real_specifier=rs; species.int_specifier=int_spec;
111  // DEBUG printf("[JNI] Calling ITM_AMNS_CC_SET_REACTANT with index: %d\n", idx);
112  ITM_AMNS_CC_SET_REACTANT(reactant_handle, idx, &species);
113  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_SET_REACTANT\n");
114 }
const amns_c_reactant_type DEFAULT_AMNS_C_REACTANT_TYPE
double MI
Atomic mass.
double real_specifier
a place holder to specify an optional real further characterising a reactant/product ...
void ITM_AMNS_CC_SET_REACTANT(void *reactants_handle_in, int reactant_index, amns_c_reactant_type *reactant_in)
double ZA
Atomic charge.
double ZN
Nuclear charge.
Type for indicating a single reactant or product when using the AMNS interface.
int int_specifier
a place holder to specify an optional integer further characterising a reactant/product ...
int LR
reactant (LR=0) or product (LR=1)

Here is the call graph for this function:

JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSetTable ( JNIEnv *  env,
jobject  obj,
jlong  ptrAmnsCxHandle,
jobject  j_amns_set_type,
jobject  j_error_state 
)

Definition at line 578 of file amns_jni_call.c.

583  {
586  void *amns_cx_handler = (void *) ptrAmnsCxHandle;
587 
588  jclass cls = (*env)->GetObjectClass(env, j_amns_set_type);
589  jfieldID paramString = (*env)->GetFieldID(env, cls, "string", "Ljava/lang/String;");
590 
591  jstring j_set_type_string = (*env)->GetObjectField(env, j_amns_set_type, paramString);
592 
593  char *set_type_string = (char*)(*env)->GetStringUTFChars(env, j_set_type_string, NULL);
594 
595  set.string = set_type_string;
596 
597  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_SET_TABLE\n");
598  // DEBUG printf("[JNI] amns_cx_handle: %lu\n", (long)ptrAmnsCxHandle);
599  ITM_AMNS_CC_SET_TABLE(amns_cx_handler, &set, &error_stat);
600  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_SET_TABLE\n");
601 
602  copyCError2JavaError( &error_stat, env, j_error_state);
603 
604  (*env)->ReleaseStringUTFChars(env, j_set_type_string, set_type_string);
605 }
void ITM_AMNS_CC_SET_TABLE(void *handle_rx_in, amns_c_set_type *set, amns_c_error_type *error_status)
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
char * string
used to pass a change in the settings
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_set_type DEFAULT_AMNS_C_SET_TYPE
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
Type for setting parameters in the AMNS package (&quot;C&quot; version)

Here is the call graph for this function:

JNIEXPORT long JNICALL Java_amns_Amns_ItmAmnsCCSetup ( JNIEnv *  env,
jobject  obj,
jobject  error_structure 
)

Definition at line 152 of file amns_jni_call.c.

152  {
153  void* amns_handle = NULL;
155 
156  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_SETUP\n");
157  ITM_AMNS_CC_SETUP(&amns_handle, &error_stat);
158  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_SETUP\n");
159  // DEBUG printf("[JNI] Pointer: %lu\n", (long)amns_handle);
160 
161  copyCError2JavaError( &error_stat, env, error_structure );
162 
163  return (long) amns_handle;
164 }
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
void ITM_AMNS_CC_SETUP(void **handle_out, amns_c_error_type *error_status)

Here is the call graph for this function:

JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCcSetupReactants ( JNIEnv *  env,
jobject  obj,
jint  idx 
)

Definition at line 36 of file amns_jni_call.c.

36  {
37  void *reactant_handle;
38  ITM_AMNS_CC_SETUP_REACTANTS(&reactant_handle, "", idx, 1);
39  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_SETUP_REACTANTS\n");
40  // DEBUG printf("[JNI] Pointer: %lu\n", (long)reactant_handle);
41  return (long)reactant_handle;
42 }
void ITM_AMNS_CC_SETUP_REACTANTS(void **reactants_handle_out, char *string_in, int index_in, int n_reactants)

Here is the call graph for this function:

JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCcSetupReactantsNumber ( JNIEnv *  env,
jobject  obj,
jint  idx,
jint  number 
)

Definition at line 44 of file amns_jni_call.c.

44  {
45  void *reactant_handle;
46  // DEBUG printf("[JNI] Calling ITM_AMNS_CC_SETUP_REACTANTS with number of reactions: %d\n", number);
47  ITM_AMNS_CC_SETUP_REACTANTS(&reactant_handle, "", idx, number);
48  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_SETUP_REACTANTS\n");
49  // DEBUG printf("[JNI] Pointer: %lu\n", (long)reactant_handle);
50  return (long)reactant_handle;
51 }
void ITM_AMNS_CC_SETUP_REACTANTS(void **reactants_handle_out, char *string_in, int index_in, int n_reactants)

Here is the call graph for this function:

JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCCSetupTable ( JNIEnv *  env,
jobject  obj,
jlong  ptr_amns_handle,
jobject  j_reaction_type,
jlong  ptr_reactants_handle,
jobject  j_error_state 
)

Definition at line 166 of file amns_jni_call.c.

172  {
173  // declare structures used in call
175  void* amns_cx_handle;
176  amns_c_reaction_type xx_rx;
177 
178  // get pointers
179  void *amns_handle = (void*) ptr_amns_handle;
180  void *reactants_handle = (void*) ptr_reactants_handle;
181 
182  // retrieve and copy values from reaction_type object
183  jclass cls = (*env)->GetObjectClass(env, j_reaction_type);
184  jfieldID paramString = (*env)->GetFieldID(env, cls, "string", "Ljava/lang/String;");
185  jfieldID paramIsotope = (*env)->GetFieldID(env, cls, "isotopeResolved", "I");
186 
187  jstring j_reaction_string = (*env)->GetObjectField(env, j_reaction_type, paramString);
188  jint j_reaction_isotope = (*env)->GetIntField(env, j_reaction_type, paramIsotope);
189 
190  char *reaction_string = (char*) (*env)->GetStringUTFChars(env, j_reaction_string, NULL);
191  int reaction_isotope = (int) j_reaction_isotope;
192 
193  xx_rx.string = reaction_string;
194  xx_rx.isotope_resolved = reaction_isotope;
195 
196  // DEBUG printf("[JNI] Reaction type = %s, %u\n", xx_rx.string, xx_rx.isotope_resolved);
197 
198  // we can now call C function
199  // note that we will return amns_cx_handle as return value from function
200  // DEBUG printf("[JNI] Before calling ITM_AMNS_CC_SETUP_TABLE\n");
201  // DEBUG printf("[JNI] amns_handle pointer: %lu\n", (long)amns_handle);
202  // DEBUG printf("[JNI] reactants_handle pointer: %lu\n", (long)reactants_handle);
203  ITM_AMNS_CC_SETUP_TABLE(amns_handle, &xx_rx, reactants_handle, &amns_cx_handle, &error_stat);
204 
205  // DEBUG printf("[JNI] After calling ITM_AMNS_CC_SETUP_TABLE\n");
206  // DEBUG printf("[JNI] reaction_handle pointer: %lu\n", (long)amns_cx_handle);
207 
208  // we have to make sure that error_stat is passed back inside object
209 
210  copyCError2JavaError( &error_stat, env, j_error_state);
211 
212  // remember to release string
213  (*env)->ReleaseStringUTFChars(env, j_reaction_string, reaction_string);
214 
215  return (long) amns_cx_handle;
216 }
void copyCError2JavaError(amns_c_error_type *error_stat, JNIEnv *env, jobject error_structure)
Definition: amns_jni_call.c:9
Type for error returns from the AMNS interface (&quot;C&quot; version)
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
Type used for specifying reactions when using the AMNS interface (&quot;C&quot; version)
char * string
name of the reaction (e.g. RC)
int isotope_resolved
if the reaction is different for different isotopes, isotope_resolved shoukld be set to 1 ...
void ITM_AMNS_CC_SETUP_TABLE(void *handle_in, amns_c_reaction_type *reaction_type, void *reactant_handle_in, void **handle_rx_out, amns_c_error_type *error_status)

Here is the call graph for this function: