1 #include "amns_interface.h"
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;");
21 if(error_stat->
string != NULL) {
22 ret_message = (*env)->NewStringUTF(env,error_stat->
string);
24 ret_message = (*env)->NewStringUTF(env,
"");
26 if(ret_message == NULL) {
27 (*env)->SetObjectField(env, error_structure, paramString,
"");
29 (*env)->SetObjectField(env, error_structure, paramString, ret_message);
32 jboolean ret_flag = error_stat->
flag;
33 (*env)->SetBooleanField(env, error_structure, paramFlag, ret_flag);
37 void *reactant_handle;
41 return (
long)reactant_handle;
45 void *reactant_handle;
50 return (
long)reactant_handle;
56 void *reactant_handle = (
void*) ptr;
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");
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);
89 void *reactant_handle = (
void*) ptr;
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");
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);
118 void *reactant_handle = (
void*) ptr;
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");
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);
153 void* amns_handle = NULL;
163 return (
long) amns_handle;
169 , jlong ptr_amns_handle
170 , jobject j_reaction_type
171 , jlong ptr_reactants_handle
172 , jobject j_error_state) {
175 void* amns_cx_handle;
179 void *amns_handle = (
void*) ptr_amns_handle;
180 void *reactants_handle = (
void*) ptr_reactants_handle;
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");
187 jstring j_reaction_string = (*env)->GetObjectField(env, j_reaction_type, paramString);
188 jint j_reaction_isotope = (*env)->GetIntField(env, j_reaction_type, paramIsotope);
190 char *reaction_string = (
char*) (*env)->GetStringUTFChars(env, j_reaction_string, NULL);
191 int reaction_isotope = (int) j_reaction_isotope;
193 xx_rx.
string = reaction_string;
213 (*env)->ReleaseStringUTFChars(env, j_reaction_string, reaction_string);
215 return (
long) amns_cx_handle;
224 , jobject j_error_state ) {
227 void* amns_cx_handle = (
void *) ptrHandleRx;
228 double arg1 = (double) j_arg1;
229 double arg2 = (double) j_arg2;
242 return (jdouble) rate;
250 , jobject j_error_state) {
253 void* amns_cx_handle = (
void *) ptrHandleRX;
264 return (jlong) amns_cx_handle;
271 , jlong ptr_reactants_handle) {
273 void* reactants_handle = (
void *) ptr_reactants_handle;
280 return (
long) reactants_handle;
287 , jlong ptr_amns_handle
288 , jobject j_error_state) {
291 void* amns_handle = (
void*) ptr_amns_handle;
302 return (
long) amns_handle;
309 , jlong ptrAmnsHandle
310 , jobject j_amns_set_type
311 , jobject j_error_state) {
315 void *amns_handler = (
void *) ptrAmnsHandle;
317 jclass cls = (*env)->GetObjectClass(env, j_amns_set_type);
318 jfieldID paramString = (*env)->GetFieldID(env, cls,
"string",
"Ljava/lang/String;");
320 jstring j_set_type_string = (*env)->GetObjectField(env, j_amns_set_type, paramString);
322 char *set_type_string = (
char*)(*env)->GetStringUTFChars(env, j_set_type_string, NULL);
324 set.
string = set_type_string;
333 (*env)->ReleaseStringUTFChars(env, j_set_type_string, set_type_string);
340 , jlong ptrAmnsHandle
341 , jobject j_amns_query
342 , jobject j_amns_answer
343 , jobject j_error_state) {
348 void *amns_handler = (
void *) ptrAmnsHandle;
352 jclass cls = (*env)->GetObjectClass(env, j_amns_query);
353 jfieldID paramString = (*env)->GetFieldID(env, cls,
"string",
"Ljava/lang/String;");
355 jstring j_query_string = (*env)->GetObjectField(env, j_amns_query, paramString);
357 char *query_string = (
char*)(*env)->GetStringUTFChars(env, j_query_string, NULL);
359 query.
string = query_string;
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;");
375 jstring answer_value;
377 if(answer.
string != NULL) {
378 answer_value = (*env)->NewStringUTF(env,answer.
string);
380 answer_value = (*env)->NewStringUTF(env,
"");
382 if(answer_value == NULL) {
383 (*env)->SetObjectField(env, j_amns_answer, answerString,
"");
385 (*env)->SetObjectField(env, j_amns_answer, answerString, answer_value);
388 jint answer_number = answer.
number;
389 (*env)->SetIntField(env, j_amns_answer, answerNumber, answer_number);
395 , jlong ptrTableHandle
396 , jobject j_amns_query
397 , jobject j_amns_answer
398 , jobject j_error_state) {
403 void *table_handler = (
void *) ptrTableHandle;
407 jclass cls = (*env)->GetObjectClass(env, j_amns_query);
408 jfieldID paramString = (*env)->GetFieldID(env, cls,
"string",
"Ljava/lang/String;");
410 jstring j_query_string = (*env)->GetObjectField(env, j_amns_query, paramString);
412 char *query_string = (
char*)(*env)->GetStringUTFChars(env, j_query_string, NULL);
414 query.
string = query_string;
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;");
430 jstring answer_value;
432 if(answer.
string != NULL) {
433 answer_value = (*env)->NewStringUTF(env,answer.
string);
435 answer_value = (*env)->NewStringUTF(env,
"");
437 if(answer_value == NULL) {
438 (*env)->SetObjectField(env, j_amns_answer, answerString,
"");
440 (*env)->SetObjectField(env, j_amns_answer, answerString, answer_value);
443 jint answer_number = answer.
number;
444 (*env)->SetIntField(env, j_amns_answer, answerNumber, answer_number);
453 jobject j_error_state) {
456 void *handle_rx_in = (
void *) ptrHandleRx;
458 jsize len_arr1 = (*env)->GetArrayLength(env, j_arg1);
459 jdouble *arg1 = (*env)->GetDoubleArrayElements(env, j_arg1, 0);
461 double *outputArray = (
double *) malloc(nx *
sizeof(
double));
471 jdoubleArray outJNIArray = (*env)->NewDoubleArray(env, nx);
472 if (NULL == outJNIArray) {
475 (*env)->SetDoubleArrayRegion(env, outJNIArray, 0 , nx, outputArray);
487 jobject j_error_state) {
490 void *handle_rx_in = (
void *) ptrHandleRx;
492 jsize len_arr1 = (*env)->GetArrayLength(env, j_arg1);
493 jdouble *arg1 = (*env)->GetDoubleArrayElements(env, j_arg1, 0);
495 jsize len_arr2 = (*env)->GetArrayLength(env, j_arg2);
496 jdouble *arg2 = (*env)->GetDoubleArrayElements(env, j_arg2, 0);
498 double *outputArray = (
double *) malloc(nx *
sizeof(
double));
525 jdoubleArray outJNIArray = (*env)->NewDoubleArray(env, nx);
526 if (NULL == outJNIArray) {
529 (*env)->SetDoubleArrayRegion(env, outJNIArray, 0 , nx, outputArray);
543 jobject j_error_state) {
546 void *handle_rx_in = (
void *) ptrHandleRx;
549 jsize len_arr1 = (*env)->GetArrayLength(env, j_arg1);
550 jdouble *arg1 = (*env)->GetDoubleArrayElements(env, j_arg1, 0);
552 jsize len_arr2 = (*env)->GetArrayLength(env, j_arg2);
553 jdouble *arg2 = (*env)->GetDoubleArrayElements(env, j_arg2, 0);
555 jsize len_arr3 = (*env)->GetArrayLength(env, j_arg3);
556 jdouble *arg3 = (*env)->GetDoubleArrayElements(env, j_arg3, 0);
558 double *outputArray = (
double *) malloc(nx *
sizeof(
double));
568 jdoubleArray outJNIArray = (*env)->NewDoubleArray(env, nx);
569 if (NULL == outJNIArray) {
572 (*env)->SetDoubleArrayRegion(env, outJNIArray, 0 , nx, outputArray);
581 jlong ptrAmnsCxHandle,
582 jobject j_amns_set_type,
583 jobject j_error_state) {
586 void *amns_cx_handler = (
void *) ptrAmnsCxHandle;
588 jclass cls = (*env)->GetObjectClass(env, j_amns_set_type);
589 jfieldID paramString = (*env)->GetFieldID(env, cls,
"string",
"Ljava/lang/String;");
591 jstring j_set_type_string = (*env)->GetObjectField(env, j_amns_set_type, paramString);
593 char *set_type_string = (
char*)(*env)->GetStringUTFChars(env, j_set_type_string, NULL);
595 set.
string = set_type_string;
604 (*env)->ReleaseStringUTFChars(env, j_set_type_string, set_type_string);
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSetTable(JNIEnv *env, jobject obj, jlong ptrAmnsCxHandle, jobject j_amns_set_type, jobject j_error_state)
char * string
string version of the answer to a query
void ITM_AMNS_CC_SET_TABLE(void *handle_rx_in, amns_c_set_type *set, amns_c_error_type *error_status)
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)
int number
integer version of the answer to a query
char * string
used to pass a change in the settings
Type for error returns from the AMNS interface ("C" version)
Type for querying parameters in the AMNS package ("C" version)
const amns_c_set_type DEFAULT_AMNS_C_SET_TYPE
const amns_c_error_type DEFAULT_AMNS_C_ERROR_TYPE
JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCcSetupReactantsNumber(JNIEnv *env, jobject obj, jint idx, jint number)
const amns_c_reactant_type DEFAULT_AMNS_C_REACTANT_TYPE
Type for answers from queries in the AMNS package ("C" version)
const amns_c_answer_type DEFAULT_AMNS_C_ANSWER_TYPE
void ITM_AMNS_CC_FINISH_TABLE(void **handle_rx_inout, amns_c_error_type *error_status)
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)
Type used for specifying reactions when using the AMNS interface ("C" version)
char * string
name of the reaction (e.g. RC)
JNIEXPORT jdoubleArray JNICALL Java_amns_Amns_ItmAmnsCCRX1A(JNIEnv *env, jobject obj, jlong ptrHandleRx, jint nx, jdoubleArray j_arg1, jobject j_error_state)
void ITM_AMNS_CC_FINISH_REACTANTS(void **reactants_handle_inout)
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)
double real_specifier
a place holder to specify an optional real further characterising a reactant/product ...
JNIEXPORT long JNICALL Java_amns_Amns_ItmAmnsCCSetup(JNIEnv *env, jobject obj, jobject error_structure)
JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCCFinishReactants(JNIEnv *env, jobject obj, jlong ptr_reactants_handle)
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)
Type for setting parameters in the AMNS package ("C" version)
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)
void ITM_AMNS_CC_FINISH(void **handle_inout, amns_c_error_type *error_status)
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCGetReactant(JNIEnv *env, jobject obj, jlong ptr, jobject jSpecies)
JNIEXPORT void JNICALL Java_amns_Amns_ItmAmnsCCSetReactant(JNIEnv *env, jobject obj, jlong ptr, jobject acrt)
void ITM_AMNS_CC_GET_REACTANT(void *reactants_handle_in, int reactant_index, amns_c_reactant_type *reactant_out)
int isotope_resolved
if the reaction is different for different isotopes, isotope_resolved shoukld be set to 1 ...
JNIEXPORT long JNICALL Java_amns_Amns_ItmAmnsCCFinishTable(JNIEnv *env, jobject obj, jlong ptrHandleRX, jobject j_error_state)
void ITM_AMNS_CC_SETUP_REACTANTS(void **reactants_handle_out, char *string_in, int index_in, int n_reactants)
void ITM_AMNS_CC_RX_0_B(void *handle_rx_in, double *out, double arg1, double arg2, amns_c_error_type *error_status)
void ITM_AMNS_CC_SET_REACTANT(void *reactants_handle_in, int reactant_index, amns_c_reactant_type *reactant_in)
void ITM_AMNS_CC_SET(void *handle_in, amns_c_set_type *set, amns_c_error_type *error_status)
void ITM_AMNS_CC_QUERY(void *handle_in, amns_c_query_type *query, amns_c_answer_type *answer, amns_c_error_type *error_status)
bool flag
True if an error occurred.
const amns_c_query_type DEFAULT_AMNS_C_QUERY_TYPE
Type for indicating a single reactant or product when using the AMNS interface.
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_ItmAmnsCCSetReactantIdx(JNIEnv *env, jobject obj, jlong ptr, jint idx, jobject acrt)
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 jlong JNICALL Java_amns_Amns_ItmAmnsCCFinish(JNIEnv *env, jobject obj, jlong ptr_amns_handle, 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)
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)
char * string
text describing the error if flag was True
int int_specifier
a place holder to specify an optional integer further characterising a reactant/product ...
JNIEXPORT jlong JNICALL Java_amns_Amns_ItmAmnsCcSetupReactants(JNIEnv *env, jobject obj, jint idx)
char * string
used to pass a query about settings
int LR
reactant (LR=0) or product (LR=1)
void ITM_AMNS_CC_RX_1_A(void *handle_rx_in, int nx, double *out, double *arg1, amns_c_error_type *error_status)
void ITM_AMNS_CC_SETUP(void **handle_out, amns_c_error_type *error_status)
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 jdouble JNICALL Java_amns_Amns_ItmAmnsCCRX0B(JNIEnv *env, jobject obj, jlong ptrHandleRx, double j_arg1, double j_arg2, jobject j_error_state)