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 <jni.h>
25 #include <stdio.h>
26 #include <stdlib.h>
27 #include "hdf5.h"
28 #include "h5fImp.h"
29 #include "h5util.h"
30
31 /*
32 * Pointer to the JNI's Virtual Machine; used for callback functions.
33 */
34 /* extern JavaVM *jvm; */
35
36 /*
37 * Class: hdf_hdf5lib_H5
38 * Method: H5Fopen
39 * Signature: (Ljava/lang/String;IJ)J
40 */
41 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Fopen(JNIEnv * env,jclass clss,jstring name,jint flags,jlong access_id)42 Java_hdf_hdf5lib_H5__1H5Fopen
43 (JNIEnv *env, jclass clss, jstring name, jint flags, jlong access_id)
44 {
45 const char *fileName = NULL;
46 hid_t status = H5I_INVALID_HID;
47
48 UNUSED(clss);
49
50 if (NULL == name)
51 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Fopen: file name is NULL");
52
53 PIN_JAVA_STRING(ENVONLY, name, fileName, NULL, "H5Fopen: file name not pinned");
54
55 if ((status = H5Fopen(fileName, (unsigned)flags, (hid_t)access_id)) < 0)
56 H5_LIBRARY_ERROR(ENVONLY);
57
58 done:
59 if (fileName)
60 UNPIN_JAVA_STRING(ENVONLY, name, fileName);
61
62 return (jlong)status;
63 } /* end Java_hdf_hdf5lib_H5__1H5Fopen */
64
65 /*
66 * Class: hdf_hdf5lib_H5
67 * Method: H5Fcreate
68 * Signature: (Ljava/lang/String;IJJ)J
69 */
70 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Fcreate(JNIEnv * env,jclass clss,jstring name,jint flags,jlong create_id,jlong access_id)71 Java_hdf_hdf5lib_H5__1H5Fcreate
72 (JNIEnv *env, jclass clss, jstring name, jint flags, jlong create_id, jlong access_id)
73 {
74 const char *fileName = NULL;
75 hid_t status = H5I_INVALID_HID;
76
77 UNUSED(clss);
78
79 if (NULL == name)
80 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Fcreate: file name is NULL");
81
82 PIN_JAVA_STRING(ENVONLY, name, fileName, NULL, "H5Fcreate: file name not pinned");
83
84 if ((status = H5Fcreate(fileName, (unsigned)flags, create_id, access_id)) < 0)
85 H5_LIBRARY_ERROR(ENVONLY);
86
87 done:
88 if (fileName)
89 UNPIN_JAVA_STRING(ENVONLY, name, fileName);
90
91 return (jlong)status;
92 } /* end Java_hdf_hdf5lib_H5__1H5Fcreate */
93
94 /*
95 * Class: hdf_hdf5lib_H5
96 * Method: H5Fflush
97 * Signature: (JI)I
98 */
99 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Fflush(JNIEnv * env,jclass clss,jlong object_id,jint scope)100 Java_hdf_hdf5lib_H5_H5Fflush
101 (JNIEnv *env, jclass clss, jlong object_id, jint scope)
102 {
103 herr_t retVal = FAIL;
104
105 UNUSED(clss);
106
107 if ((retVal = H5Fflush((hid_t)object_id, (H5F_scope_t)scope)) < 0)
108 H5_LIBRARY_ERROR(ENVONLY);
109
110 done:
111 return (jint)retVal;
112 } /* end Java_hdf_hdf5lib_H5_H5Fflush */
113
114 /*
115 * Class: hdf_hdf5lib_H5
116 * Method: H5Fget_name
117 * Signature: (J)Ljava/lang/String;
118 */
119 JNIEXPORT jstring JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1name(JNIEnv * env,jclass clss,jlong file_id)120 Java_hdf_hdf5lib_H5_H5Fget_1name
121 (JNIEnv *env, jclass clss, jlong file_id)
122 {
123 jstring str = NULL;
124 ssize_t buf_size;
125 char *namePtr = NULL;
126
127 UNUSED(clss);
128
129 /* Get the length of the name */
130 if ((buf_size = H5Fget_name((hid_t)file_id, NULL, 0)) < 0)
131 H5_LIBRARY_ERROR(ENVONLY);
132
133 if (NULL == (namePtr = (char *) HDmalloc(sizeof(char) * (size_t)buf_size + 1)))
134 H5_JNI_FATAL_ERROR(ENVONLY, "H5Fget_name: malloc failed");
135
136 if ((H5Fget_name((hid_t)file_id, namePtr, (size_t)buf_size + 1)) < 0)
137 H5_LIBRARY_ERROR(ENVONLY);
138 namePtr[buf_size] = '\0';
139
140 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, namePtr)))
141 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
142
143 done:
144 if (namePtr)
145 HDfree(namePtr);
146
147 return str;
148 } /* end Java_hdf_hdf5lib_H5_H5Fget_1name */
149
150 /*
151 * Class: hdf_hdf5lib_H5
152 * Method: H5Fis_hdf5
153 * Signature: (Ljava/lang/String;)Z
154 */
155 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Fis_1hdf5(JNIEnv * env,jclass clss,jstring name)156 Java_hdf_hdf5lib_H5_H5Fis_1hdf5
157 (JNIEnv *env, jclass clss, jstring name)
158 {
159 const char *fileName = NULL;
160 htri_t bval = JNI_FALSE;
161
162 UNUSED(clss);
163
164 if (NULL == name)
165 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Fis_hdf5: file name is NULL");
166
167 PIN_JAVA_STRING(ENVONLY, name, fileName, NULL, "H5Fis_hdf5: file name not pinned");
168
169 if ((bval = H5Fis_hdf5(fileName)) < 0)
170 H5_LIBRARY_ERROR(ENVONLY);
171
172 bval = (bval > 0) ? JNI_TRUE : JNI_FALSE;
173
174 done:
175 if (fileName)
176 UNPIN_JAVA_STRING(ENVONLY, name, fileName);
177
178 return (jboolean)bval;
179 } /* end Java_hdf_hdf5lib_H5_H5Fis_1hdf5 */
180
181 /*
182 * Class: hdf_hdf5lib_H5
183 * Method: H5Fget_create_plist
184 * Signature: (J)J
185 */
186 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Fget_1create_1plist(JNIEnv * env,jclass clss,jlong file_id)187 Java_hdf_hdf5lib_H5__1H5Fget_1create_1plist
188 (JNIEnv *env, jclass clss, jlong file_id)
189 {
190 hid_t retVal = H5I_INVALID_HID;
191
192 UNUSED(clss);
193
194 if ((retVal = H5Fget_create_plist((hid_t)file_id)) < 0)
195 H5_LIBRARY_ERROR(ENVONLY);
196
197 done:
198 return (jlong)retVal;
199 } /* end Java_hdf_hdf5lib_H5__1H5Fget_1create_1plist */
200
201 /*
202 * Class: hdf_hdf5lib_H5
203 * Method: H5Fget_access_plist
204 * Signature: (J)J
205 */
206 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Fget_1access_1plist(JNIEnv * env,jclass clss,jlong file_id)207 Java_hdf_hdf5lib_H5__1H5Fget_1access_1plist
208 (JNIEnv *env, jclass clss, jlong file_id)
209 {
210 hid_t retVal = H5I_INVALID_HID;
211
212 UNUSED(clss);
213
214 if ((retVal = H5Fget_access_plist((hid_t)file_id)) < 0)
215 H5_LIBRARY_ERROR(ENVONLY);
216
217 done:
218 return (jlong)retVal;
219 } /* end Java_hdf_hdf5lib_H5__1H5Fget_1access_1plist */
220
221 /*
222 * Class: hdf_hdf5lib_H5
223 * Method: H5Fget_intent
224 * Signature: (J)I
225 */
226 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1intent(JNIEnv * env,jclass clss,jlong file_id)227 Java_hdf_hdf5lib_H5_H5Fget_1intent
228 (JNIEnv *env, jclass clss, jlong file_id)
229 {
230 unsigned intent = 0;
231
232 UNUSED(clss);
233
234 if (H5Fget_intent((hid_t)file_id, &intent) < 0)
235 H5_LIBRARY_ERROR(ENVONLY);
236
237 done:
238 return (jint)intent;
239 } /* end Java_hdf_hdf5lib_H5_H5Fget_1intent */
240
241 /*
242 * Class: hdf_hdf5lib_H5
243 * Method: H5Fclose
244 * Signature: (J)I
245 */
246 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5__1H5Fclose(JNIEnv * env,jclass clss,jlong file_id)247 Java_hdf_hdf5lib_H5__1H5Fclose
248 (JNIEnv *env, jclass clss, jlong file_id)
249 {
250 herr_t status = FAIL;
251
252 UNUSED(clss);
253
254 if ((status = H5Fclose((hid_t)file_id)) < 0)
255 H5_LIBRARY_ERROR(ENVONLY);
256
257 done:
258 return (jint)status;
259 } /* end Java_hdf_hdf5lib_H5__1H5Fclose */
260
261 /*
262 * Class: hdf_hdf5lib_H5
263 * Method: H5Fmount
264 * Signature: (JLjava/lang/String;JJ)I
265 */
266 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Fmount(JNIEnv * env,jclass clss,jlong loc_id,jstring name,jlong child_id,jlong plist_id)267 Java_hdf_hdf5lib_H5_H5Fmount
268 (JNIEnv *env, jclass clss, jlong loc_id, jstring name, jlong child_id, jlong plist_id)
269 {
270 const char *fileName = NULL;
271 herr_t status = FAIL;
272
273 UNUSED(clss);
274
275 if (NULL == name)
276 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Fmount: file name is NULL");
277
278 PIN_JAVA_STRING(ENVONLY, name, fileName, NULL, "H5Fmount: file name not pinned");
279
280 if ((status = H5Fmount((hid_t)loc_id, fileName, (hid_t)child_id, (hid_t)plist_id)) < 0)
281 H5_LIBRARY_ERROR(ENVONLY);
282
283 done:
284 if (fileName)
285 UNPIN_JAVA_STRING(ENVONLY, name, fileName);
286
287 return (jint)status;
288 } /* end Java_hdf_hdf5lib_H5_H5Fmount */
289
290 /*
291 * Class: hdf_hdf5lib_H5
292 * Method: H5Funmount
293 * Signature: (JLjava/lang/String;)I
294 */
295 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Funmount(JNIEnv * env,jclass clss,jlong loc_id,jstring name)296 Java_hdf_hdf5lib_H5_H5Funmount
297 (JNIEnv *env, jclass clss, jlong loc_id, jstring name)
298 {
299 const char *fileName = NULL;
300 herr_t status = FAIL;
301
302 UNUSED(clss);
303
304 if (NULL == name)
305 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Funmount: file name is NULL");
306
307 PIN_JAVA_STRING(ENVONLY, name, fileName, NULL, "H5Funmount: file name not pinned");
308
309 if ((status = H5Funmount((hid_t)loc_id, fileName)) < 0)
310 H5_LIBRARY_ERROR(ENVONLY);
311
312 done:
313 if (fileName)
314 UNPIN_JAVA_STRING(ENVONLY, name, fileName);
315
316 return (jint)status;
317 } /* end Java_hdf_hdf5lib_H5_H5Funmount */
318
319 /*
320 * Class: hdf_hdf5lib_H5
321 * Method: H5Fget_freespace
322 * Signature: (J)J
323 */
324 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1freespace(JNIEnv * env,jclass clss,jlong file_id)325 Java_hdf_hdf5lib_H5_H5Fget_1freespace
326 (JNIEnv *env, jclass clss, jlong file_id)
327 {
328 hssize_t ret_val = -1;
329
330 UNUSED(clss);
331
332 if ((ret_val = H5Fget_freespace((hid_t)file_id)) < 0)
333 H5_LIBRARY_ERROR(ENVONLY);
334
335 done:
336 return (jlong)ret_val;
337 } /* end Java_hdf_hdf5lib_H5_H5Fget_1freespace */
338
339 /*
340 * Class: hdf_hdf5lib_H5
341 * Method: H5Freopen
342 * Signature: (J)J
343 */
344 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Freopen(JNIEnv * env,jclass clss,jlong file_id)345 Java_hdf_hdf5lib_H5__1H5Freopen
346 (JNIEnv *env, jclass clss, jlong file_id)
347 {
348 hid_t retVal = H5I_INVALID_HID;
349
350 UNUSED(clss);
351
352 if ((retVal = H5Freopen((hid_t)file_id)) < 0)
353 H5_LIBRARY_ERROR(ENVONLY);
354
355 done:
356 return (jlong)retVal;
357 } /* end Java_hdf_hdf5lib_H5__1H5Freopen */
358
359 /*
360 * Class: hdf_hdf5lib_H5
361 * Method: H5Fget_obj_ids
362 * Signature: (JIJ[J)J
363 */
364 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1obj_1ids(JNIEnv * env,jclass clss,jlong file_id,jint types,jlong maxObjs,jlongArray obj_id_list)365 Java_hdf_hdf5lib_H5_H5Fget_1obj_1ids
366 (JNIEnv *env, jclass clss, jlong file_id, jint types, jlong maxObjs,
367 jlongArray obj_id_list)
368 {
369 jboolean isCopy;
370 ssize_t ret_val = -1;
371 size_t i;
372 jsize rank;
373 jlong *obj_id_listP = NULL;
374 hid_t *id_list = NULL;
375
376 UNUSED(clss);
377
378 if (NULL == obj_id_list)
379 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Fget_obj_ids: obj_id_list is NULL");
380
381 PIN_LONG_ARRAY(ENVONLY, obj_id_list, obj_id_listP, &isCopy, "H5Fget_obj_ids: obj_id_list not pinned");
382
383 if ((rank = ENVPTR->GetArrayLength(ENVONLY, obj_id_list)) < 0) {
384 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
385 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Fget_obj_ids: obj_id_list length < 0");
386 }
387
388 if (NULL == (id_list = (hid_t *) HDmalloc((size_t)rank * sizeof(hid_t))))
389 H5_JNI_FATAL_ERROR(ENVONLY, "H5Fget_obj_ids: malloc failed");
390
391 if ((ret_val = H5Fget_obj_ids((hid_t)file_id, (unsigned int)types, (size_t)maxObjs, id_list)) < 0)
392 H5_LIBRARY_ERROR(ENVONLY);
393
394 for (i = 0; i < (size_t)rank; i++) {
395 obj_id_listP[i] = (jlong)id_list[i];
396 } /* end for */
397
398 done:
399 if (id_list)
400 HDfree(id_list);
401 if (obj_id_listP)
402 UNPIN_LONG_ARRAY(ENVONLY, obj_id_list, obj_id_listP, (ret_val < 0) ? JNI_ABORT : 0);
403
404 return (jlong)ret_val;
405 } /* end Java_hdf_hdf5lib_H5_H5Fget_1obj_1ids */
406
407 /*
408 * Class: hdf_hdf5lib_H5
409 * Method: H5Fget_obj_count
410 * Signature: (JI)J
411 */
412 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1obj_1count(JNIEnv * env,jclass clss,jlong file_id,jint types)413 Java_hdf_hdf5lib_H5_H5Fget_1obj_1count
414 (JNIEnv *env, jclass clss, jlong file_id, jint types)
415 {
416 ssize_t ret_val = -1;
417
418 UNUSED(clss);
419
420 if ((ret_val = H5Fget_obj_count((hid_t)file_id, (unsigned int)types)) < 0)
421 H5_LIBRARY_ERROR(ENVONLY);
422
423 done:
424 return (jlong)ret_val;
425 } /* end Java_hdf_hdf5lib_H5_H5Fget_1obj_1count_1long */
426
427 /*
428 * Class: hdf_hdf5lib_H5
429 * Method: H5Fget_filesize
430 * Signature: (J)J
431 */
432 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1filesize(JNIEnv * env,jclass clss,jlong file_id)433 Java_hdf_hdf5lib_H5_H5Fget_1filesize
434 (JNIEnv *env, jclass clss, jlong file_id)
435 {
436 hsize_t size = 0;
437
438 UNUSED(clss);
439
440 if (H5Fget_filesize((hid_t)file_id, &size) < 0)
441 H5_LIBRARY_ERROR(ENVONLY);
442
443 done:
444 return (jlong) size;
445 } /* end Java_hdf_hdf5lib_H5_H5Fget_1filesize */
446
447 /*
448 * Class: hdf_hdf5lib_H5
449 * Method: H5Fget_mdc_hit_rate
450 * Signature: (J)D
451 */
452 JNIEXPORT jdouble JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1mdc_1hit_1rate(JNIEnv * env,jclass clss,jlong file_id)453 Java_hdf_hdf5lib_H5_H5Fget_1mdc_1hit_1rate
454 (JNIEnv *env, jclass clss, jlong file_id)
455 {
456 double rate = 0.0;
457
458 UNUSED(clss);
459
460 if (H5Fget_mdc_hit_rate((hid_t)file_id, &rate) < 0)
461 H5_LIBRARY_ERROR(ENVONLY);
462
463 done:
464 return (jdouble)rate;
465 } /* end Java_hdf_hdf5lib_H5_H5Fget_1mdc_1hit_1rate */
466
467 /*
468 * Class: hdf_hdf5lib_H5
469 * Method: H5Fget_mdc_size
470 * Signature: (J[J)I
471 */
472 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1mdc_1size(JNIEnv * env,jclass clss,jlong file_id,jlongArray metadata_cache)473 Java_hdf_hdf5lib_H5_H5Fget_1mdc_1size
474 (JNIEnv *env, jclass clss, jlong file_id, jlongArray metadata_cache)
475 {
476 jboolean isCopy;
477 size_t max_size = 0, min_clean_size = 0, cur_size = 0;
478 jlong *metadata_cache_ptr = NULL;
479 jsize size = 0;
480 int cur_num_entries = -1;
481
482 UNUSED(clss);
483
484 if (NULL == metadata_cache)
485 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Fget_mdc_size: metadata cache array is NULL");
486
487 if ((size = ENVPTR->GetArrayLength(ENVONLY, metadata_cache)) < 0) {
488 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
489 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Fget_mdc_size: metadata_cache length < 0");
490 }
491
492 if (size < 3)
493 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Fget_mdc_size: length of metadata_cache array < 3");
494
495 if (H5Fget_mdc_size((hid_t)file_id, &max_size, &min_clean_size, &cur_size, &cur_num_entries) < 0)
496 H5_LIBRARY_ERROR(ENVONLY);
497
498 PIN_LONG_ARRAY(ENVONLY, metadata_cache, metadata_cache_ptr, &isCopy, "H5Fget_mdc_size: metadata_cache array not pinned");
499
500 metadata_cache_ptr[0] = (jlong)max_size;
501 metadata_cache_ptr[1] = (jlong)min_clean_size;
502 metadata_cache_ptr[2] = (jlong)cur_size;
503
504 done:
505 if (metadata_cache_ptr)
506 UNPIN_LONG_ARRAY(ENVONLY, metadata_cache, metadata_cache_ptr, 0);
507
508 return (jint)cur_num_entries;
509 } /* end Java_hdf_hdf5lib_H5_H5Fget_1mdc_1size */
510
511 /*
512 * Class: hdf_hdf5lib_H5
513 * Method: H5Fget_info
514 * Signature: (J)Lhdf/hdf5lib/structs/H5F_info2_t;
515 */
516 JNIEXPORT jobject JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1info(JNIEnv * env,jclass clss,jlong obj_id)517 Java_hdf_hdf5lib_H5_H5Fget_1info
518 (JNIEnv *env, jclass clss, jlong obj_id)
519 {
520 H5F_info2_t finfo;
521 jobject ihinfobuf;
522 jvalue args[9];
523 jobject ret_obj = NULL;
524
525 UNUSED(clss);
526
527 if (H5Fget_info2((hid_t)obj_id, &finfo) < 0)
528 H5_LIBRARY_ERROR(ENVONLY);
529
530 args[0].j = (jlong)finfo.sohm.msgs_info.index_size;
531 args[1].j = (jlong)finfo.sohm.msgs_info.heap_size;
532
533 CALL_CONSTRUCTOR(ENVONLY, "hdf/hdf5lib/structs/H5_ih_info_t", "(JJ)V", args, ret_obj);
534
535 ihinfobuf = ret_obj;
536
537 args[0].i = (jint)finfo.super.version;
538 args[1].j = (jlong)finfo.super.super_size;
539 args[2].j = (jlong)finfo.super.super_ext_size;
540 args[3].i = (jint)finfo.free.version;
541 args[4].j = (jlong)finfo.free.meta_size;
542 args[5].j = (jlong)finfo.free.tot_space;
543 args[6].j = (jint)finfo.sohm.version;
544 args[7].j = (jlong)finfo.sohm.hdr_size;
545 args[8].l = ihinfobuf;
546
547 CALL_CONSTRUCTOR(ENVONLY, "hdf/hdf5lib/structs/H5F_info2_t", "(IJJIJJIJLhdf/hdf5lib/structs/H5_ih_info_t;)V", args, ret_obj);
548
549 done:
550 return ret_obj;
551 } /* end Java_hdf_hdf5lib_H5_H5Fget_1info */
552
553 /*
554 * Class: hdf_hdf5lib_H5
555 * Method: H5Freset_mdc_hit_rate_stats
556 * Signature: (J)V
557 */
558 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Freset_1mdc_1hit_1rate_1stats(JNIEnv * env,jclass clss,jlong file_id)559 Java_hdf_hdf5lib_H5_H5Freset_1mdc_1hit_1rate_1stats
560 (JNIEnv *env, jclass clss, jlong file_id)
561 {
562 UNUSED(clss);
563
564 if (H5Freset_mdc_hit_rate_stats((hid_t)file_id) < 0)
565 H5_LIBRARY_ERROR(ENVONLY);
566
567 done:
568 return;
569 } /* end Java_hdf_hdf5lib_H5_H5Freset_1mdc_1hit_1rate_1stats */
570
571 /*
572 * Class: hdf_hdf5lib_H5
573 * Method: H5Fclear_elink_file_cache
574 * Signature: (J)V
575 */
576 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Fclear_1elink_1file_1cache(JNIEnv * env,jclass clss,jlong file_id)577 Java_hdf_hdf5lib_H5_H5Fclear_1elink_1file_1cache
578 (JNIEnv *env, jclass clss, jlong file_id)
579 {
580 UNUSED(clss);
581
582 if (H5Fclear_elink_file_cache((hid_t)file_id) < 0)
583 H5_LIBRARY_ERROR(ENVONLY);
584
585 done:
586 return;
587 } /* end Java_hdf_hdf5lib_H5_H5Fclear_1elink_1file_1cache */
588
589 /*
590 * Class: hdf_hdf5lib_H5
591 * Method: H5Fstart_swmr_write
592 * Signature: (J)V
593 */
594 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Fstart_1swmr_1write(JNIEnv * env,jclass clss,jlong file_id)595 Java_hdf_hdf5lib_H5_H5Fstart_1swmr_1write
596 (JNIEnv *env, jclass clss, jlong file_id)
597 {
598 UNUSED(clss);
599
600 if (H5Fstart_swmr_write((hid_t)file_id) < 0)
601 H5_LIBRARY_ERROR(ENVONLY);
602
603 done:
604 return;
605 } /* end Java_hdf_hdf5lib_H5_H5Fstart_1swmr_1write */
606
607 /*
608 * Class: hdf_hdf5lib_H5
609 * Method: H5Fstart_mdc_logging
610 * Signature: (J)V
611 */
612 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Fstart_1mdc_1logging(JNIEnv * env,jclass clss,jlong file_id)613 Java_hdf_hdf5lib_H5_H5Fstart_1mdc_1logging
614 (JNIEnv *env, jclass clss, jlong file_id)
615 {
616 UNUSED(clss);
617
618 if (H5Fstart_mdc_logging((hid_t)file_id) < 0)
619 H5_LIBRARY_ERROR(ENVONLY);
620
621 done:
622 return;
623 } /* end Java_hdf_hdf5lib_H5_H5Fstart_1mdc_1logging */
624
625 /*
626 * Class: hdf_hdf5lib_H5
627 * Method: H5Fstop_mdc_logging
628 * Signature: (J)V
629 */
630 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Fstop_1mdc_1logging(JNIEnv * env,jclass clss,jlong file_id)631 Java_hdf_hdf5lib_H5_H5Fstop_1mdc_1logging
632 (JNIEnv *env, jclass clss, jlong file_id)
633 {
634 UNUSED(clss);
635
636 if (H5Fstop_mdc_logging((hid_t)file_id) < 0)
637 H5_LIBRARY_ERROR(ENVONLY);
638
639 done:
640 return;
641 } /* end Java_hdf_hdf5lib_H5_H5Fstop_1mdc_1logging */
642
643 /*
644 * Class: hdf_hdf5lib_H5
645 * Method: H5Fget_mdc_logging_status
646 * Signature: (J[Z)V
647 */
648 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1mdc_1logging_1status(JNIEnv * env,jclass clss,jlong file_id,jbooleanArray mdc_logging_status)649 Java_hdf_hdf5lib_H5_H5Fget_1mdc_1logging_1status
650 (JNIEnv *env, jclass clss, jlong file_id, jbooleanArray mdc_logging_status)
651 {
652 jboolean *mdc_logging_status_ptr = NULL;
653 jboolean isCopy;
654 hbool_t is_enabled;
655 hbool_t is_currently_logging;
656 jsize size;
657
658 UNUSED(clss);
659
660 if (NULL == mdc_logging_status)
661 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Fget_mdc_logging_status: mdc_logging_status is NULL");
662
663 if ((size = ENVPTR->GetArrayLength(ENVONLY, mdc_logging_status)) < 0) {
664 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
665 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Fget_mdc_logging_status: mdc_logging_status length < 0");
666 }
667
668 if (size < 2)
669 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Fget_mdc_logging_status: length of mdc_logging_status < 2");
670
671 if (H5Fget_mdc_logging_status((hid_t)file_id, &is_enabled, &is_currently_logging) < 0)
672 H5_LIBRARY_ERROR(ENVONLY);
673
674 PIN_BOOL_ARRAY(ENVONLY, mdc_logging_status, mdc_logging_status_ptr, &isCopy, "H5Fget_mdc_logging_status: mdc_logging_status array not pinned");
675
676 mdc_logging_status_ptr[0] = (jboolean)is_enabled;
677 mdc_logging_status_ptr[1] = (jboolean)is_currently_logging;
678
679 done:
680 if (mdc_logging_status_ptr)
681 UNPIN_BOOL_ARRAY(ENVONLY, mdc_logging_status, mdc_logging_status_ptr, 0);
682
683 return;
684 } /* end Java_hdf_hdf5lib_H5_H5Fget_1mdc_1logging_1status */
685
686 /*
687 * Class: hdf_hdf5lib_H5
688 * Method: H5Fset_dset_no_attrs_hint
689 * Signature: (JZ)V
690 */
691 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Fset_1dset_1no_1attrs_1hint(JNIEnv * env,jclass clss,jlong file_id,jboolean minimize)692 Java_hdf_hdf5lib_H5_H5Fset_1dset_1no_1attrs_1hint
693 (JNIEnv *env, jclass clss, jlong file_id, jboolean minimize)
694 {
695 hbool_t minimize_val;
696 herr_t retVal = FAIL;
697
698 UNUSED(clss);
699
700 minimize_val = (minimize == JNI_TRUE) ? TRUE : FALSE;
701
702 if ((retVal = H5Fset_dset_no_attrs_hint((hid_t)file_id, (hbool_t)minimize_val)) < 0)
703 H5_LIBRARY_ERROR(ENVONLY);
704
705 done:
706 return;
707 }
708
709 /*
710 * Class: hdf_hdf5lib_H5
711 * Method: H5Fget_dset_no_attrs_hint
712 * Signature: (J)Z
713 */
714 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Fget_1dset_1no_1attrs_1hint(JNIEnv * env,jclass clss,jlong file_id)715 Java_hdf_hdf5lib_H5_H5Fget_1dset_1no_1attrs_1hint
716 (JNIEnv *env, jclass clss, jlong file_id)
717 {
718 jboolean bval = JNI_FALSE;
719 hbool_t minimize = FALSE;
720
721 UNUSED(clss);
722
723 if (H5Fget_dset_no_attrs_hint((hid_t)file_id, (hbool_t *)&minimize) < 0)
724 H5_LIBRARY_ERROR(ENVONLY);
725
726 if (minimize == TRUE)
727 bval = JNI_TRUE;
728
729 done:
730 return bval;
731 }
732
733 /*
734 * Class: hdf_hdf5lib_H5
735 * Method: H5Fset_libver_bounds
736 * Signature: (JII)V
737 */
738 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Fset_1libver_1bounds(JNIEnv * env,jclass clss,jlong file_id,jint low,jint high)739 Java_hdf_hdf5lib_H5_H5Fset_1libver_1bounds
740 (JNIEnv *env, jclass clss, jlong file_id, jint low, jint high)
741 {
742 herr_t retVal = FAIL;
743
744 UNUSED(clss);
745
746 if ((retVal = H5Fset_libver_bounds((hid_t)file_id, (H5F_libver_t)low, (H5F_libver_t)high)) < 0)
747 H5_LIBRARY_ERROR(ENVONLY);
748
749 done:
750 return;
751 } /* end Java_hdf_hdf5lib_H5_H5Fset_1libver_1bounds */
752
753
754 #ifdef __cplusplus
755 } /* end extern "C" */
756 #endif /* __cplusplus */
757