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