This source file includes following definitions.
- Java_mpi_Info_create
- Java_mpi_Info_getEnv
- Java_mpi_Info_getNull
- Java_mpi_Info_set
- Java_mpi_Info_get
- Java_mpi_Info_delete
- Java_mpi_Info_size
- Java_mpi_Info_getKey
- Java_mpi_Info_dup
- Java_mpi_Info_free
- Java_mpi_Info_isNull
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include "ompi_config.h"
20
21 #include <stdlib.h>
22 #ifdef HAVE_TARGETCONDITIONALS_H
23 #include <TargetConditionals.h>
24 #endif
25
26 #include "mpi.h"
27 #include "mpi_Info.h"
28 #include "mpiJava.h"
29
30 JNIEXPORT jlong JNICALL Java_mpi_Info_create(JNIEnv *env, jobject jthis)
31 {
32 MPI_Info info;
33 int rc = MPI_Info_create(&info);
34 ompi_java_exceptionCheck(env, rc);
35 return (jlong)info;
36 }
37
38 JNIEXPORT jlong JNICALL Java_mpi_Info_getEnv(JNIEnv *env, jclass clazz)
39 {
40 return (jlong)MPI_INFO_ENV;
41 }
42
43 JNIEXPORT jlong JNICALL Java_mpi_Info_getNull(JNIEnv *env, jclass clazz)
44 {
45 return (jlong)MPI_INFO_NULL;
46 }
47
48 JNIEXPORT void JNICALL Java_mpi_Info_set(
49 JNIEnv *env, jobject jthis, jlong handle, jstring jkey, jstring jvalue)
50 {
51 const char *key = (*env)->GetStringUTFChars(env, jkey, NULL),
52 *value = (*env)->GetStringUTFChars(env, jvalue, NULL);
53
54 int rc = MPI_Info_set((MPI_Info)handle, (char*)key, (char*)value);
55 ompi_java_exceptionCheck(env, rc);
56
57 (*env)->ReleaseStringUTFChars(env, jkey, key);
58 (*env)->ReleaseStringUTFChars(env, jvalue, value);
59 }
60
61 JNIEXPORT jstring JNICALL Java_mpi_Info_get(
62 JNIEnv *env, jobject jthis, jlong handle, jstring jkey)
63 {
64 MPI_Info info = (MPI_Info)handle;
65 const char *key = (*env)->GetStringUTFChars(env, jkey, NULL);
66
67 int rc, valueLen, flag;
68 rc = MPI_Info_get_valuelen(info, (char*)key, &valueLen, &flag);
69
70 if(ompi_java_exceptionCheck(env, rc) || !flag)
71 {
72 (*env)->ReleaseStringUTFChars(env, jkey, key);
73 return NULL;
74 }
75
76 char *value = (char*)calloc(valueLen + 1, sizeof(char));
77 rc = MPI_Info_get((MPI_Info)info, (char*)key, valueLen, value, &flag);
78 (*env)->ReleaseStringUTFChars(env, jkey, key);
79
80 if(ompi_java_exceptionCheck(env, rc) || !flag)
81 {
82 free(value);
83 return NULL;
84 }
85
86 jstring jvalue = (*env)->NewStringUTF(env, value);
87 free(value);
88 return jvalue;
89 }
90
91 JNIEXPORT void JNICALL Java_mpi_Info_delete(
92 JNIEnv *env, jobject jthis, jlong handle, jstring jkey)
93 {
94 const char *key = (*env)->GetStringUTFChars(env, jkey, NULL);
95 int rc = MPI_Info_delete((MPI_Info)handle, (char*)key);
96 ompi_java_exceptionCheck(env, rc);
97 (*env)->ReleaseStringUTFChars(env, jkey, key);
98 }
99
100 JNIEXPORT jint JNICALL Java_mpi_Info_size(
101 JNIEnv *env, jobject jthis, jlong handle)
102 {
103 int rc, nkeys;
104 rc = MPI_Info_get_nkeys((MPI_Info)handle, &nkeys);
105 ompi_java_exceptionCheck(env, rc);
106 return (jint)nkeys;
107 }
108
109 JNIEXPORT jstring JNICALL Java_mpi_Info_getKey(
110 JNIEnv *env, jobject jthis, jlong handle, jint i)
111 {
112 char key[MPI_MAX_INFO_KEY + 1];
113 int rc = MPI_Info_get_nthkey((MPI_Info)handle, i, key);
114
115 return ompi_java_exceptionCheck(env, rc)
116 ? NULL : (*env)->NewStringUTF(env, key);
117 }
118
119 JNIEXPORT jlong JNICALL Java_mpi_Info_dup(
120 JNIEnv *env, jobject jthis, jlong handle)
121 {
122 MPI_Info newInfo;
123 int rc = MPI_Info_dup((MPI_Info)handle, &newInfo);
124 ompi_java_exceptionCheck(env, rc);
125 return (jlong)newInfo;
126 }
127
128 JNIEXPORT jlong JNICALL Java_mpi_Info_free(
129 JNIEnv *env, jobject jthis, jlong handle)
130 {
131 MPI_Info info = (MPI_Info)handle;
132 int rc = MPI_Info_free(&info);
133 ompi_java_exceptionCheck(env, rc);
134 return (jlong)info;
135 }
136
137 JNIEXPORT jboolean JNICALL Java_mpi_Info_isNull(
138 JNIEnv *env, jobject jthis, jlong handle)
139 {
140 return (MPI_Info)handle == MPI_INFO_NULL ? JNI_TRUE : JNI_FALSE;
141 }