1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 * Copyright by The HDF Group. *
3 * Copyright by the Board of Trustees of the University of Illinois. *
4 * All rights reserved. *
5 * *
6 * This file is part of HDF5. The full HDF5 copyright notice, including *
7 * terms governing use, modification, and redistribution, is contained in *
8 * the COPYING file, which can be found at the root of the source code *
9 * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
10 * If you do not have access to either file, you may request a copy from *
11 * help@hdfgroup.org. *
12 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13
14 /*
15 * For details of the HDF libraries, see the HDF Documentation at:
16 * http://hdfgroup.org/HDF5/doc/
17 *
18 */
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif /* __cplusplus */
23
24 #include <stdlib.h>
25 #include "hdf5.h"
26 #include "h5jni.h"
27 #include "h5util.h"
28 #include "h5pFAPLImp.h"
29
30 /*
31 * Pointer to the JNI's Virtual Machine; used for callback functions.
32 */
33 /* extern JavaVM *jvm; */
34
35 /*
36 * TODO: H5Pset_driver
37 */
38
39 /*
40 * Class: hdf_hdf5lib_H5
41 * Method: H5Pget_driver
42 * Signature: (J)J
43 */
44 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1driver(JNIEnv * env,jclass clss,jlong plist)45 Java_hdf_hdf5lib_H5_H5Pget_1driver
46 (JNIEnv *env, jclass clss, jlong plist)
47 {
48 hid_t retVal = H5I_INVALID_HID;
49
50 UNUSED(clss);
51
52 if ((retVal = H5Pget_driver((hid_t) plist)) < 0)
53 H5_LIBRARY_ERROR(ENVONLY);
54
55 done:
56 return (jlong)retVal;
57 } /* end Java_hdf_hdf5lib_H5_H5Pget_1driver */
58
59 /*
60 * TODO: H5Pget_driver_info
61 */
62
63 /*
64 * Class: hdf_hdf5lib_H5
65 * Method: H5Pset_fclose_degree
66 * Signature: (JI)I
67 */
68 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fclose_1degree(JNIEnv * env,jclass clss,jlong plist,jint fc_degree)69 Java_hdf_hdf5lib_H5_H5Pset_1fclose_1degree
70 (JNIEnv *env, jclass clss, jlong plist, jint fc_degree)
71 {
72 herr_t retVal = FAIL;
73
74 UNUSED(clss);
75
76 if ((retVal = H5Pset_fclose_degree((hid_t)plist, (H5F_close_degree_t)fc_degree)) < 0)
77 H5_LIBRARY_ERROR(ENVONLY);
78
79 done:
80 return (jint)retVal;
81 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fclose_1degree */
82
83 /*
84 * Class: hdf_hdf5lib_H5
85 * Method: H5Pget_fclose_degree
86 * Signature: (J)I
87 */
88 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1fclose_1degree(JNIEnv * env,jclass clss,jlong plist)89 Java_hdf_hdf5lib_H5_H5Pget_1fclose_1degree
90 (JNIEnv *env, jclass clss, jlong plist)
91 {
92 H5F_close_degree_t degree = H5F_CLOSE_DEFAULT;
93
94 UNUSED(clss);
95
96 if (H5Pget_fclose_degree((hid_t)plist, °ree) < 0)
97 H5_LIBRARY_ERROR(ENVONLY);
98
99 done:
100 return (jint)degree;
101 } /* end Java_hdf_hdf5lib_H5_H5Pget_1fclose_1degree */
102
103 /*
104 * Class: hdf_hdf5lib_H5
105 * Method: H5Pset_fapl_core
106 * Signature: (JJZ)I
107 */
108 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1core(JNIEnv * env,jclass clss,jlong fapl_id,jlong increment,jboolean backing_store)109 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1core
110 (JNIEnv *env, jclass clss, jlong fapl_id, jlong increment, jboolean backing_store)
111 {
112 herr_t retVal = FAIL;
113
114 UNUSED(clss);
115
116 if ((retVal = H5Pset_fapl_core((hid_t)fapl_id, (size_t)increment, (hbool_t)backing_store)) < 0)
117 H5_LIBRARY_ERROR(ENVONLY);
118
119 done:
120 return (jint)retVal;
121 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1core */
122
123 /*
124 * Class: hdf_hdf5lib_H5
125 * Method: H5Pget_fapl_core
126 * Signature: (J[J[Z)I
127 */
128 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1fapl_1core(JNIEnv * env,jclass clss,jlong fapl_id,jlongArray increment,jbooleanArray backing_store)129 Java_hdf_hdf5lib_H5_H5Pget_1fapl_1core
130 (JNIEnv *env, jclass clss, jlong fapl_id, jlongArray increment, jbooleanArray backing_store)
131 {
132 jboolean isCopy;
133 jboolean *backArray = NULL;
134 jlong *incArray = NULL;
135 herr_t status = FAIL;
136
137 UNUSED(clss);
138
139 if (NULL == increment)
140 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_fapl_core: increment is NULL");
141 if (NULL == backing_store)
142 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_fapl_core: backing_store is NULL");
143
144 PIN_LONG_ARRAY(ENVONLY, increment, incArray, &isCopy, "H5Pget_fapl_core: incArray not pinned");
145 PIN_BOOL_ARRAY(ENVONLY, backing_store, backArray, &isCopy, "H5Pget_fapl_core: backArray not pinned");
146
147 {
148 /* Direct cast (size_t *)variable fails on 32-bit environment */
149 long long inc_temp = *incArray;
150 size_t inc_t = (size_t) inc_temp;
151
152 if ((status = H5Pget_fapl_core((hid_t)fapl_id, &inc_t, (hbool_t *)backArray)) < 0)
153 H5_LIBRARY_ERROR(ENVONLY);
154
155 *incArray = (jlong)inc_t;
156 }
157
158 done:
159 if (backArray)
160 UNPIN_BOOL_ARRAY(ENVONLY, backing_store, backArray, (status < 0) ? JNI_ABORT : 0);
161 if (incArray)
162 UNPIN_LONG_ARRAY(ENVONLY, increment, incArray, (status < 0) ? JNI_ABORT : 0);
163
164 return (jint)status;
165 } /* end Java_hdf_hdf5lib_H5_H5Pget_1fapl_1core */
166
167 /*
168 * TODO: H5Pset_core_write_tracking
169 */
170
171 /*
172 * TODO: H5Pget_core_write_tracking
173 */
174
175 /*
176 * Class: hdf_hdf5lib_H5
177 * Method: H5Pset_fapl_direct
178 * Signature: (JJJJ)I
179 */
180 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1direct(JNIEnv * env,jclass clss,jlong fapl_id,jlong alignment,jlong block_size,jlong cbuf_size)181 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1direct
182 (JNIEnv *env, jclass clss, jlong fapl_id, jlong alignment,
183 jlong block_size, jlong cbuf_size)
184 {
185 herr_t retVal = FAIL;
186
187 UNUSED(clss);
188
189 #ifdef H5_HAVE_DIRECT
190 if ((retVal = H5Pset_fapl_direct((hid_t)fapl_id, (size_t)alignment, (size_t)block_size, (size_t)cbuf_size)) < 0)
191 H5_LIBRARY_ERROR(ENVONLY);
192
193 done:
194 #else
195 UNUSED(env);
196 UNUSED(fapl_id);
197 UNUSED(alignment);
198 UNUSED(block_size);
199 UNUSED(cbuf_size);
200 #endif
201
202 return (jint)retVal;
203 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1direct */
204
205 /*
206 * Class: hdf_hdf5lib_H5
207 * Method: H5Pget_fapl_direct
208 * Signature: (J[J)I
209 */
210 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1fapl_1direct(JNIEnv * env,jclass clss,jlong fapl_id,jlongArray info)211 Java_hdf_hdf5lib_H5_H5Pget_1fapl_1direct
212 (JNIEnv *env, jclass clss, jlong fapl_id, jlongArray info)
213 {
214 #ifdef H5_HAVE_DIRECT
215 jboolean isCopy;
216 jlong *theArray = NULL;
217 size_t alignment = 0;
218 size_t block_size = 0;
219 size_t cbuf_size = 0;
220 jsize arrLen;
221 #endif
222 herr_t retVal = FAIL;
223
224 UNUSED(clss);
225
226 #ifdef H5_HAVE_DIRECT
227 if (NULL == info)
228 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_fapl_direct: info input array is NULL");
229
230 if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, info)) < 0) {
231 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
232 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_fapl_direct: info array length < 0");
233 }
234 if (arrLen < 3)
235 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_fapl_direct: info input array < 3");
236
237 PIN_LONG_ARRAY(ENVONLY, info, theArray, &isCopy, "H5Pget_fapl_direct: info not pinned");
238
239 if ((retVal = H5Pget_fapl_direct((hid_t)fapl_id, &alignment, &block_size, &cbuf_size)) < 0)
240 H5_LIBRARY_ERROR(ENVONLY);
241
242 theArray[0] = (jlong)alignment;
243 theArray[1] = (jlong)block_size;
244 theArray[2] = (jlong)cbuf_size;
245
246 done:
247 if (theArray)
248 UNPIN_LONG_ARRAY(ENVONLY, info, theArray, (retVal < 0) ? JNI_ABORT : 0);
249 #else
250 UNUSED(env);
251 UNUSED(fapl_id);
252 UNUSED(info);
253 #endif
254
255 return (jint)retVal;
256 } /* end Java_hdf_hdf5lib_H5_H5Pget_1fapl_1direct */
257
258 /*
259 * Class: hdf_hdf5lib_H5
260 * Method: H5Pset_fapl_family
261 * Signature: (JJJ)I
262 */
263 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1family(JNIEnv * env,jclass clss,jlong plist,jlong memb_size,jlong memb_plist)264 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1family
265 (JNIEnv *env, jclass clss, jlong plist, jlong memb_size, jlong memb_plist)
266 {
267 long ms = (long)memb_size;
268 herr_t retVal = FAIL;
269
270 UNUSED(clss);
271
272 if ((retVal = H5Pset_fapl_family((hid_t)plist, (hsize_t)ms, (hid_t)memb_plist)) < 0)
273 H5_LIBRARY_ERROR(ENVONLY);
274
275 done:
276 return (jint)retVal;
277 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1family */
278
279 /*
280 * Class: hdf_hdf5lib_H5
281 * Method: H5Pget_fapl_family
282 * Signature: (J[J[J)I
283 */
284 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1fapl_1family(JNIEnv * env,jclass clss,jlong tid,jlongArray memb_size,jlongArray memb_plist)285 Java_hdf_hdf5lib_H5_H5Pget_1fapl_1family
286 (JNIEnv *env, jclass clss, jlong tid, jlongArray memb_size, jlongArray memb_plist)
287 {
288 jboolean isCopy;
289 hsize_t *sa = NULL;
290 size_t i;
291 jlong *sizeArray = NULL;
292 jlong *plistArray = NULL;
293 jsize rank;
294 herr_t status = FAIL;
295
296 UNUSED(clss);
297
298 if (NULL == memb_size)
299 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_family: memb_size is NULL");
300 if (NULL == memb_plist)
301 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_family: memb_plist is NULL");
302
303 PIN_LONG_ARRAY(ENVONLY, memb_size, sizeArray, &isCopy, "H5Pget_family: sizeArray not pinned");
304
305 if ((rank = ENVPTR->GetArrayLength(ENVONLY, memb_size)) < 0) {
306 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
307 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_family: memb_size array length < 0");
308 }
309
310 if (NULL == (sa = (hsize_t *) HDmalloc((size_t) rank * sizeof(hsize_t))))
311 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_family: memory allocation failed");
312
313 PIN_LONG_ARRAY(ENVONLY, memb_plist, plistArray, &isCopy, "H5Pget_family: plistArray not pinned");
314
315 if ((status = H5Pget_fapl_family((hid_t)tid, sa, (hid_t *)plistArray)) < 0)
316 H5_LIBRARY_ERROR(ENVONLY);
317
318 for (i = 0; i < (size_t) rank; i++)
319 sizeArray[i] = (jlong)sa[i];
320
321 done:
322 if (plistArray)
323 UNPIN_LONG_ARRAY(ENVONLY, memb_plist, plistArray, (status < 0) ? JNI_ABORT : 0);
324 if (sa)
325 HDfree(sa);
326 if (sizeArray)
327 UNPIN_LONG_ARRAY(ENVONLY, memb_size, sizeArray, (status < 0) ? JNI_ABORT : 0);
328
329 return (jint)status;
330 } /* end Java_hdf_hdf5lib_H5_H5Pget_1fapl_1family */
331
332 /*
333 * Class: hdf_hdf5lib_H5
334 * Method: H5Pset_family_offset
335 * Signature: (JJ)I
336 */
337 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1family_1offset(JNIEnv * env,jclass clss,jlong fapl_id,jlong offset)338 Java_hdf_hdf5lib_H5_H5Pset_1family_1offset
339 (JNIEnv *env, jclass clss, jlong fapl_id, jlong offset)
340 {
341 herr_t retVal = FAIL;
342
343 UNUSED(clss);
344
345 if ((retVal = H5Pset_family_offset((hid_t)fapl_id, (hsize_t)offset)) < 0)
346 H5_LIBRARY_ERROR(ENVONLY);
347
348 done:
349 return (jint)retVal;
350 } /* end Java_hdf_hdf5lib_H5_H5Pset_1family_1offset */
351
352 /*
353 * Class: hdf_hdf5lib_H5
354 * Method: H5Pget_family_offset
355 * Signature: (J)J
356 */
357 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1family_1offset(JNIEnv * env,jclass clss,jlong fapl_id)358 Java_hdf_hdf5lib_H5_H5Pget_1family_1offset
359 (JNIEnv *env, jclass clss, jlong fapl_id)
360 {
361 hsize_t offset = 0;
362 herr_t retVal = FAIL;
363
364 UNUSED(clss);
365
366 if ((retVal = H5Pget_family_offset((hid_t)fapl_id, &offset)) < 0)
367 H5_LIBRARY_ERROR(ENVONLY);
368
369 done:
370 return (jlong)offset;
371 } /* end Java_hdf_hdf5lib_H5_H5Pget_1family_1offset */
372
373 /* Class: hdf_hdf5lib_H5
374 * Method: H5Pset_fapl_hdfs
375 * Signature: (J)Lhdf/hdf5lib/structs/H5FD_hdfs_fapl_t;
376 */
377 JNIEXPORT jobject JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1fapl_1hdfs(JNIEnv * env,jclass clss,jlong fapl_id)378 Java_hdf_hdf5lib_H5_H5Pget_1fapl_1hdfs
379 (JNIEnv *env, jclass clss, jlong fapl_id)
380 {
381 #ifdef H5_HAVE_LIBHDFS
382 H5FD_hdfs_fapl_t fa;
383 jvalue args[5];
384 jint j_namenode_port = 0;
385 jstring j_namenode_name = NULL;
386 jstring j_user_name = NULL;
387 jstring j_kerb_cache_path = NULL;
388 jint j_stream_buffer_size = 0;
389 #endif /* H5_HAVE_LIBHDFS */
390 jobject ret_obj = NULL;
391
392 UNUSED(clss);
393
394 #ifdef H5_HAVE_LIBHDFS
395 if (H5Pget_fapl_hdfs((hid_t)fapl_id, &fa) < 0)
396 H5_LIBRARY_ERROR(ENVONLY);
397
398 if (NULL != fa.namenode_name) {
399 if (NULL == (j_namenode_name = ENVPTR->NewStringUTF(ENVONLY, fa.namenode_name))) {
400 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
401 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_fapl_hdfs: out of memory - can't create namenode_name string");
402 }
403 }
404 args[0].l = j_namenode_name;
405
406 args[1].i = (jint)fa.namenode_port;
407
408 if (NULL != fa.user_name) {
409 if (NULL == (j_user_name = ENVPTR->NewStringUTF(ENVONLY, fa.user_name))) {
410 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
411 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_fapl_hdfs: out of memory - can't create user_name string");
412 }
413 }
414 args[2].l = j_user_name;
415
416 if (NULL != fa.kerberos_ticket_cache) {
417 if (NULL == (j_kerb_cache_path = ENVPTR->NewStringUTF(ENVONLY, fa.kerberos_ticket_cache))) {
418 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
419 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_fapl_hdfs: out of memory - can't create kerberos_ticket_cache string");
420 }
421 }
422 args[3].l = j_kerb_cache_path;
423
424 args[4].i = (jint)fa.stream_buffer_size;
425
426 CALL_CONSTRUCTOR(ENVONLY, "hdf/hdf5lib/structs/H5FD_hdfs_fapl_t", "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V", args, ret_obj);
427 #else
428 H5_UNIMPLEMENTED(ENVONLY, "H5Pget_fapl_hdfs: not implemented");
429 #endif /* H5_HAVE_LIBHDFS */
430
431 done:
432 return ret_obj;
433 } /* end Java_hdf_hdf5lib_H5_H5Pget_1fapl_1hdfs */
434
435 /*
436 * Class: hdf_hdf5lib_H5
437 * Method: H5Pset_fapl_hdfs
438 * Signature: (JLhdf/hdf5lib/structs/H5FD_hdfs_fapl_t;)V
439 */
440 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1hdfs(JNIEnv * env,jclass clss,jlong fapl_id,jobject fapl_config)441 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1hdfs
442 (JNIEnv *env, jclass clss, jlong fapl_id, jobject fapl_config)
443 {
444 #ifdef H5_HAVE_LIBHDFS
445 H5FD_hdfs_fapl_t instance;
446 const char *str = NULL;
447 jfieldID fid;
448 jstring j_str;
449 jclass cls;
450 #endif /* H5_HAVE_LIBHDFS */
451
452 UNUSED(clss);
453
454 #ifdef H5_HAVE_LIBHDFS
455 HDmemset(&instance, 0, sizeof(H5FD_hdfs_fapl_t));
456
457 if (NULL == (cls = ENVPTR->GetObjectClass(ENVONLY, fapl_config)))
458 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
459
460 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "version", "I")))
461 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
462
463 instance.version = ENVPTR->GetIntField(ENVONLY, fapl_config, fid);
464 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
465
466 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "namenode_name", "Ljava/lang/String;")))
467 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
468
469 if (NULL == (j_str = (jstring)ENVPTR->GetObjectField(ENVONLY, fapl_config, fid)))
470 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
471
472 if (j_str) {
473 PIN_JAVA_STRING(ENVONLY, j_str, str, NULL, "H5FDset_fapl_hdfs: fapl_config namenode_name not pinned");
474
475 HDstrncpy(instance.namenode_name, str, H5FD__HDFS_NODE_NAME_SPACE + 1);
476 instance.namenode_name[H5FD__HDFS_NODE_NAME_SPACE] = '\0';
477
478 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
479 str = NULL;
480 }
481 else
482 HDmemset(instance.namenode_name, 0, H5FD__HDFS_NODE_NAME_SPACE + 1);
483
484 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "namenode_port", "I")))
485 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
486
487 instance.namenode_port = ENVPTR->GetIntField(ENVONLY, fapl_config, fid);
488 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
489
490 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "user_name", "Ljava/lang/String;")))
491 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
492
493 if (NULL == (j_str = (jstring)ENVPTR->GetObjectField(ENVONLY, fapl_config, fid)))
494 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
495
496 if (j_str) {
497 PIN_JAVA_STRING(ENVONLY, j_str, str, NULL, "H5FDset_fapl_hdfs: fapl_config user_name not pinned");
498
499 HDstrncpy(instance.user_name, str, H5FD__HDFS_USER_NAME_SPACE + 1);
500 instance.user_name[H5FD__HDFS_USER_NAME_SPACE] = '\0';
501
502 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
503 str = NULL;
504 }
505 else
506 HDmemset(instance.user_name, 0, H5FD__HDFS_USER_NAME_SPACE + 1);
507
508 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "kerberos_ticket_cache", "Ljava/lang/String;")))
509 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
510
511 if (NULL == (j_str = (jstring)ENVPTR->GetObjectField(ENVONLY, fapl_config, fid)))
512 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
513
514 if (j_str) {
515 PIN_JAVA_STRING(ENVONLY, j_str, str, NULL, "H5FDset_fapl_hdfs: fapl_config kerberos_ticket_cache not pinned");
516
517 HDstrncpy(instance.kerberos_ticket_cache, str, H5FD__HDFS_KERB_CACHE_PATH_SPACE + 1);
518 instance.kerberos_ticket_cache[H5FD__HDFS_KERB_CACHE_PATH_SPACE] = '\0';
519
520 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
521 str = NULL;
522 }
523 else
524 HDmemset(instance.kerberos_ticket_cache, 0, H5FD__HDFS_KERB_CACHE_PATH_SPACE + 1);
525
526 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "stream_buffer_size", "I")))
527 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
528
529 instance.stream_buffer_size = ENVPTR->GetIntField(ENVONLY, fapl_config, fid);
530 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
531
532 if (H5Pset_fapl_hdfs((hid_t)fapl_id, &instance) < 0)
533 H5_LIBRARY_ERROR(ENVONLY);
534 #else
535 H5_UNIMPLEMENTED(ENVONLY, "H5Pset_fapl_hdfs: not implemented");
536 #endif /* H5_HAVE_LIBHDFS */
537
538 done:
539 /* NOP */;
540 #ifdef H5_HAVE_LIBHDFS
541 if (str)
542 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
543 #endif /* H5_HAVE_LIBHDFS */
544 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1hdfs */
545
546 /*
547 * Class: hdf_hdf5lib_H5
548 * Method: H5Pset_fapl_log
549 * Signature: (JLjava/lang/String;JJ)V
550 */
551 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1log(JNIEnv * env,jclass clss,jlong fapl_id,jstring logfile,jlong flags,jlong buf_size)552 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1log
553 (JNIEnv *env, jclass clss, jlong fapl_id, jstring logfile, jlong flags, jlong buf_size)
554 {
555 const char *pLogfile = NULL;
556 herr_t retVal = FAIL;
557
558 UNUSED(clss);
559
560 if (NULL == logfile)
561 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_fapl_log: log file name is NULL");
562
563 PIN_JAVA_STRING(ENVONLY, logfile, pLogfile, NULL, "H5Pset_fapl_log: log file name not pinned");
564
565 if ((retVal = H5Pset_fapl_log((hid_t)fapl_id, pLogfile, (unsigned long long)flags, (size_t)buf_size)) < 0)
566 H5_LIBRARY_ERROR(ENVONLY);
567
568 done:
569 if (pLogfile)
570 UNPIN_JAVA_STRING(ENVONLY, logfile, pLogfile);
571 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1log */
572
573 /*
574 * TODO: H5Pset_fapl_mpio
575 */
576
577 /*
578 * TODO: H5Pget_fapl_mpio
579 */
580
581 /*
582 * TODO: H5Pset_fapl_mpiposix
583 */
584
585 /*
586 * TODO: H5Pget_fapl_mpiposix
587 */
588
589 /*
590 * Class: hdf_hdf5lib_H5
591 * Method: H5Pset_fapl_multi
592 * Signature: (J[I[J[Ljava/lang/String;[JZ)V
593 */
594 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1multi(JNIEnv * env,jclass clss,jlong tid,jintArray memb_map,jlongArray memb_fapl,jobjectArray memb_name,jlongArray memb_addr,jboolean relax)595 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1multi
596 (JNIEnv *env, jclass clss, jlong tid, jintArray memb_map,
597 jlongArray memb_fapl, jobjectArray memb_name, jlongArray memb_addr, jboolean relax)
598 {
599 const char * const *mName = NULL;
600 const char *utf8 = NULL;
601 jboolean isCopy;
602 jboolean bb;
603 jobject o;
604 jstring rstring;
605 jstring obj;
606 jclass Sjc;
607 size_t i;
608 jlong *thefaplArray = NULL;
609 jlong *theaddrArray = NULL;
610 jint *themapArray = NULL;
611 char *member_name[H5FD_MEM_NTYPES];
612 herr_t status = FAIL;
613
614 UNUSED(clss);
615
616 HDmemset(member_name, 0, H5FD_MEM_NTYPES * sizeof(char *));
617
618 if (memb_map)
619 PIN_INT_ARRAY(ENVONLY, memb_map, themapArray, &isCopy, "H5Pset_fapl_multi: memb_map not pinned");
620 if (memb_fapl)
621 PIN_LONG_ARRAY(ENVONLY, memb_fapl, thefaplArray, &isCopy, "H5Pset_fapl_multi: memb_fapl not pinned");
622 if (memb_addr)
623 PIN_LONG_ARRAY(ENVONLY, memb_addr, theaddrArray, &isCopy, "H5Pset_fapl_multi: memb_addr not pinned");
624
625 if (memb_name) {
626 for (i = 0; i < H5FD_MEM_NTYPES; i++) {
627 size_t str_len;
628
629 if (NULL == (obj = (jstring) ENVPTR->GetObjectArrayElement(ENVONLY, (jobjectArray) memb_name, (jsize) i))) {
630 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
631
632 /*
633 * If the string object was NULL, skip it.
634 */
635 member_name[i] = NULL;
636 continue;
637 }
638
639 /*
640 * length = ENVPTR->GetStringUTFLength(ENVONLY, obj);
641 * CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
642 */
643
644 PIN_JAVA_STRING(ENVONLY, obj, utf8, NULL, "H5Pset_fapl_multi: string not pinned");
645
646 str_len = HDstrlen(utf8);
647
648 if (NULL == (member_name[i] = (char *) HDmalloc(str_len + 1)))
649 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pset_fapl_multi: memory allocation failed");
650
651 HDstrncpy(member_name[i], utf8, str_len + 1);
652 (member_name[i])[str_len] = '\0';
653
654 UNPIN_JAVA_STRING(ENVONLY, obj, utf8);
655 utf8 = NULL;
656
657 ENVPTR->DeleteLocalRef(ENVONLY, obj);
658 }
659
660 mName = (const char * const *)member_name;
661 }
662
663 if ((status = H5Pset_fapl_multi((hid_t)tid, (const H5FD_mem_t *)themapArray, (const hid_t *)thefaplArray,
664 mName, (const haddr_t *)theaddrArray, (hbool_t)relax)) < 0)
665 H5_LIBRARY_ERROR(ENVONLY);
666
667 if (memb_name && mName) {
668 if (NULL == (Sjc = ENVPTR->FindClass(ENVONLY, "java/lang/String")))
669 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
670
671 for (i = 0; i < H5FD_MEM_NTYPES; i++) {
672 if (!member_name[i]) continue;
673
674 if (NULL == (rstring = ENVPTR->NewStringUTF(ENVONLY, member_name[i]))) {
675 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
676 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pset_fapl_multi: out of memory - unable to construct string from UTF characters");
677 }
678
679 if (NULL == (o = ENVPTR->GetObjectArrayElement(ENVONLY, memb_name, (jsize) i))) {
680 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
681
682 /*
683 * If the string object was NULL, skip it.
684 */
685 ENVPTR->DeleteLocalRef(ENVONLY, rstring);
686 continue;
687 }
688
689 if (JNI_TRUE == (bb = ENVPTR->IsInstanceOf(ENVONLY, o, Sjc))) {
690 ENVPTR->SetObjectArrayElement(ENVONLY, memb_name, (jsize) i, (jobject)rstring);
691 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
692 }
693
694 ENVPTR->DeleteLocalRef(ENVONLY, o);
695 ENVPTR->DeleteLocalRef(ENVONLY, rstring);
696
697 HDfree(member_name[i]);
698 member_name[i] = NULL;
699 }
700 }
701
702 done:
703 for (i = 0; i < H5FD_MEM_NTYPES; i++) {
704 if (member_name[i])
705 HDfree(member_name[i]);
706 }
707 if (utf8)
708 UNPIN_JAVA_STRING(ENVONLY, obj, utf8);
709 if (theaddrArray)
710 UNPIN_LONG_ARRAY(ENVONLY, memb_addr, theaddrArray, (status < 0) ? JNI_ABORT : 0);
711 if (thefaplArray)
712 UNPIN_LONG_ARRAY(ENVONLY, memb_fapl, thefaplArray, (status < 0) ? JNI_ABORT : 0);
713 if (themapArray)
714 UNPIN_INT_ARRAY(ENVONLY, memb_map, themapArray, (status < 0) ? JNI_ABORT : 0);
715 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1multi */
716
717 /*
718 * Class: hdf_hdf5lib_H5
719 * Method: H5Pget_fapl_multi
720 * Signature: (J[I[J[Ljava/lang/String;[J)Z
721 */
722 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1fapl_1multi(JNIEnv * env,jclass clss,jlong tid,jintArray memb_map,jlongArray memb_fapl,jobjectArray memb_name,jlongArray memb_addr)723 Java_hdf_hdf5lib_H5_H5Pget_1fapl_1multi
724 (JNIEnv *env, jclass clss, jlong tid, jintArray memb_map,
725 jlongArray memb_fapl, jobjectArray memb_name, jlongArray memb_addr)
726 {
727 jboolean isCopy;
728 jstring str;
729 herr_t status = FAIL;
730 size_t i;
731 jlong *thefaplArray = NULL;
732 jlong *theaddrArray = NULL;
733 jint *themapArray = NULL;
734 char **mName = NULL;
735 int relax = 0;
736 int retVal = 0;
737
738 UNUSED(clss);
739
740 if (memb_map)
741 PIN_INT_ARRAY(ENVONLY, memb_map, themapArray, &isCopy, "H5Pget_fapl_multi: memb_map not pinned");
742 if (memb_fapl)
743 PIN_LONG_ARRAY(ENVONLY, memb_fapl, thefaplArray, &isCopy, "H5Pget_fapl_multi: memb_fapl not pinned");
744 if (memb_addr)
745 PIN_LONG_ARRAY(ENVONLY, memb_addr, theaddrArray, &isCopy, "H5Pget_fapl_multi: memb_addr not pinned");
746 if (memb_name)
747 if (NULL == (mName = (char **) HDcalloc(H5FD_MEM_NTYPES, sizeof(*mName))))
748 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_fapl_multi: memory allocation failed");
749
750 if ((status = H5Pget_fapl_multi((hid_t)tid, (H5FD_mem_t *)themapArray, (hid_t *)thefaplArray,
751 mName, (haddr_t *)theaddrArray, (hbool_t *)&relax)) < 0)
752 H5_LIBRARY_ERROR(ENVONLY);
753
754 if (memb_name && mName) {
755 for (i = 0; i < H5FD_MEM_NTYPES; i++) {
756 if (mName[i]) {
757 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, mName[i]))) {
758 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
759 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_fapl_multi: out of memory - unable to construct string from UTF characters");
760 }
761
762 ENVPTR->SetObjectArrayElement(ENVONLY, memb_name, (jsize) i, (jobject)str);
763 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
764
765 ENVPTR->DeleteLocalRef(ENVONLY, str);
766 }
767 }
768 }
769
770 retVal = (relax != 0);
771
772 done:
773 h5str_array_free(mName, H5FD_MEM_NTYPES);
774 if (theaddrArray)
775 UNPIN_LONG_ARRAY(ENVONLY, memb_addr, theaddrArray, (status < 0) ? JNI_ABORT : 0);
776 if (thefaplArray)
777 UNPIN_LONG_ARRAY(ENVONLY, memb_fapl, thefaplArray, (status < 0) ? JNI_ABORT : 0);
778 if (themapArray)
779 UNPIN_INT_ARRAY(ENVONLY, memb_map, themapArray, (status < 0) ? JNI_ABORT : 0);
780
781 return (jboolean)retVal;
782 } /* end Java_hdf_hdf5lib_H5_H5Pget_1fapl_1multi */
783
784 /*
785 * TODO: H5Pset_multi_type
786 */
787
788 /*
789 * TODO: H5Pget_multi_type
790 */
791
792 /*
793 * Class: hdf5_hdf5lib_H5
794 * Method: H5Pget_fapl_ros3
795 * Signature: (J)Lhdf/hdf5lib/structs/H5FD_ros3_fapl_t;
796 */
797 JNIEXPORT jobject JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1fapl_1ros3(JNIEnv * env,jclass clss,jlong fapl_id)798 Java_hdf_hdf5lib_H5_H5Pget_1fapl_1ros3
799 (JNIEnv *env, jclass clss, jlong fapl_id)
800 {
801 #ifdef H5_HAVE_ROS3_VFD
802 H5FD_ros3_fapl_t fa;
803 jvalue args[3];
804 jstring j_aws = NULL;
805 jstring j_id = NULL;
806 jstring j_key = NULL;
807 #endif /* H5_HAVE_ROS3_VFD */
808 jobject ret_obj = NULL;
809
810 UNUSED(clss);
811
812 #ifdef H5_HAVE_ROS3_VFD
813 /* pass fapl and fapl_t instance into library get_fapl */
814 /* store fapl details in ros3_fapl_t instance `fa` */
815 if (H5Pget_fapl_ros3((hid_t)fapl_id, &fa) < 0)
816 H5_LIBRARY_ERROR(ENVONLY);
817
818 if (NULL != fa.aws_region) {
819 if (NULL == (j_aws = ENVPTR->NewStringUTF(ENVONLY, fa.aws_region))) {
820 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
821 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_fapl_ros3: out of memory - can't create aws_region string");
822 }
823 }
824 args[0].l = j_aws;
825
826 if (NULL != fa.secret_id) {
827 if (NULL == (j_id = ENVPTR->NewStringUTF(ENVONLY, fa.secret_id))) {
828 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
829 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_fapl_ros3: out of memory - can't create secret_id string");
830 }
831 }
832 args[1].l = j_id;
833
834 if (NULL != fa.secret_key) {
835 if (NULL == (j_key = ENVPTR->NewStringUTF(ENVONLY, fa.secret_key))) {
836 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
837 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_fapl_ros3: out of memory - can't create secret_key string");
838 }
839 }
840 args[2].l = j_key;
841
842 CALL_CONSTRUCTOR(ENVONLY, "hdf/hdf5lib/structs/H5FD_ros3_fapl_t", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", args, ret_obj);
843 #else
844 H5_UNIMPLEMENTED(ENVONLY, "H5Pget_fapl_ros3: not implemented");
845 #endif /* H5_HAVE_ROS3_VFD */
846
847 done:
848 return ret_obj;
849 } /* end Java_hdf_hdf5lib_H5_H5Pget_1fapl_1ros3 */
850
851 /*
852 * Class: hdf_hdf5lib_H5
853 * Method: H5Pset_fapl_ros3
854 * Signature: (JLhdf/hdf5lib/structs/H5FD_ros3_fapl_t;)V
855 */
856 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1ros3(JNIEnv * env,jclass clss,jlong fapl_id,jobject fapl_config)857 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1ros3
858 (JNIEnv *env, jclass clss, jlong fapl_id, jobject fapl_config)
859 {
860 #ifdef H5_HAVE_ROS3_VFD
861 H5FD_ros3_fapl_t instance;
862 const char *str = NULL;
863 jfieldID fid;
864 jstring j_str;
865 jclass cls;
866 #endif /* H5_HAVE_ROS3_VFD */
867
868 UNUSED(clss);
869
870 #ifdef H5_HAVE_ROS3_VFD
871 HDmemset(&instance, 0, sizeof(H5FD_ros3_fapl_t));
872
873 if (NULL == (cls = ENVPTR->GetObjectClass(ENVONLY, fapl_config)))
874 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
875
876 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "version", "I")))
877 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
878
879 instance.version = ENVPTR->GetIntField(ENVONLY, fapl_config, fid);
880 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
881
882 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "aws_region", "Ljava/lang/String;")))
883 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
884
885 if (NULL == (j_str = (jstring)ENVPTR->GetObjectField(ENVONLY, fapl_config, fid)))
886 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
887
888 if (j_str) {
889 PIN_JAVA_STRING(ENVONLY, j_str, str, NULL, "H5Pset_fapl_ros3: fapl_config aws_region not pinned");
890
891 HDstrncpy(instance.aws_region, str, H5FD_ROS3_MAX_REGION_LEN + 1);
892 instance.aws_region[H5FD_ROS3_MAX_REGION_LEN] = '\0';
893
894 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
895 str = NULL;
896 }
897 else
898 HDmemset(instance.aws_region, 0, H5FD_ROS3_MAX_REGION_LEN + 1);
899
900 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "secret_id", "Ljava/lang/String;")))
901 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
902
903 if (NULL == (j_str = (jstring)ENVPTR->GetObjectField(ENVONLY, fapl_config, fid)))
904 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
905
906 if (j_str) {
907 PIN_JAVA_STRING(ENVONLY, j_str, str, NULL, "H5Pset_fapl_ros3: fapl_config secret_id not pinned");
908
909 HDstrncpy(instance.secret_id, str, H5FD_ROS3_MAX_SECRET_ID_LEN + 1);
910 instance.secret_id[H5FD_ROS3_MAX_SECRET_ID_LEN] = '\0';
911
912 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
913 str = NULL;
914 }
915 else
916 HDmemset(instance.secret_id, 0, H5FD_ROS3_MAX_SECRET_ID_LEN + 1);
917
918 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "secret_key", "Ljava/lang/String;")))
919 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
920
921 if (NULL == (j_str = (jstring)ENVPTR->GetObjectField(ENVONLY, fapl_config, fid)))
922 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
923
924 if (j_str) {
925 PIN_JAVA_STRING(ENVONLY, j_str, str, NULL, "H5Pset_fapl_ros3: fapl_config secret_key not pinned");
926
927 HDstrncpy(instance.secret_key, str, H5FD_ROS3_MAX_SECRET_KEY_LEN + 1);
928 instance.secret_key[H5FD_ROS3_MAX_SECRET_KEY_LEN] = '\0';
929
930 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
931 str = NULL;
932 }
933 else
934 HDmemset(instance.secret_key, 0, H5FD_ROS3_MAX_SECRET_KEY_LEN + 1);
935
936 if (instance.aws_region[0] != '\0' && instance.secret_id[0] !='\0' && instance.secret_key[0] !='\0')
937 instance.authenticate = TRUE;
938
939 if (H5Pset_fapl_ros3((hid_t)fapl_id, &instance) < 0)
940 H5_LIBRARY_ERROR(ENVONLY);
941 #else
942 H5_UNIMPLEMENTED(ENVONLY, "H5Pset_fapl_ros3: not implemented");
943 #endif /* H5_HAVE_ROS3_VFD */
944
945 done:
946 /* NOP */;
947 #ifdef H5_HAVE_ROS3_VFD
948 if (str)
949 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
950 #endif /* H5_HAVE_LIBHDFS */
951 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1ros3 */
952
953 /*
954 * Class: hdf_hdf5lib_H5
955 * Method: H5Pset_fapl_split
956 * Signature: (JLjava/lang/String;JLjava/lang/String;J)V
957 */
958 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1split(JNIEnv * env,jclass clss,jlong fapl_id,jstring metaext,jlong meta_pl_id,jstring rawext,jlong raw_pl_id)959 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1split
960 (JNIEnv *env, jclass clss, jlong fapl_id, jstring metaext, jlong meta_pl_id, jstring rawext, jlong raw_pl_id)
961 {
962 const char *mstr = NULL;
963 const char *rstr = NULL;
964 herr_t retVal = FAIL;
965
966 UNUSED(clss);
967
968 if (NULL == metaext)
969 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_fapl_split: metaext is NULL");
970 if (NULL == rawext)
971 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_fapl_split: rawext is NULL");
972
973 PIN_JAVA_STRING(ENVONLY, metaext, mstr, NULL, "H5Pset_fapl_split: metaext not pinned");
974 PIN_JAVA_STRING(ENVONLY, rawext, rstr, NULL, "H5Pset_fapl_split: rawext not pinned");
975
976 if ((retVal = H5Pset_fapl_split((hid_t)fapl_id, mstr, (hid_t)meta_pl_id, rstr, (hid_t)raw_pl_id)) < 0)
977 H5_LIBRARY_ERROR(ENVONLY);
978
979 done:
980 if (rstr)
981 UNPIN_JAVA_STRING(ENVONLY, rawext, rstr);
982 if (mstr)
983 UNPIN_JAVA_STRING(ENVONLY, metaext, mstr);
984 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1split */
985
986 /*
987 * Class: hdf_hdf5lib_H5
988 * Method: H5Pset_fapl_sec2
989 * Signature: (J)I
990 */
991 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1sec2(JNIEnv * env,jclass clss,jlong fapl_id)992 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1sec2
993 (JNIEnv *env, jclass clss, jlong fapl_id)
994 {
995 herr_t retVal = FAIL;
996
997 UNUSED(clss);
998
999 if ((retVal = H5Pset_fapl_sec2((hid_t) fapl_id)) < 0)
1000 H5_LIBRARY_ERROR(ENVONLY);
1001
1002 done:
1003 return (jint)retVal;
1004 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1sec2 */
1005
1006 /*
1007 * Class: hdf_hdf5lib_H5
1008 * Method: H5Pset_fapl_stdio
1009 * Signature: (J)I
1010 */
1011 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1stdio(JNIEnv * env,jclass clss,jlong fapl_id)1012 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1stdio
1013 (JNIEnv *env, jclass clss, jlong fapl_id)
1014 {
1015 herr_t retVal = FAIL;
1016
1017 UNUSED(clss);
1018
1019 if ((retVal = H5Pset_fapl_stdio((hid_t) fapl_id)) < 0)
1020 H5_LIBRARY_ERROR(ENVONLY);
1021
1022 done:
1023 return (jint)retVal;
1024 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1stdio */
1025
1026 /*
1027 * Class: hdf_hdf5lib_H5
1028 * Method: H5Pset_fapl_windows
1029 * Signature: (J)I
1030 */
1031 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fapl_1windows(JNIEnv * env,jclass clss,jlong fapl_id)1032 Java_hdf_hdf5lib_H5_H5Pset_1fapl_1windows
1033 (JNIEnv *env, jclass clss, jlong fapl_id)
1034 {
1035 herr_t retVal = FAIL;
1036
1037 UNUSED(clss);
1038
1039 #ifdef H5_HAVE_WINDOWS
1040 if ((retVal = H5Pset_fapl_windows((hid_t) fapl_id)) < 0)
1041 H5_LIBRARY_ERROR(ENVONLY);
1042
1043 done:
1044 #else
1045 UNUSED(env);
1046 UNUSED(fapl_id);
1047 #endif
1048 return (jint)retVal;
1049 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fapl_1windows */
1050
1051 /*
1052 * TODO: H5Pset_file_image
1053 */
1054
1055 /*
1056 * TODO: H5Pget_file_image
1057 */
1058
1059 /*
1060 * TODO: H5Pset_file_image_callbacks
1061 */
1062
1063 /*
1064 * TODO: H5Pget_file_image_callbacks
1065 */
1066
1067 /*
1068 * Class: hdf_hdf5lib_H5
1069 * Method: H5Pset_meta_block_size
1070 * Signature: (JJ)V
1071 */
1072 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1meta_1block_1size(JNIEnv * env,jclass clss,jlong plist,jlong size)1073 Java_hdf_hdf5lib_H5_H5Pset_1meta_1block_1size
1074 (JNIEnv *env, jclass clss, jlong plist, jlong size)
1075 {
1076 long sz = (long)size;
1077
1078 UNUSED(clss);
1079
1080 if (H5Pset_meta_block_size((hid_t)plist, (hsize_t)sz) < 0)
1081 H5_LIBRARY_ERROR(ENVONLY);
1082
1083 done:
1084 return;
1085 } /* end Java_hdf_hdf5lib_H5_H5Pset_1meta_1block_1size */
1086
1087 /*
1088 * Class: hdf_hdf5lib_H5
1089 * Method: H5Pget_meta_block_size
1090 * Signature: (J)J
1091 */
1092 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1meta_1block_1size(JNIEnv * env,jclass clss,jlong plist)1093 Java_hdf_hdf5lib_H5_H5Pget_1meta_1block_1size
1094 (JNIEnv *env, jclass clss, jlong plist)
1095 {
1096 hsize_t s = 0;
1097
1098 UNUSED(clss);
1099
1100 if (H5Pget_meta_block_size((hid_t)plist, &s) < 0)
1101 H5_LIBRARY_ERROR(ENVONLY);
1102
1103 done:
1104 return (jlong)s;
1105 } /* end Java_hdf_hdf5lib_H5_H5Pget_1meta_1block_1size */
1106
1107 /*
1108 * TODO: H5Pset_page_buffer_size
1109 */
1110
1111 /*
1112 * TODO: H5Pget_page_buffer_size
1113 */
1114
1115 /*
1116 * Class: hdf_hdf5lib_H5
1117 * Method: H5Pset_sieve_buf_size
1118 * Signature: (JJ)V
1119 */
1120 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1sieve_1buf_1size(JNIEnv * env,jclass clss,jlong plist,jlong size)1121 Java_hdf_hdf5lib_H5_H5Pset_1sieve_1buf_1size
1122 (JNIEnv *env, jclass clss, jlong plist, jlong size)
1123 {
1124 size_t sz = (size_t)size;
1125
1126 UNUSED(clss);
1127
1128 if (H5Pset_sieve_buf_size((hid_t)plist, (size_t)sz) < 0)
1129 H5_LIBRARY_ERROR(ENVONLY);
1130
1131 done:
1132 return;
1133 } /* end Java_hdf_hdf5lib_H5_H5Pset_1sieve_1buf_1size */
1134
1135 /*
1136 * Class: hdf_hdf5lib_H5
1137 * Method: H5Pget_sieve_buf_size
1138 * Signature: (J)J
1139 */
1140 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1sieve_1buf_1size(JNIEnv * env,jclass clss,jlong plist)1141 Java_hdf_hdf5lib_H5_H5Pget_1sieve_1buf_1size
1142 (JNIEnv *env, jclass clss, jlong plist)
1143 {
1144 size_t s = 0;
1145
1146 UNUSED(clss);
1147
1148 if (H5Pget_sieve_buf_size((hid_t)plist, &s) < 0)
1149 H5_LIBRARY_ERROR(ENVONLY);
1150
1151 done:
1152 return (jlong)s;
1153 } /* end Java_hdf_hdf5lib_H5_H5Pget_1sieve_1buf_1size */
1154
1155 /*
1156 * Class: hdf_hdf5lib_H5
1157 * Method: H5Pset_alignment
1158 * Signature: (JJJ)I
1159 */
1160 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1alignment(JNIEnv * env,jclass clss,jlong plist,jlong threshold,jlong alignment)1161 Java_hdf_hdf5lib_H5_H5Pset_1alignment
1162 (JNIEnv *env, jclass clss, jlong plist, jlong threshold, jlong alignment)
1163 {
1164 long thr = (long)threshold;
1165 long align = (long)alignment;
1166 herr_t retVal = FAIL;
1167
1168 UNUSED(clss);
1169
1170 if ((retVal = H5Pset_alignment((hid_t)plist, (hsize_t)thr, (hsize_t)align)) < 0)
1171 H5_LIBRARY_ERROR(ENVONLY);
1172
1173 done:
1174 return (jint)retVal;
1175 } /* end Java_hdf_hdf5lib_H5_H5Pset_1alignment */
1176
1177 /*
1178 * Class: hdf_hdf5lib_H5
1179 * Method: H5Pget_alignment
1180 * Signature: (J[J)I
1181 */
1182 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1alignment(JNIEnv * env,jclass clss,jlong plist,jlongArray alignment)1183 Java_hdf_hdf5lib_H5_H5Pget_1alignment
1184 (JNIEnv *env, jclass clss, jlong plist, jlongArray alignment)
1185 {
1186 jboolean isCopy;
1187 hsize_t t = 0;
1188 hsize_t a = 0;
1189 jsize arrLen;
1190 jlong *theArray = NULL;
1191 herr_t status = FAIL;
1192
1193 UNUSED(clss);
1194
1195 if (NULL == alignment)
1196 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_alignment: input alignment is NULL");
1197
1198 if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, alignment)) < 0) {
1199 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1200 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_alignment: alignment array length < 0");
1201 }
1202 if (arrLen < 2)
1203 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_alignment: alignment input array < 2");
1204
1205 PIN_LONG_ARRAY(ENVONLY, alignment, theArray, &isCopy, "H5Pget_alignment: input array not pinned");
1206
1207 if ((status = H5Pget_alignment((hid_t)plist, &t, &a)) < 0)
1208 H5_LIBRARY_ERROR(ENVONLY);
1209
1210 theArray[0] = (jlong)t;
1211 theArray[1] = (jlong)a;
1212
1213 done:
1214 if (theArray)
1215 UNPIN_LONG_ARRAY(ENVONLY, alignment, theArray, (status < 0) ? JNI_ABORT : 0);
1216
1217 return (jint)status;
1218 } /* end Java_hdf_hdf5lib_H5_H5Pget_1alignment */
1219
1220 /*
1221 * Class: hdf_hdf5lib_H5
1222 * Method: H5Pset_cache
1223 * Signature: (JIJJD)I
1224 */
1225 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1cache(JNIEnv * env,jclass clss,jlong plist,jint mdc_nelmts,jlong rdcc_nelmts,jlong rdcc_nbytes,jdouble rdcc_w0)1226 Java_hdf_hdf5lib_H5_H5Pset_1cache
1227 (JNIEnv *env, jclass clss, jlong plist, jint mdc_nelmts, jlong rdcc_nelmts,
1228 jlong rdcc_nbytes, jdouble rdcc_w0)
1229 {
1230 herr_t retVal = FAIL;
1231
1232 UNUSED(clss);
1233
1234 if ((retVal = H5Pset_cache((hid_t)plist, (int)mdc_nelmts, (size_t)rdcc_nelmts,
1235 (size_t)rdcc_nbytes, (double) rdcc_w0)) < 0)
1236 H5_LIBRARY_ERROR(ENVONLY);
1237
1238 done:
1239 return (jint)retVal;
1240 } /* end Java_hdf_hdf5lib_H5_H5Pset_1cache */
1241
1242 /*
1243 * Class: hdf_hdf5lib_H5
1244 * Method: H5Pget_cache
1245 * Signature: (J[I[J[J[D)I
1246 */
1247 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1cache(JNIEnv * env,jclass clss,jlong plist,jintArray mdc_nelmts,jlongArray rdcc_nelmts,jlongArray rdcc_nbytes,jdoubleArray rdcc_w0)1248 Java_hdf_hdf5lib_H5_H5Pget_1cache
1249 (JNIEnv *env, jclass clss, jlong plist, jintArray mdc_nelmts,
1250 jlongArray rdcc_nelmts, jlongArray rdcc_nbytes, jdoubleArray rdcc_w0)
1251 {
1252 jboolean isCopy;
1253 jdouble *w0Array = NULL;
1254 jlong *rdcc_nelmtsArray = NULL;
1255 jlong *nbytesArray = NULL;
1256 herr_t status = FAIL;
1257
1258 UNUSED(clss);
1259 UNUSED(mdc_nelmts);
1260
1261 if (NULL != rdcc_w0)
1262 PIN_DOUBLE_ARRAY(ENVONLY, rdcc_w0, w0Array, &isCopy, "H5Pget_cache: rdcc_w0 array not pinned");
1263 if (NULL != rdcc_nelmts)
1264 PIN_LONG_ARRAY(ENVONLY, rdcc_nelmts, rdcc_nelmtsArray, &isCopy, "H5Pget_cache: rdcc_nelmts array not pinned");
1265 if (NULL != rdcc_nbytes)
1266 PIN_LONG_ARRAY(ENVONLY, rdcc_nbytes, nbytesArray, &isCopy, "H5Pget_cache: nbytesArray array not pinned");
1267
1268 {
1269 /* direct cast (size_t *)variable fails on 32-bit environment */
1270 long long rdcc_nelmts_temp = *rdcc_nelmtsArray;
1271 long long nbytes_temp = *nbytesArray;
1272 size_t rdcc_nelmts_t = (size_t) rdcc_nelmts_temp;
1273 size_t nbytes_t = (size_t) nbytes_temp;
1274
1275 if ((status = H5Pget_cache((hid_t)plist, (int *)NULL, &rdcc_nelmts_t,
1276 &nbytes_t, (double *)w0Array)) < 0)
1277 H5_LIBRARY_ERROR(ENVONLY);
1278
1279 *rdcc_nelmtsArray = (jlong)rdcc_nelmts_t;
1280 *nbytesArray = (jlong)nbytes_t;
1281 } /* end direct cast special */
1282
1283 done:
1284 if (nbytesArray)
1285 UNPIN_LONG_ARRAY(ENVONLY, rdcc_nbytes, nbytesArray, (status < 0) ? JNI_ABORT : 0);
1286 if (rdcc_nelmtsArray)
1287 UNPIN_LONG_ARRAY(ENVONLY, rdcc_nelmts, rdcc_nelmtsArray, (status < 0) ? JNI_ABORT : 0);
1288 if (w0Array)
1289 UNPIN_DOUBLE_ARRAY(ENVONLY, rdcc_w0, w0Array, (status < 0) ? JNI_ABORT : 0);
1290
1291 return (jint)status;
1292 } /* end Java_hdf_hdf5lib_H5_H5Pget_1cache */
1293
1294 /*
1295 * Class: hdf_hdf5lib_H5
1296 * Method: H5Pset_elink_file_cache_size
1297 * Signature: (JI)V
1298 */
1299 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1elink_1file_1cache_1size(JNIEnv * env,jclass clss,jlong plist,jint size)1300 Java_hdf_hdf5lib_H5_H5Pset_1elink_1file_1cache_1size
1301 (JNIEnv *env, jclass clss, jlong plist, jint size)
1302 {
1303 unsigned sz = (unsigned)size;
1304
1305 UNUSED(clss);
1306
1307 if (H5Pset_elink_file_cache_size((hid_t)plist, (unsigned)sz) < 0)
1308 H5_LIBRARY_ERROR(ENVONLY);
1309
1310 done:
1311 return;
1312 } /* end Java_hdf_hdf5lib_H5_H5Pset_1elink_1file_1cache_1size */
1313
1314 /*
1315 * Class: hdf_hdf5lib_H5
1316 * Method: H5Pget_elink_file_cache_size
1317 * Signature: (J)I
1318 */
1319 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1elink_1file_1cache_1size(JNIEnv * env,jclass clss,jlong plist)1320 Java_hdf_hdf5lib_H5_H5Pget_1elink_1file_1cache_1size
1321 (JNIEnv *env, jclass clss, jlong plist)
1322 {
1323 unsigned s = 0;
1324
1325 UNUSED(clss);
1326
1327 if (H5Pget_elink_file_cache_size((hid_t)plist, &s) < 0)
1328 H5_LIBRARY_ERROR(ENVONLY);
1329
1330 done:
1331 return (jint)s;
1332 } /* end Java_hdf_hdf5lib_H5_H5Pget_1elink_1file_1cache_1size */
1333
1334 /*
1335 * Class: hdf_hdf5lib_H5
1336 * Method: H5Pset_evict_on_close
1337 * Signature: (JZ)V
1338 */
1339 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1evict_1on_1close(JNIEnv * env,jclass clss,jlong fapl_id,jboolean evict_on_close)1340 Java_hdf_hdf5lib_H5_H5Pset_1evict_1on_1close
1341 (JNIEnv *env, jclass clss, jlong fapl_id, jboolean evict_on_close)
1342 {
1343 hbool_t evict_on_close_val = FALSE;
1344 herr_t retVal = FAIL;
1345
1346 UNUSED(clss);
1347
1348 evict_on_close_val = (evict_on_close == JNI_TRUE) ? TRUE : FALSE;
1349
1350 if ((retVal = H5Pset_evict_on_close((hid_t)fapl_id, (hbool_t)evict_on_close_val)) < 0)
1351 H5_LIBRARY_ERROR(ENVONLY);
1352
1353 done:
1354 return;
1355 } /* end Java_hdf_hdf5lib_H5_H5Pset_1evict_1on_1close */
1356
1357 /*
1358 * Class: hdf_hdf5lib_H5
1359 * Method: H5Pget_evict_on_close
1360 * Signature: (J)Z
1361 */
1362 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1evict_1on_1close(JNIEnv * env,jclass clss,jlong fapl_id)1363 Java_hdf_hdf5lib_H5_H5Pget_1evict_1on_1close
1364 (JNIEnv *env, jclass clss, jlong fapl_id)
1365 {
1366 hbool_t evict_on_close_val = FALSE;
1367 jboolean bval = JNI_FALSE;
1368
1369 UNUSED(clss);
1370
1371 if (H5Pget_evict_on_close((hid_t)fapl_id, (hbool_t *)&evict_on_close_val) < 0)
1372 H5_LIBRARY_ERROR(ENVONLY);
1373
1374 bval = (evict_on_close_val == TRUE) ? JNI_TRUE : JNI_FALSE;
1375
1376 done:
1377 return bval;
1378 } /* end Java_hdf_hdf5lib_H5_H5Pget_1evict_1on_1close */
1379
1380 /*
1381 * Class: hdf_hdf5lib_H5
1382 * Method: H5Pset_metadata_read_attempts
1383 * Signature: (JJ)V
1384 */
1385 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1metadata_1read_1attempts(JNIEnv * env,jclass clss,jlong plist_id,jlong attempts)1386 Java_hdf_hdf5lib_H5_H5Pset_1metadata_1read_1attempts
1387 (JNIEnv *env, jclass clss, jlong plist_id, jlong attempts)
1388 {
1389 UNUSED(clss);
1390
1391 if (attempts <= 0)
1392 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_metadata_read_attempts: attempts <= 0");
1393
1394 if (H5Pset_metadata_read_attempts((hid_t)plist_id, (unsigned)attempts) < 0)
1395 H5_LIBRARY_ERROR(ENVONLY);
1396
1397 done:
1398 return;
1399 } /* end Java_hdf_hdf5lib_H5_H5Pset_1metadata_1read_1attempts */
1400
1401 /*
1402 * Class: hdf_hdf5lib_H5
1403 * Method: H5Pget_metadata_read_attempts
1404 * Signature: (J)J
1405 */
1406 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1metadata_1read_1attempts(JNIEnv * env,jclass clss,jlong plist_id)1407 Java_hdf_hdf5lib_H5_H5Pget_1metadata_1read_1attempts
1408 (JNIEnv *env, jclass clss, jlong plist_id)
1409 {
1410 unsigned attempts = 0;
1411
1412 UNUSED(clss);
1413
1414 if (H5Pget_metadata_read_attempts((hid_t)plist_id, &attempts) < 0)
1415 H5_LIBRARY_ERROR(ENVONLY);
1416
1417 done:
1418 return (jlong) attempts;
1419 } /* end Java_hdf_hdf5lib_H5_H5Pget_1metadata_1read_1attempts */
1420
1421 /*
1422 * Class: hdf_hdf5lib_H5
1423 * Method: H5Pset_mdc_config
1424 * Signature: (JLhdf/hdf5lib/structs/H5AC_cache_config_t;)V
1425 */
1426 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1mdc_1config(JNIEnv * env,jclass clss,jlong plist,jobject cache_config)1427 Java_hdf_hdf5lib_H5_H5Pset_1mdc_1config
1428 (JNIEnv *env, jclass clss, jlong plist, jobject cache_config)
1429 {
1430 H5AC_cache_config_t cacheinfo;
1431 const char *str = NULL;
1432 jfieldID fid;
1433 jstring j_str;
1434 jclass cls;
1435 jint flash_incr_mode;
1436 jint incr_mode;
1437 jint decr_mode;
1438 herr_t status = FAIL;
1439
1440 UNUSED(clss);
1441
1442 HDmemset(&cacheinfo, 0, sizeof(H5AC_cache_config_t));
1443
1444 if (NULL == (cls = ENVPTR->GetObjectClass(ENVONLY, cache_config)))
1445 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1446
1447 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "version", "I")))
1448 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1449
1450 cacheinfo.version = ENVPTR->GetIntField(ENVONLY, cache_config, fid);
1451 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1452
1453 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "rpt_fcn_enabled", "Z")))
1454 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1455
1456 cacheinfo.rpt_fcn_enabled = ENVPTR->GetBooleanField(ENVONLY, cache_config, fid);
1457 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1458
1459 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "open_trace_file", "Z")))
1460 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1461
1462 cacheinfo.open_trace_file = ENVPTR->GetBooleanField(ENVONLY, cache_config, fid);
1463 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1464
1465 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "close_trace_file", "Z")))
1466 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1467
1468 cacheinfo.close_trace_file = ENVPTR->GetBooleanField(ENVONLY, cache_config, fid);
1469 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1470
1471 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "trace_file_name", "Ljava/lang/String;")))
1472 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1473
1474 if (NULL == (j_str = (jstring)ENVPTR->GetObjectField(ENVONLY, cache_config, fid)))
1475 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1476
1477 if (j_str) {
1478 PIN_JAVA_STRING(ENVONLY, j_str, str, NULL, "H5Pset_mdc_config: cache_config not pinned");
1479
1480 HDstrncpy(cacheinfo.trace_file_name, str, H5AC__MAX_TRACE_FILE_NAME_LEN + 1);
1481 cacheinfo.trace_file_name[H5AC__MAX_TRACE_FILE_NAME_LEN] = '\0';
1482
1483 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
1484 str = NULL;
1485 }
1486 else
1487 HDmemset(cacheinfo.trace_file_name, 0, H5AC__MAX_TRACE_FILE_NAME_LEN + 1);
1488
1489 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "evictions_enabled", "Z")))
1490 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1491
1492 cacheinfo.evictions_enabled = ENVPTR->GetBooleanField(ENVONLY, cache_config, fid);
1493 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1494
1495 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "set_initial_size", "Z")))
1496 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1497
1498 cacheinfo.set_initial_size = ENVPTR->GetBooleanField(ENVONLY, cache_config, fid);
1499 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1500
1501 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "initial_size", "J")))
1502 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1503
1504 cacheinfo.initial_size = (size_t)ENVPTR->GetLongField(ENVONLY, cache_config, fid);
1505 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1506
1507 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "min_clean_fraction", "D")))
1508 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1509
1510 cacheinfo.min_clean_fraction = ENVPTR->GetDoubleField(ENVONLY, cache_config, fid);
1511 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1512
1513 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "max_size", "J")))
1514 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1515
1516 cacheinfo.max_size = (size_t)ENVPTR->GetLongField(ENVONLY, cache_config, fid);
1517 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1518
1519 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "min_size", "J")))
1520 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1521
1522 cacheinfo.min_size = (size_t)ENVPTR->GetLongField(ENVONLY, cache_config, fid);
1523 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1524
1525 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "epoch_length", "J")))
1526 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1527
1528 cacheinfo.epoch_length = (long int)ENVPTR->GetLongField(ENVONLY, cache_config, fid);
1529 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1530
1531 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "incr_mode", "I")))
1532 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1533
1534 incr_mode = ENVPTR->GetIntField(ENVONLY, cache_config, fid); /*(enum H5C_cache_incr_mode) */
1535 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1536 cacheinfo.incr_mode = (enum H5C_cache_incr_mode) incr_mode;
1537
1538 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "lower_hr_threshold", "D")))
1539 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1540
1541 cacheinfo.lower_hr_threshold = ENVPTR->GetDoubleField(ENVONLY, cache_config, fid);
1542 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1543
1544 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "increment", "D")))
1545 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1546
1547 cacheinfo.increment = ENVPTR->GetDoubleField(ENVONLY, cache_config, fid);
1548 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1549
1550 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "apply_max_increment", "Z")))
1551 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1552
1553 cacheinfo.apply_max_increment = ENVPTR->GetBooleanField(ENVONLY, cache_config, fid);
1554 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1555
1556 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "max_increment", "J")))
1557 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1558
1559 cacheinfo.max_increment = (size_t)ENVPTR->GetLongField(ENVONLY, cache_config, fid);
1560 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1561
1562 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "flash_incr_mode", "I")))
1563 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1564
1565 flash_incr_mode = ENVPTR->GetIntField(ENVONLY, cache_config, fid); /*(enum H5C_cache_flash_incr_mode) */
1566 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1567 cacheinfo.flash_incr_mode = (enum H5C_cache_flash_incr_mode) flash_incr_mode;
1568
1569 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "flash_multiple", "D")))
1570 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1571
1572 cacheinfo.flash_multiple = ENVPTR->GetDoubleField(ENVONLY, cache_config, fid);
1573 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1574
1575 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "flash_threshold", "D")))
1576 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1577
1578 cacheinfo.flash_threshold = ENVPTR->GetDoubleField(ENVONLY, cache_config, fid);
1579 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1580
1581 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "decr_mode", "I")))
1582 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1583
1584 decr_mode = ENVPTR->GetIntField(ENVONLY, cache_config, fid); /*(enum H5C_cache_decr_mode) */
1585 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1586 cacheinfo.decr_mode = (enum H5C_cache_decr_mode) decr_mode;
1587
1588 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "upper_hr_threshold", "D")))
1589 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1590
1591 cacheinfo.upper_hr_threshold = ENVPTR->GetDoubleField(ENVONLY, cache_config, fid);
1592 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1593
1594 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "decrement", "D")))
1595 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1596
1597 cacheinfo.decrement = ENVPTR->GetDoubleField(ENVONLY, cache_config, fid);
1598 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1599
1600 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "apply_max_decrement", "Z")))
1601 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1602
1603 cacheinfo.apply_max_decrement = ENVPTR->GetBooleanField(ENVONLY, cache_config, fid);
1604 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1605
1606 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "max_decrement", "J")))
1607 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1608
1609 cacheinfo.max_decrement = (size_t)ENVPTR->GetLongField(ENVONLY, cache_config, fid);
1610 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1611
1612 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "epochs_before_eviction", "I")))
1613 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1614
1615 cacheinfo.epochs_before_eviction = ENVPTR->GetIntField(ENVONLY, cache_config, fid);
1616 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1617
1618 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "apply_empty_reserve", "Z")))
1619 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1620
1621 cacheinfo.apply_empty_reserve = ENVPTR->GetBooleanField(ENVONLY, cache_config, fid);
1622 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1623
1624 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "empty_reserve", "D")))
1625 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1626
1627 cacheinfo.empty_reserve = ENVPTR->GetDoubleField(ENVONLY, cache_config, fid);
1628 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1629
1630 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "dirty_bytes_threshold", "J")))
1631 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1632
1633 cacheinfo.dirty_bytes_threshold = (size_t)ENVPTR->GetLongField(ENVONLY, cache_config, fid);
1634 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1635
1636 if (NULL == (fid = ENVPTR->GetFieldID(ENVONLY, cls, "metadata_write_strategy", "I")))
1637 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1638
1639 cacheinfo.metadata_write_strategy = ENVPTR->GetIntField(ENVONLY, cache_config, fid);
1640 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1641
1642 if ((status = H5Pset_mdc_config((hid_t)plist, &cacheinfo)) < 0)
1643 H5_LIBRARY_ERROR(ENVONLY);
1644
1645 done:
1646 if (str)
1647 UNPIN_JAVA_STRING(ENVONLY, j_str, str);
1648 } /* end Java_hdf_hdf5lib_H5_H5Pset_1mdc_1config */
1649
1650 /*
1651 * Class: hdf_hdf5lib_H5
1652 * Method: H5Pget_mdc_config
1653 * Signature: (J)Lhdf/hdf5lib/structs/H5AC_cache_config_t;
1654 */
1655 JNIEXPORT jobject JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1mdc_1config(JNIEnv * env,jclass clss,jlong plist)1656 Java_hdf_hdf5lib_H5_H5Pget_1mdc_1config
1657 (JNIEnv *env, jclass clss, jlong plist)
1658 {
1659 H5AC_cache_config_t cacheinfo;
1660 jstring j_str = NULL;
1661 jvalue args[30];
1662 herr_t status = FAIL;
1663 jobject ret_obj = NULL;
1664
1665 UNUSED(clss);
1666
1667 HDmemset(&cacheinfo, 0, sizeof(H5AC_cache_config_t));
1668 cacheinfo.version = H5AC__CURR_CACHE_CONFIG_VERSION;
1669
1670 if ((status = H5Pget_mdc_config((hid_t)plist, &cacheinfo)) < 0)
1671 H5_LIBRARY_ERROR(ENVONLY);
1672
1673 args[0].i = cacheinfo.version;
1674 args[1].z = cacheinfo.rpt_fcn_enabled;
1675 args[2].z = cacheinfo.open_trace_file;
1676 args[3].z = cacheinfo.close_trace_file;
1677
1678 if (NULL != cacheinfo.trace_file_name) {
1679 if (NULL == (j_str = ENVPTR->NewStringUTF(ENVONLY, cacheinfo.trace_file_name))) {
1680 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1681 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_mdc_config: out of memory - unable to construct string from UTF characters");
1682 }
1683 }
1684
1685 args[4].l = j_str;
1686 args[5].z = cacheinfo.evictions_enabled;
1687 args[6].z = cacheinfo.set_initial_size;
1688 args[7].j = (jlong)cacheinfo.initial_size;
1689 args[8].d = cacheinfo.min_clean_fraction;
1690 args[9].j = (jlong)cacheinfo.max_size;
1691 args[10].j = (jlong)cacheinfo.min_size;
1692 args[11].j = cacheinfo.epoch_length;
1693 args[12].i = cacheinfo.incr_mode;
1694 args[13].d = cacheinfo.lower_hr_threshold;
1695 args[14].d = cacheinfo.increment;
1696 args[15].z = cacheinfo.apply_max_increment;
1697 args[16].j = (jlong)cacheinfo.max_increment;
1698 args[17].i = cacheinfo.flash_incr_mode;
1699 args[18].d = cacheinfo.flash_multiple;
1700 args[19].d = cacheinfo.flash_threshold;
1701 args[20].i = cacheinfo.decr_mode;
1702 args[21].d = cacheinfo.upper_hr_threshold;
1703 args[22].d = cacheinfo.decrement;
1704 args[23].z = cacheinfo.apply_max_decrement;
1705 args[24].j = (jlong)cacheinfo.max_decrement;
1706 args[25].i = cacheinfo.epochs_before_eviction;
1707 args[26].z = cacheinfo.apply_empty_reserve;
1708 args[27].d = cacheinfo.empty_reserve;
1709 args[28].j = (jlong)cacheinfo.dirty_bytes_threshold;
1710 args[29].i = cacheinfo.metadata_write_strategy;
1711
1712 CALL_CONSTRUCTOR(ENVONLY, "hdf/hdf5lib/structs/H5AC_cache_config_t", "(IZZZLjava/lang/String;ZZJDJJJIDDZJIDDIDDZJIZDJI)V", args, ret_obj);
1713
1714 done:
1715 return ret_obj;
1716 } /* end Java_hdf_hdf5lib_H5_H5Pget_1mdc_1config */
1717
1718 /*
1719 * TODO: H5Pset_mdc_image_config
1720 */
1721
1722 /*
1723 * TODO: H5Pget_mdc_image_config
1724 */
1725
1726 /*
1727 * Class: hdf_hdf5lib_H5
1728 * Method: H5Pset_mdc_log_options
1729 * Signature: (JZLjava/lang/String;Z)V
1730 */
1731 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1mdc_1log_1options(JNIEnv * env,jclass clss,jlong fapl_id,jboolean is_enabled,jstring location,jboolean start_on_access)1732 Java_hdf_hdf5lib_H5_H5Pset_1mdc_1log_1options
1733 (JNIEnv *env, jclass clss, jlong fapl_id, jboolean is_enabled, jstring location, jboolean start_on_access)
1734 {
1735 const char *locStr = NULL;
1736 herr_t retVal = FAIL;
1737
1738 UNUSED(clss);
1739
1740 if (NULL == location)
1741 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_mdc_log_options: location string is NULL");
1742
1743 PIN_JAVA_STRING(ENVONLY, location, locStr, NULL, "H5Pset_mdc_log_options: location string not pinned");
1744
1745 if ((retVal = H5Pset_mdc_log_options((hid_t)fapl_id, (hbool_t)is_enabled, locStr, (hbool_t)start_on_access)) < 0)
1746 H5_LIBRARY_ERROR(ENVONLY);
1747
1748 done:
1749 if (locStr)
1750 UNPIN_JAVA_STRING(ENVONLY, location, locStr);
1751 } /* end Java_hdf_hdf5lib_H5_H5Pset_1mdc_1log_1options */
1752
1753 /*
1754 * Class: hdf_hdf5lib_H5
1755 * Method: H5Pget_mdc_log_options
1756 * Signature: (J[Z)Ljava/lang/String;
1757 */
1758 JNIEXPORT jstring JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1mdc_1log_1options(JNIEnv * env,jclass clss,jlong fapl_id,jbooleanArray mdc_log_options)1759 Java_hdf_hdf5lib_H5_H5Pget_1mdc_1log_1options
1760 (JNIEnv *env, jclass clss, jlong fapl_id, jbooleanArray mdc_log_options)
1761 {
1762 jboolean isCopy;
1763 jboolean *mdc_log_options_ptr = NULL;
1764 hbool_t is_enabled;
1765 hbool_t start_on_access;
1766 ssize_t status = -1;
1767 size_t location_size;
1768 jsize arrLen;
1769 char *lname = NULL;
1770 jstring str = NULL;
1771
1772 UNUSED(clss);
1773
1774 if (NULL == mdc_log_options)
1775 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_mdc_log_options: mdc_log_options is NULL");
1776
1777 if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, mdc_log_options)) < 0) {
1778 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1779 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_mdc_log_options: mdc_log_options array length < 0");
1780 }
1781 if (arrLen < 2)
1782 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_mdc_log_options: length of mdc_log_options < 2");
1783
1784 PIN_BOOL_ARRAY(ENVONLY, mdc_log_options, mdc_log_options_ptr, &isCopy, "H5Pget_mdc_log_options: mdc_log_options array not pinned");
1785
1786 /* get the length of the filename */
1787 if (H5Pget_mdc_log_options((hid_t)fapl_id, &is_enabled, NULL, &location_size, &start_on_access) < 0)
1788 H5_LIBRARY_ERROR(ENVONLY);
1789
1790 if (!location_size)
1791 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_mdc_log_options: location_size is 0");
1792
1793 location_size++; /* add extra space for the null terminator */
1794 if (NULL == (lname = (char *) HDmalloc(sizeof(char) * location_size)))
1795 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_mdc_log_options: memory allocation failed");
1796
1797 if ((status = H5Pget_mdc_log_options((hid_t)fapl_id, &is_enabled, lname, &location_size, &start_on_access)) < 0)
1798 H5_LIBRARY_ERROR(ENVONLY);
1799 lname[location_size - 1] = '\0';
1800
1801 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, lname))) {
1802 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1803 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_mdc_log_options: out of memory - unable to construct string from UTF characters");
1804 }
1805
1806 mdc_log_options_ptr[0] = (jboolean)is_enabled;
1807 mdc_log_options_ptr[1] = (jboolean)start_on_access;
1808
1809 done:
1810 if (lname)
1811 HDfree(lname);
1812 if (mdc_log_options_ptr)
1813 UNPIN_BOOL_ARRAY(ENVONLY, mdc_log_options, mdc_log_options_ptr, (status < 0) ? JNI_ABORT : 0);
1814
1815 return (jstring)str;
1816 } /* end Java_hdf_hdf5lib_H5_H5Pget_1mdc_1log_1options */
1817
1818 /*
1819 * TODO: H5Pset_all_coll_metadata_ops
1820 */
1821
1822 /*
1823 * TODO: H5Pget_all_coll_metadata_ops
1824 */
1825
1826 /*
1827 * TODO: H5Pset_coll_metadata_write
1828 */
1829
1830 /*
1831 * TODO: H5Pget_coll_metadata_write
1832 */
1833
1834 /*
1835 * Class: hdf_hdf5lib_H5
1836 * Method: H5Pset_gc_references
1837 * Signature: (JZ)I
1838 */
1839 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1gc_1references(JNIEnv * env,jclass clss,jlong fapl_id,jboolean gc_ref)1840 Java_hdf_hdf5lib_H5_H5Pset_1gc_1references
1841 (JNIEnv *env, jclass clss, jlong fapl_id, jboolean gc_ref)
1842 {
1843 unsigned gc_ref_val = 0;
1844 herr_t retVal = FAIL;
1845
1846 UNUSED(clss);
1847
1848 gc_ref_val = (gc_ref == JNI_TRUE) ? 1 : 0;
1849
1850 if ((retVal = H5Pset_gc_references((hid_t)fapl_id, gc_ref_val)) < 0)
1851 H5_LIBRARY_ERROR(ENVONLY);
1852
1853 done:
1854 return (jint)retVal;
1855 } /* end Java_hdf_hdf5lib_H5_H5Pset_1gc_1references */
1856
1857 /*
1858 * Class: hdf_hdf5lib_H5
1859 * Method: H5Pget_gc_references
1860 * Signature: (J)Z
1861 */
1862 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1gc_1references(JNIEnv * env,jclass clss,jlong fapl_id)1863 Java_hdf_hdf5lib_H5_H5Pget_1gc_1references
1864 (JNIEnv *env, jclass clss, jlong fapl_id)
1865 {
1866 unsigned gc_ref_val = 0;
1867 jboolean bval = JNI_FALSE;
1868
1869 UNUSED(clss);
1870
1871 if (H5Pget_gc_references((hid_t)fapl_id, (unsigned *)&gc_ref_val) < 0)
1872 H5_LIBRARY_ERROR(ENVONLY);
1873
1874 bval = (gc_ref_val == 1) ? JNI_TRUE : JNI_FALSE;
1875
1876 done:
1877 return bval;
1878 } /* end Java_hdf_hdf5lib_H5_H5Pget_1gc_1references */
1879
1880 /*
1881 * Class: hdf_hdf5lib_H5
1882 * Method: H5Pset_small_data_block_size
1883 * Signature: (JJ)I
1884 */
1885 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1small_1data_1block_1size(JNIEnv * env,jclass clss,jlong plist,jlong size)1886 Java_hdf_hdf5lib_H5_H5Pset_1small_1data_1block_1size
1887 (JNIEnv *env, jclass clss, jlong plist, jlong size)
1888 {
1889 long sz = (long)size;
1890 herr_t retVal = FAIL;
1891
1892 UNUSED(clss);
1893
1894 if ((retVal = H5Pset_small_data_block_size((hid_t)plist, (hsize_t)sz)) < 0)
1895 H5_LIBRARY_ERROR(ENVONLY);
1896
1897 done:
1898 return (jint)retVal;
1899 } /* end Java_hdf_hdf5lib_H5_H5Pset_1small_1data_1block_1size */
1900
1901 /*
1902 * Class: hdf_hdf5lib_H5
1903 * Method: H5Pget_small_data_block_size
1904 * Signature: (J)J
1905 */
1906 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1small_1data_1block_1size(JNIEnv * env,jclass clss,jlong plist)1907 Java_hdf_hdf5lib_H5_H5Pget_1small_1data_1block_1size
1908 (JNIEnv *env, jclass clss, jlong plist)
1909 {
1910 hsize_t s = 0;
1911
1912 UNUSED(clss);
1913
1914 if (H5Pget_small_data_block_size((hid_t)plist, &s) < 0)
1915 H5_LIBRARY_ERROR(ENVONLY);
1916
1917 done:
1918 return (jlong)s;
1919 } /* end Java_hdf_hdf5lib_H5_H5Pget_1small_1data_1block_1size */
1920
1921 /*
1922 * Class: hdf_hdf5lib_H5
1923 * Method: H5Pset_libver_bounds
1924 * Signature: (JII)I
1925 */
1926 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1libver_1bounds(JNIEnv * env,jclass clss,jlong fapl_id,jint low,jint high)1927 Java_hdf_hdf5lib_H5_H5Pset_1libver_1bounds
1928 (JNIEnv *env, jclass clss, jlong fapl_id, jint low, jint high)
1929 {
1930 herr_t retVal = FAIL;
1931
1932 UNUSED(clss);
1933
1934 if ((retVal = H5Pset_libver_bounds((hid_t)fapl_id, (H5F_libver_t)low, (H5F_libver_t)high)) < 0)
1935 H5_LIBRARY_ERROR(ENVONLY);
1936
1937 done:
1938 return (jint)retVal;
1939 } /* end Java_hdf_hdf5lib_H5_H5Pset_1libver_1bounds */
1940
1941 /*
1942 * Class: hdf_hdf5lib_H5
1943 * Method: H5Pget_libver_bounds
1944 * Signature: (J[I)I
1945 */
1946 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1libver_1bounds(JNIEnv * env,jclass clss,jlong fapl_id,jintArray libver)1947 Java_hdf_hdf5lib_H5_H5Pget_1libver_1bounds
1948 (JNIEnv *env, jclass clss, jlong fapl_id, jintArray libver)
1949 {
1950 jboolean isCopy;
1951 jint *theArray = NULL;
1952 herr_t retVal = FAIL;
1953
1954 UNUSED(clss);
1955
1956 if (NULL == libver)
1957 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_libver_bounds: libversion bounds is NULL");
1958
1959 PIN_INT_ARRAY(ENVONLY, libver, theArray, &isCopy, "H5Pget_libver_bounds: input not pinned");
1960
1961 if ((retVal = H5Pget_libver_bounds((hid_t)fapl_id, (H5F_libver_t *)&(theArray[0]), (H5F_libver_t *)&(theArray[1]))) < 0)
1962 H5_LIBRARY_ERROR(ENVONLY);
1963
1964 done:
1965 if (theArray)
1966 UNPIN_INT_ARRAY(ENVONLY, libver, theArray, (retVal < 0) ? JNI_ABORT : 0);
1967
1968 return (jint)retVal;
1969 } /* end Java_hdf_hdf5lib_H5_H5Pget_1libver_1bounds */
1970
1971 /*
1972 * TODO: H5Pset_object_flush_cb
1973 */
1974
1975 /*
1976 * TODO: H5Pget_object_flush_cb
1977 */
1978
1979 #ifdef __cplusplus
1980 } /* end extern "C" */
1981 #endif /* __cplusplus */
1982