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 <string.h>
28 #include "hdf5.h"
29 #include "h5jni.h"
30 #include "h5tImp.h"
31 
32 /*
33  * Pointer to the JNI's Virtual Machine; used for callback functions.
34  */
35 /* extern JavaVM *jvm; */
36 
37 /*
38  * Class:     hdf_hdf5lib_H5
39  * Method:    _H5Topen2
40  * Signature: (JLjava/lang/String;J)J
41  */
42 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Topen2(JNIEnv * env,jclass clss,jlong loc_id,jstring name,jlong access_plist)43 Java_hdf_hdf5lib_H5__1H5Topen2
44     (JNIEnv *env, jclass clss, jlong loc_id, jstring name, jlong access_plist)
45 {
46     const char *datatypeName = NULL;
47     hid_t       status = H5I_INVALID_HID;
48 
49     UNUSED(clss);
50 
51     if (NULL == name)
52         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Topen2: datatype name is NULL");
53 
54     PIN_JAVA_STRING(ENVONLY, name, datatypeName, NULL, "H5Topen2: datatype name not pinned");
55 
56     if ((status = H5Topen2((hid_t)loc_id, datatypeName, (hid_t)access_plist)) < 0)
57         H5_LIBRARY_ERROR(ENVONLY);
58 
59 done:
60     if (datatypeName)
61         UNPIN_JAVA_STRING(ENVONLY, name, datatypeName);
62 
63     return (jlong)status;
64 } /* end Java_hdf_hdf5lib_H5__1H5Topen2 */
65 
66 /*
67  * Class:     hdf_hdf5lib_H5
68  * Method:    H5Tcommitted
69  * Signature: (J)Z
70  */
71 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Tcommitted(JNIEnv * env,jclass clss,jlong type_id)72 Java_hdf_hdf5lib_H5_H5Tcommitted
73     (JNIEnv *env, jclass clss, jlong type_id)
74 {
75     htri_t bval = JNI_FALSE;
76 
77     UNUSED(clss);
78 
79     if ((bval = H5Tcommitted(type_id)) < 0)
80         H5_LIBRARY_ERROR(ENVONLY);
81 
82     bval = (bval > 0) ? JNI_TRUE : JNI_FALSE;
83 
84 done:
85     return (jboolean)bval;
86 } /* end Java_hdf_hdf5lib_H5_H5Tcommitted */
87 
88 /*
89  * Class:     hdf_hdf5lib_H5
90  * Method:    _H5Tcreate
91  * Signature: (IJ)J
92  */
93 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Tcreate(JNIEnv * env,jclass clss,jint dclass,jlong size)94 Java_hdf_hdf5lib_H5__1H5Tcreate
95     (JNIEnv *env, jclass clss, jint dclass, jlong size)
96 {
97     hid_t retVal = H5I_INVALID_HID;
98 
99     UNUSED(clss);
100 
101     if ((retVal = H5Tcreate((H5T_class_t )dclass, (size_t)size)) < 0)
102         H5_LIBRARY_ERROR(ENVONLY);
103 
104 done:
105     return (jlong)retVal;
106 } /* end Java_hdf_hdf5lib_H5__1H5Tcreate */
107 
108 /*
109  * Class:     hdf_hdf5lib_H5
110  * Method:    _H5Tcopy
111  * Signature: (J)J
112  */
113 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Tcopy(JNIEnv * env,jclass clss,jlong type_id)114 Java_hdf_hdf5lib_H5__1H5Tcopy
115     (JNIEnv *env, jclass clss, jlong type_id)
116 {
117     hid_t retVal = H5I_INVALID_HID;
118 
119     UNUSED(clss);
120 
121     if ((retVal = H5Tcopy((hid_t)type_id)) < 0)
122         H5_LIBRARY_ERROR(ENVONLY);
123 
124 done:
125     return (jlong)retVal;
126 } /* end Java_hdf_hdf5lib_H5__1H5Tcopy */
127 
128 /*
129  * Class:     hdf_hdf5lib_H5
130  * Method:    H5Tequal
131  * Signature: (JJ)Z
132  */
133 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Tequal(JNIEnv * env,jclass clss,jlong type_id1,jlong type_id2)134 Java_hdf_hdf5lib_H5_H5Tequal
135     (JNIEnv *env, jclass clss, jlong type_id1, jlong type_id2)
136 {
137     htri_t bval = JNI_FALSE;
138 
139     UNUSED(clss);
140 
141     if ((bval = H5Tequal((hid_t)type_id1, (hid_t)type_id2)) < 0)
142         H5_LIBRARY_ERROR(ENVONLY);
143 
144     bval = (bval > 0) ? JNI_TRUE : JNI_FALSE;
145 
146 done:
147     return (jboolean)bval;
148 } /* end Java_hdf_hdf5lib_H5_H5Tequal */
149 
150 /*
151  * Class:     hdf_hdf5lib_H5
152  * Method:    H5Tlock
153  * Signature: (J)I
154  */
155 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tlock(JNIEnv * env,jclass clss,jlong type_id)156 Java_hdf_hdf5lib_H5_H5Tlock
157     (JNIEnv *env, jclass clss, jlong type_id)
158 {
159     herr_t retVal = FAIL;
160 
161     UNUSED(clss);
162 
163     if ((retVal = H5Tlock((hid_t)type_id)) < 0)
164         H5_LIBRARY_ERROR(ENVONLY);
165 
166 done:
167     return (jint)retVal;
168 } /* end Java_hdf_hdf5lib_H5_H5Tlock */
169 
170 /*
171  * Class:     hdf_hdf5lib_H5
172  * Method:    H5Tget_class
173  * Signature: (J)I
174  */
175 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1class(JNIEnv * env,jclass clss,jlong type_id)176 Java_hdf_hdf5lib_H5_H5Tget_1class
177     (JNIEnv *env, jclass clss, jlong type_id)
178 {
179     H5T_class_t retVal = H5T_NO_CLASS;
180 
181     UNUSED(clss);
182 
183     if (H5T_NO_CLASS == (retVal = H5Tget_class((hid_t)type_id)))
184         H5_LIBRARY_ERROR(ENVONLY);
185 
186 done:
187     return (jint)retVal;
188 } /* end Java_hdf_hdf5lib_H5_H5Tget_1class */
189 
190 /*
191  * Class:     hdf_hdf5lib_H5
192  * Method:    H5Tget_size
193  * Signature: (J)J
194  */
195 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1size(JNIEnv * env,jclass clss,jlong type_id)196 Java_hdf_hdf5lib_H5_H5Tget_1size
197     (JNIEnv *env, jclass clss, jlong type_id)
198 {
199     size_t retVal = 0;
200 
201     UNUSED(clss);
202 
203     if (!(retVal = H5Tget_size((hid_t)type_id)))
204         H5_LIBRARY_ERROR(ENVONLY);
205 
206 done:
207     return (jlong)retVal;
208 } /* end Java_hdf_hdf5lib_H5_H5Tget_1size*/
209 
210 /*
211  * Class:     hdf_hdf5lib_H5
212  * Method:    H5Tset_size
213  * Signature: (JJ)I
214  */
215 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1size(JNIEnv * env,jclass clss,jlong type_id,jlong size)216 Java_hdf_hdf5lib_H5_H5Tset_1size
217     (JNIEnv *env, jclass clss, jlong type_id, jlong size)
218 {
219     size_t tsize = (size_t)size;
220     herr_t retVal = FAIL;
221 
222     UNUSED(clss);
223 
224     if ((retVal = H5Tset_size((hid_t)type_id, tsize)) < 0)
225         H5_LIBRARY_ERROR(ENVONLY);
226 
227 done:
228     return (jint)retVal;
229 } /* end ifJava_hdf_hdf5lib_H5_H5Tset_1size */
230 
231 /*
232  * Class:     hdf_hdf5lib_H5
233  * Method:    H5Tget_order
234  * Signature: (J)I
235  */
236 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1order(JNIEnv * env,jclass clss,jlong type_id)237 Java_hdf_hdf5lib_H5_H5Tget_1order
238     (JNIEnv *env, jclass clss, jlong type_id)
239 {
240     H5T_order_t retVal = H5T_ORDER_ERROR;
241 
242     UNUSED(clss);
243 
244     if (H5T_ORDER_ERROR == (retVal = H5Tget_order((hid_t)type_id)))
245         H5_LIBRARY_ERROR(ENVONLY);
246 
247 done:
248     return (jint)retVal;
249 } /* end Java_hdf_hdf5lib_H5_H5Tget_1order */
250 
251 /*
252  * Class:     hdf_hdf5lib_H5
253  * Method:    H5Tset_order
254  * Signature: (JI)I
255  */
256 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1order(JNIEnv * env,jclass clss,jlong type_id,jint order)257 Java_hdf_hdf5lib_H5_H5Tset_1order
258     (JNIEnv *env, jclass clss, jlong type_id, jint order)
259 {
260     herr_t retVal = FAIL;
261 
262     UNUSED(clss);
263 
264     if ((retVal = H5Tset_order((hid_t)type_id, (H5T_order_t)order)) < 0)
265         H5_LIBRARY_ERROR(ENVONLY);
266 
267 done:
268     return (jint)retVal;
269 } /* end Java_hdf_hdf5lib_H5_H5Tset_1order */
270 
271 /*
272  * Class:     hdf_hdf5lib_H5
273  * Method:    H5Tget_precision
274  * Signature: (J)I
275  */
276 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1precision(JNIEnv * env,jclass clss,jlong type_id)277 Java_hdf_hdf5lib_H5_H5Tget_1precision
278     (JNIEnv *env, jclass clss, jlong type_id)
279 {
280     size_t retVal = 0;
281 
282     UNUSED(clss);
283 
284     if (!(retVal = H5Tget_precision((hid_t)type_id)))
285         H5_LIBRARY_ERROR(ENVONLY);
286 
287 done:
288     return (jint)retVal;
289 } /* end Java_hdf_hdf5lib_H5_H5Tget_1precision */
290 
291 /*
292  * Class:     hdf_hdf5lib_H5
293  * Method:    H5Tget_precision_long
294  * Signature: (J)J
295  */
296 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1precision_1long(JNIEnv * env,jclass clss,jlong type_id)297 Java_hdf_hdf5lib_H5_H5Tget_1precision_1long
298     (JNIEnv *env, jclass clss, jlong type_id)
299 {
300     size_t retVal = 0;
301 
302     UNUSED(clss);
303 
304     if (!(retVal = H5Tget_precision((hid_t)type_id)))
305         H5_LIBRARY_ERROR(ENVONLY);
306 
307 done:
308     return (jlong)retVal;
309 } /* end Java_hdf_hdf5lib_H5_H5Tget_1precision_1long */
310 
311 /*
312  * Class:     hdf_hdf5lib_H5
313  * Method:    H5Tset_precision
314  * Signature: (JJ)I
315  */
316 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1precision(JNIEnv * env,jclass clss,jlong type_id,jlong precision)317 Java_hdf_hdf5lib_H5_H5Tset_1precision
318     (JNIEnv *env, jclass clss, jlong type_id, jlong precision)
319 {
320     herr_t retVal = FAIL;
321 
322     UNUSED(clss);
323 
324     if ((retVal = H5Tset_precision((hid_t)type_id, (size_t)precision)) < 0)
325         H5_LIBRARY_ERROR(ENVONLY);
326 
327 done:
328     return (jint)retVal;
329 } /* end Java_hdf_hdf5lib_H5_H5Tset_1precision */
330 
331 /*
332  * Class:     hdf_hdf5lib_H5
333  * Method:    H5Tget_offset
334  * Signature: (J)I
335  */
336 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1offset(JNIEnv * env,jclass clss,jlong type_id)337 Java_hdf_hdf5lib_H5_H5Tget_1offset
338     (JNIEnv *env, jclass clss, jlong type_id)
339 {
340     int retVal = -1;
341 
342     UNUSED(clss);
343 
344     if ((retVal = H5Tget_offset((hid_t)type_id)) < 0)
345         H5_LIBRARY_ERROR(ENVONLY);
346 
347 done:
348     return (jint)retVal;
349 } /* end Java_hdf_hdf5lib_H5_H5Tget_1offset */
350 
351 /*
352  * Class:     hdf_hdf5lib_H5
353  * Method:    H5Tset_offset
354  * Signature: (JJ)I
355  */
356 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1offset(JNIEnv * env,jclass clss,jlong type_id,jlong offset)357 Java_hdf_hdf5lib_H5_H5Tset_1offset
358     (JNIEnv *env, jclass clss, jlong type_id, jlong offset)
359 {
360     herr_t retVal = FAIL;
361 
362     UNUSED(clss);
363 
364     if ((retVal = H5Tset_offset((hid_t)type_id, (size_t)offset)) < 0)
365         H5_LIBRARY_ERROR(ENVONLY);
366 
367 done:
368     return (jint)retVal;
369 } /* end Java_hdf_hdf5lib_H5_H5Tset_1offset */
370 
371 /*
372  * Class:     hdf_hdf5lib_H5
373  * Method:    H5Tget_pad
374  * Signature: (J[I)I
375  */
376 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1pad(JNIEnv * env,jclass clss,jlong type_id,jintArray pad)377 Java_hdf_hdf5lib_H5_H5Tget_1pad
378     (JNIEnv *env, jclass clss, jlong type_id, jintArray pad)
379 {
380     jboolean  isCopy;
381     jint     *P = NULL;
382     herr_t    status = FAIL;
383 
384     UNUSED(clss);
385 
386     if (NULL == pad)
387         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tget_pad: pad is NULL");
388 
389     PIN_INT_ARRAY(ENVONLY, pad, P, &isCopy, "H5Tget_pad: pad not pinned");
390 
391     if ((status = H5Tget_pad((hid_t)type_id, (H5T_pad_t *)&(P[0]), (H5T_pad_t *)&(P[1]))) < 0)
392         H5_LIBRARY_ERROR(ENVONLY);
393 
394 done:
395     if (P)
396         UNPIN_INT_ARRAY(ENVONLY, pad, P, (status < 0) ? JNI_ABORT : 0);
397 
398     return (jint)status;
399 } /* end Java_hdf_hdf5lib_H5_H5Tget_1pad */
400 
401 /*
402  * Class:     hdf_hdf5lib_H5
403  * Method:    H5Tset_pad
404  * Signature: (JII)I
405  */
406 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1pad(JNIEnv * env,jclass clss,jlong type_id,jint lsb,jint msb)407 Java_hdf_hdf5lib_H5_H5Tset_1pad
408     (JNIEnv *env, jclass clss, jlong type_id, jint lsb, jint msb)
409 {
410     herr_t retVal = FAIL;
411 
412     UNUSED(clss);
413 
414     if ((retVal = H5Tset_pad((hid_t)type_id, (H5T_pad_t)lsb, (H5T_pad_t)msb)) < 0)
415         H5_LIBRARY_ERROR(ENVONLY);
416 
417 done:
418     return (jint)retVal;
419 } /* end Java_hdf_hdf5lib_H5_H5Tset_1pad */
420 
421 /*
422  * Class:     hdf_hdf5lib_H5
423  * Method:    H5Tget_sign
424  * Signature: (J)I
425  */
426 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1sign(JNIEnv * env,jclass clss,jlong type_id)427 Java_hdf_hdf5lib_H5_H5Tget_1sign
428     (JNIEnv *env, jclass clss, jlong type_id)
429 {
430     H5T_sign_t retVal = H5T_SGN_ERROR;
431 
432     UNUSED(clss);
433 
434     if (H5T_SGN_ERROR == (retVal = H5Tget_sign((hid_t)type_id)))
435         H5_LIBRARY_ERROR(ENVONLY);
436 
437 done:
438     return (jint)retVal;
439 } /* end Java_hdf_hdf5lib_H5_H5Tget_1sign */
440 
441 /*
442  * Class:     hdf_hdf5lib_H5
443  * Method:    H5Tset_sign
444  * Signature: (JI)I
445  */
446 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1sign(JNIEnv * env,jclass clss,jlong type_id,jint sign)447 Java_hdf_hdf5lib_H5_H5Tset_1sign
448     (JNIEnv *env, jclass clss, jlong type_id, jint sign)
449 {
450     herr_t retVal = FAIL;
451 
452     UNUSED(clss);
453 
454     if ((retVal = H5Tset_sign((hid_t)type_id, (H5T_sign_t)sign)) < 0)
455         H5_LIBRARY_ERROR(ENVONLY);
456 
457 done:
458     return (jint)retVal;
459 } /* end Java_hdf_hdf5lib_H5_H5Tset_1sign */
460 
461 /*
462  * Class:     hdf_hdf5lib_H5
463  * Method:    H5Tget_fields_int
464  * Signature: (J[I)I
465  */
466 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1fields_1int(JNIEnv * env,jclass clss,jlong type_id,jintArray fields)467 Java_hdf_hdf5lib_H5_H5Tget_1fields_1int
468     (JNIEnv *env, jclass clss, jlong type_id, jintArray fields)
469 {
470     jboolean  isCopy;
471     jsize     arrLen;
472     jint     *P = NULL;
473     herr_t    status = FAIL;
474 
475     UNUSED(clss);
476 
477     if (NULL == fields)
478         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tget_fields_int: fields is NULL");
479 
480     if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, fields)) < 0) {
481         CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
482         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tget_fields_int: fields array length < 0");
483     }
484     if (arrLen < 5)
485         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tget_fields_int: fields input array < order 5");
486 
487     PIN_INT_ARRAY(ENVONLY, fields, P, &isCopy, "H5Tget_fields_int: fields not pinned");
488 
489     if ((status = H5Tget_fields((hid_t)type_id, (size_t *)&(P[0]), (size_t *)&(P[1]), (size_t *)&(P[2]), (size_t *)&(P[3]), (size_t *)&(P[4]))) < 0)
490         H5_LIBRARY_ERROR(ENVONLY);
491 
492 done:
493     if (P)
494         UNPIN_INT_ARRAY(ENVONLY, fields, P, (status < 0) ? JNI_ABORT : 0);
495 
496     return (jint)status;
497 } /* end Java_hdf_hdf5lib_H5_H5Tget_1fields_1int */
498 
499 /*
500  * Class:     hdf_hdf5lib_H5
501  * Method:    H5Tget_fields
502  * Signature: (J[J)V
503  */
504 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1fields(JNIEnv * env,jclass clss,jlong type_id,jlongArray fields)505 Java_hdf_hdf5lib_H5_H5Tget_1fields
506     (JNIEnv *env, jclass clss, jlong type_id, jlongArray fields)
507 {
508     jboolean  isCopy;
509     jlong    *fieldsArray = NULL;
510     jsize     arrLen;
511     herr_t    status = FAIL;
512 
513     UNUSED(clss);
514 
515     if (NULL == fields)
516         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tget_fields: fields is NULL");
517 
518     if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, fields)) < 0) {
519         CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
520         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tget_fields: fields array length < 0");
521     }
522     if (arrLen < 5)
523         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tget_fields: fields input array < order 5");
524 
525     PIN_LONG_ARRAY(ENVONLY, fields, fieldsArray, &isCopy, "H5Tget_fields: fields not pinned");
526 
527     { /* Direct cast (size_t *)variable fails on 32-bit environment */
528         size_t spos_t = 0;
529         size_t epos_t = 0;
530         size_t esize_t = 0;
531         size_t mpos_t = 0;
532         size_t msize_t = 0;
533         long long fields_temp = *(&fieldsArray[0]);
534         spos_t = (size_t)fields_temp;
535         fields_temp = *(&fieldsArray[1]);
536         epos_t = (size_t)fields_temp;
537         fields_temp = *(&fieldsArray[2]);
538         esize_t = (size_t)fields_temp;
539         fields_temp = *(&fieldsArray[3]);
540         mpos_t = (size_t)fields_temp;
541         fields_temp = *(&fieldsArray[4]);
542         msize_t = (size_t)fields_temp;
543 
544         if ((status = H5Tget_fields((hid_t)type_id, &spos_t, &epos_t, &esize_t, &mpos_t, &msize_t)) < 0)
545             H5_LIBRARY_ERROR(ENVONLY);
546 
547         *(&fieldsArray[0]) = (jlong)spos_t;
548         *(&fieldsArray[1]) = (jlong)epos_t;
549         *(&fieldsArray[2]) = (jlong)esize_t;
550         *(&fieldsArray[3]) = (jlong)mpos_t;
551         *(&fieldsArray[4]) = (jlong)msize_t;
552     } /* end direct cast special handling */
553 
554 done:
555     if (fieldsArray)
556         UNPIN_LONG_ARRAY(ENVONLY, fields, fieldsArray, (status < 0) ? JNI_ABORT : 0);
557 
558     return;
559 } /* end Java_hdf_hdf5lib_H5_H5Tget_1fields */
560 
561 /*
562  * Class:     hdf_hdf5lib_H5
563  * Method:    H5Tset_fields
564  * Signature: (JJJJJJ)V
565  */
566 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1fields(JNIEnv * env,jclass clss,jlong type_id,jlong spos,jlong epos,jlong esize,jlong mpos,jlong msize)567 Java_hdf_hdf5lib_H5_H5Tset_1fields
568     (JNIEnv *env, jclass clss, jlong type_id, jlong spos, jlong epos,
569         jlong esize, jlong mpos, jlong msize)
570 {
571     UNUSED(clss);
572 
573     if (H5Tset_fields((hid_t)type_id, (size_t)spos, (size_t)epos, (size_t)esize, (size_t)mpos, (size_t)msize) < 0)
574         H5_LIBRARY_ERROR(ENVONLY);
575 
576 done:
577     return;
578 } /* end Java_hdf_hdf5lib_H5_H5Tset_1fields */
579 
580 /*
581  * Class:     hdf_hdf5lib_H5
582  * Method:    H5Tget_ebias
583  * Signature: (J)I
584  */
585 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1ebias(JNIEnv * env,jclass clss,jlong type_id)586 Java_hdf_hdf5lib_H5_H5Tget_1ebias
587     (JNIEnv *env, jclass clss, jlong type_id)
588 {
589     size_t retVal = 0;
590 
591     UNUSED(clss);
592 
593     if (!(retVal =  H5Tget_ebias((hid_t)type_id)))
594         H5_LIBRARY_ERROR(ENVONLY);
595 
596 done:
597     return (jint)retVal;
598 } /* end Java_hdf_hdf5lib_H5_H5Tget_1ebias */
599 
600 /*
601  * Class:     hdf_hdf5lib_H5
602  * Method:    H5Tget_ebias_long
603  * Signature: (J)J
604  */
605 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1ebias_1long(JNIEnv * env,jclass clss,jlong type_id)606 Java_hdf_hdf5lib_H5_H5Tget_1ebias_1long
607     (JNIEnv *env, jclass clss, jlong type_id)
608 {
609     size_t retVal = 0;
610 
611     UNUSED(clss);
612 
613     if (!(retVal = H5Tget_ebias((hid_t)type_id)))
614         H5_LIBRARY_ERROR(ENVONLY);
615 
616 done:
617     return (jlong)retVal;
618 } /* end Java_hdf_hdf5lib_H5_H5Tget_1ebias_1long */
619 
620 /*
621  * Class:     hdf_hdf5lib_H5
622  * Method:    H5Tset_ebias
623  * Signature: (JJ)I
624  */
625 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1ebias(JNIEnv * env,jclass clss,jlong type_id,jlong ebias)626 Java_hdf_hdf5lib_H5_H5Tset_1ebias
627     (JNIEnv *env, jclass clss, jlong type_id, jlong ebias)
628 {
629     herr_t retVal = FAIL;
630 
631     UNUSED(clss);
632 
633     if ((retVal = H5Tset_ebias((hid_t)type_id, (size_t)ebias)) < 0)
634         H5_LIBRARY_ERROR(ENVONLY);
635 
636 done:
637     return (jint)retVal;
638 } /* end Java_hdf_hdf5lib_H5_H5Tset_1ebias */
639 
640 /*
641  * Class:     hdf_hdf5lib_H5
642  * Method:    H5Tget_norm
643  * Signature: (J)I
644  */
645 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1norm(JNIEnv * env,jclass clss,jlong type_id)646 Java_hdf_hdf5lib_H5_H5Tget_1norm
647     (JNIEnv *env, jclass clss, jlong type_id)
648 {
649     H5T_norm_t retVal = H5T_NORM_ERROR;
650 
651     UNUSED(clss);
652 
653     if (H5T_NORM_ERROR == (retVal = H5Tget_norm((hid_t)type_id)))
654         H5_LIBRARY_ERROR(ENVONLY);
655 
656 done:
657     return (jint)retVal;
658 } /* end Java_hdf_hdf5lib_H5_H5Tget_1norm */
659 
660 /*
661  * Class:     hdf_hdf5lib_H5
662  * Method:    H5Tset_norm
663  * Signature: (JI)I
664  */
665 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1norm(JNIEnv * env,jclass clss,jlong type_id,jint norm)666 Java_hdf_hdf5lib_H5_H5Tset_1norm
667     (JNIEnv *env, jclass clss, jlong type_id, jint norm)
668 {
669     herr_t retVal = FAIL;
670 
671     UNUSED(clss);
672 
673     if ((retVal = H5Tset_norm((hid_t)type_id, (H5T_norm_t )norm)) < 0)
674         H5_LIBRARY_ERROR(ENVONLY);
675 
676 done:
677     return (jint)retVal;
678 } /* end Java_hdf_hdf5lib_H5_H5Tset_1norm */
679 
680 /*
681  * Class:     hdf_hdf5lib_H5
682  * Method:    H5Tget_inpad
683  * Signature: (J)I
684  */
685 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1inpad(JNIEnv * env,jclass clss,jlong type_id)686 Java_hdf_hdf5lib_H5_H5Tget_1inpad
687     (JNIEnv *env, jclass clss, jlong type_id)
688 {
689     H5T_pad_t retVal = H5T_PAD_ERROR;
690 
691     UNUSED(clss);
692 
693     if (H5T_PAD_ERROR == (retVal = H5Tget_inpad((hid_t)type_id)))
694         H5_LIBRARY_ERROR(ENVONLY);
695 
696 done:
697     return (jint)retVal;
698 } /* end Java_hdf_hdf5lib_H5_H5Tget_1inpad */
699 
700 /*
701  * Class:     hdf_hdf5lib_H5
702  * Method:    H5Tset_inpad
703  * Signature: (JI)I
704  */
705 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1inpad(JNIEnv * env,jclass clss,jlong type_id,jint inpad)706 Java_hdf_hdf5lib_H5_H5Tset_1inpad
707     (JNIEnv *env, jclass clss, jlong type_id, jint inpad)
708 {
709     herr_t retVal = FAIL;
710 
711     UNUSED(clss);
712 
713     if ((retVal = H5Tset_inpad((hid_t)type_id, (H5T_pad_t) inpad)) < 0)
714         H5_LIBRARY_ERROR(ENVONLY);
715 
716 done:
717     return (jint)retVal;
718 } /* end Java_hdf_hdf5lib_H5_H5Tset_1inpad */
719 
720 /*
721  * Class:     hdf_hdf5lib_H5
722  * Method:    H5Tget_cset
723  * Signature: (J)I
724  */
725 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1cset(JNIEnv * env,jclass clss,jlong type_id)726 Java_hdf_hdf5lib_H5_H5Tget_1cset
727     (JNIEnv *env, jclass clss, jlong type_id)
728 {
729     H5T_cset_t retVal = H5T_CSET_ERROR;
730 
731     UNUSED(clss);
732 
733     if (H5T_CSET_ERROR == (retVal = H5Tget_cset((hid_t)type_id)))
734         H5_LIBRARY_ERROR(ENVONLY);
735 
736 done:
737     return (jint)retVal;
738 } /* end Java_hdf_hdf5lib_H5_H5Tget_1cset */
739 
740 /*
741  * Class:     hdf_hdf5lib_H5
742  * Method:    H5Tset_cset
743  * Signature: (JI)I
744  */
745 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1cset(JNIEnv * env,jclass clss,jlong type_id,jint cset)746 Java_hdf_hdf5lib_H5_H5Tset_1cset
747     (JNIEnv *env, jclass clss, jlong type_id, jint cset)
748 {
749     herr_t retVal = FAIL;
750 
751     UNUSED(clss);
752 
753     if ((retVal = H5Tset_cset((hid_t)type_id, (H5T_cset_t)cset)) < 0)
754         H5_LIBRARY_ERROR(ENVONLY);
755 
756 done:
757     return (jint)retVal;
758 } /* end Java_hdf_hdf5lib_H5_H5Tset_1cset */
759 
760 /*
761  * Class:     hdf_hdf5lib_H5
762  * Method:    H5Tget_strpad
763  * Signature: (J)I
764  */
765 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1strpad(JNIEnv * env,jclass clss,jlong type_id)766 Java_hdf_hdf5lib_H5_H5Tget_1strpad
767     (JNIEnv *env, jclass clss, jlong type_id)
768 {
769     H5T_str_t retVal = H5T_STR_ERROR;
770 
771     UNUSED(clss);
772 
773     if (H5T_STR_ERROR == (retVal = H5Tget_strpad((hid_t)type_id)))
774         H5_LIBRARY_ERROR(ENVONLY);
775 
776 done:
777     return (jint)retVal;
778 } /* end Java_hdf_hdf5lib_H5_H5Tget_1strpad */
779 
780 /*
781  * Class:     hdf_hdf5lib_H5
782  * Method:    H5Tset_strpad
783  * Signature: (JI)I
784  */
785 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1strpad(JNIEnv * env,jclass clss,jlong type_id,jint strpad)786 Java_hdf_hdf5lib_H5_H5Tset_1strpad
787     (JNIEnv *env, jclass clss, jlong type_id, jint strpad)
788 {
789     herr_t retVal = FAIL;
790 
791     UNUSED(clss);
792 
793     if ((retVal = H5Tset_strpad((hid_t)type_id, (H5T_str_t)strpad)) < 0)
794         H5_LIBRARY_ERROR(ENVONLY);
795 
796 done:
797     return (jint)retVal;
798 } /* end Java_hdf_hdf5lib_H5_H5Tset_1strpad */
799 
800 /*
801  * Class:     hdf_hdf5lib_H5
802  * Method:    H5Tget_nmembers
803  * Signature: (J)I
804  */
805 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1nmembers(JNIEnv * env,jclass clss,jlong type_id)806 Java_hdf_hdf5lib_H5_H5Tget_1nmembers
807     (JNIEnv *env, jclass clss, jlong type_id)
808 {
809     int retVal = -1;
810 
811     UNUSED(clss);
812 
813     if ((retVal = H5Tget_nmembers((hid_t)type_id)) < 0)
814         H5_LIBRARY_ERROR(ENVONLY);
815 
816 done:
817     return (jint)retVal;
818 } /* end Java_hdf_hdf5lib_H5_H5Tget_1nmembers */
819 
820 /*
821  * Class:     hdf_hdf5lib_H5
822  * Method:    H5Tget_member_name
823  * Signature: (JI)Ljava/lang/String;
824  */
825 JNIEXPORT jstring JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1member_1name(JNIEnv * env,jclass clss,jlong type_id,jint field_idx)826 Java_hdf_hdf5lib_H5_H5Tget_1member_1name
827     (JNIEnv *env, jclass clss, jlong type_id, jint field_idx)
828 {
829     char    *member_name = NULL;
830     jstring  str = NULL;
831 
832     UNUSED(clss);
833 
834     if (NULL == (member_name = H5Tget_member_name((hid_t)type_id, (unsigned)field_idx)))
835         H5_LIBRARY_ERROR(ENVONLY);
836 
837     if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, member_name)))
838         CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
839 
840 done:
841     if (member_name)
842         H5free_memory(member_name);
843 
844     return str;
845 } /* end Java_hdf_hdf5lib_H5_H5Tget_1member_1name */
846 
847 /*
848  * Class:     hdf_hdf5lib_H5
849  * Method:    H5Tget_member_index
850  * Signature: (JLjava/lang/String)I
851  */
852 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1member_1index(JNIEnv * env,jclass clss,jlong type_id,jstring field_name)853 Java_hdf_hdf5lib_H5_H5Tget_1member_1index
854     (JNIEnv *env, jclass clss, jlong type_id, jstring field_name)
855 {
856     const char *datatypeName = NULL;
857     int         index = -1;
858 
859     UNUSED(clss);
860 
861     if (NULL == field_name)
862         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tget_member_index: field name is NULL");
863 
864     PIN_JAVA_STRING(ENVONLY, field_name, datatypeName, NULL, "H5Tget_member_index: field name not pinned");
865 
866     if ((index = H5Tget_member_index((hid_t)type_id, datatypeName)) < 0)
867         H5_LIBRARY_ERROR(ENVONLY);
868 
869 done:
870     if (datatypeName)
871         UNPIN_JAVA_STRING(ENVONLY, field_name, datatypeName);
872 
873     return (jint)index;
874 } /* end Java_hdf_hdf5lib_H5_H5Tget_1member_1index */
875 
876 /*
877  * Class:     hdf_hdf5lib_H5
878  * Method:    H5Tget_member_type
879  * Signature: (JI)J
880  */
881 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Tget_1member_1type(JNIEnv * env,jclass clss,jlong type_id,jint field_idx)882 Java_hdf_hdf5lib_H5__1H5Tget_1member_1type
883     (JNIEnv *env, jclass clss, jlong type_id, jint field_idx)
884 {
885     hid_t retVal = H5I_INVALID_HID;
886 
887     UNUSED(clss);
888 
889     if ((retVal = H5Tget_member_type((hid_t)type_id, (unsigned)field_idx)) < 0)
890         H5_LIBRARY_ERROR(ENVONLY);
891 
892 done:
893     return (jlong)retVal;
894 } /* end Java_hdf_hdf5lib_H5__1H5Tget_1member_1type */
895 
896 /*
897  * Class:     hdf_hdf5lib_H5
898  * Method:    H5Tget_member_offset
899  * Signature: (JI)J
900  */
901 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1member_1offset(JNIEnv * env,jclass clss,jlong type_id,jint memno)902 Java_hdf_hdf5lib_H5_H5Tget_1member_1offset
903     (JNIEnv *env, jclass clss, jlong type_id, jint memno)
904 {
905     UNUSED(env);
906     UNUSED(clss);
907 
908     return (jlong)H5Tget_member_offset((hid_t)type_id, (unsigned)memno);
909 } /* end Java_hdf_hdf5lib_H5_H5Tget_1member_1offset */
910 
911 /*
912  * Class:     hdf_hdf5lib_H5
913  * Method:    H5Tget_member_class
914  * Signature: (JI)I
915  */
916 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1member_1class(JNIEnv * env,jclass clss,jlong type_id,jint memno)917 Java_hdf_hdf5lib_H5_H5Tget_1member_1class
918     (JNIEnv *env, jclass clss, jlong type_id, jint memno)
919 {
920     H5T_class_t retVal = H5T_NO_CLASS;
921 
922     UNUSED(clss);
923 
924     if (H5T_NO_CLASS == (retVal = H5Tget_member_class((hid_t)type_id, (unsigned)memno)))
925         H5_LIBRARY_ERROR(ENVONLY);
926 
927 done:
928     return (jint)retVal;
929 } /* end Java_hdf_hdf5lib_H5_H5Tget_1member_1class */
930 
931 /*
932  * Class:     hdf_hdf5lib_H5
933  * Method:    H5Tinsert
934  * Signature: (JLjava/lang/String;JJ)I
935  */
936 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tinsert(JNIEnv * env,jclass clss,jlong type_id,jstring name,jlong offset,jlong field_id)937 Java_hdf_hdf5lib_H5_H5Tinsert
938     (JNIEnv *env, jclass clss, jlong type_id, jstring name, jlong offset, jlong field_id)
939 {
940     const char *datatypeName = NULL;
941     long        off = (long)offset;
942     herr_t      status = FAIL;
943 
944     UNUSED(clss);
945 
946     if (NULL == name)
947         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tinsert: datatype name is NULL");
948 
949     PIN_JAVA_STRING(ENVONLY, name, datatypeName, NULL, "H5Tinsert: datatype name not pinned");
950 
951     if ((status = H5Tinsert((hid_t)type_id, datatypeName, (size_t)off, field_id)) < 0)
952         H5_LIBRARY_ERROR(ENVONLY);
953 
954 done:
955     if (datatypeName)
956         UNPIN_JAVA_STRING(ENVONLY, name, datatypeName);
957 
958     return (jint)status;
959 } /* end Java_hdf_hdf5lib_H5_H5Tinsert */
960 
961 /*
962  * Class:     hdf_hdf5lib_H5
963  * Method:    H5Tpack
964  * Signature: (J)I
965  */
966 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tpack(JNIEnv * env,jclass clss,jlong type_id)967 Java_hdf_hdf5lib_H5_H5Tpack
968     (JNIEnv *env, jclass clss, jlong type_id)
969 {
970     herr_t retVal = FAIL;
971 
972     UNUSED(clss);
973 
974     if ((retVal = H5Tpack((hid_t)type_id)) < 0)
975         H5_LIBRARY_ERROR(ENVONLY);
976 
977 done:
978     return (jint)retVal;
979 } /* end Java_hdf_hdf5lib_H5_H5Tpack */
980 
981 /*
982  * Class:     hdf_hdf5lib_H5
983  * Method:    _H5Tclose
984  * Signature: (J)I
985  */
986 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5__1H5Tclose(JNIEnv * env,jclass clss,jlong type_id)987 Java_hdf_hdf5lib_H5__1H5Tclose
988     (JNIEnv *env, jclass clss, jlong type_id)
989 {
990     herr_t retVal = FAIL;
991 
992     UNUSED(clss);
993 
994     if ((retVal = H5Tclose((hid_t)type_id)) < 0)
995         H5_LIBRARY_ERROR(ENVONLY);
996 
997 done:
998     return (jint)retVal;
999 } /* end Java_hdf_hdf5lib_H5__1H5Tclose */
1000 
1001 /*
1002  * Class:     hdf_hdf5lib_H5
1003  * Method:    _H5Tvlen_create
1004  * Signature: (J)J
1005  */
1006 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Tvlen_1create(JNIEnv * env,jclass clss,jlong base_id)1007 Java_hdf_hdf5lib_H5__1H5Tvlen_1create
1008     (JNIEnv *env, jclass clss, jlong base_id)
1009 {
1010     hid_t retVal = H5I_INVALID_HID;
1011 
1012     UNUSED(clss);
1013 
1014     if ((retVal = H5Tvlen_create((hid_t)base_id)) < 0)
1015         H5_LIBRARY_ERROR(ENVONLY);
1016 
1017 done:
1018     return (jlong)retVal;
1019 } /* end Java_hdf_hdf5lib_H5__1H5Tvlen_1create */
1020 
1021 /*
1022  * Class:     hdf_hdf5lib_H5
1023  * Method:    H5Tset_tag
1024  * Signature: (JLjava/lang/String;)I
1025  */
1026 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tset_1tag(JNIEnv * env,jclass clss,jlong type,jstring tag)1027 Java_hdf_hdf5lib_H5_H5Tset_1tag
1028     (JNIEnv *env, jclass clss, jlong type, jstring tag)
1029 {
1030     const char *tagBuf = NULL;
1031     herr_t      status = FAIL;
1032 
1033     UNUSED(clss);
1034 
1035     if (NULL == tag)
1036         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tset_tag: tag is NULL");
1037 
1038     PIN_JAVA_STRING(ENVONLY, tag, tagBuf, NULL, "H5Tset_tag: tag buffer not pinned");
1039 
1040     if ((status = H5Tset_tag((hid_t)type, tagBuf)) < 0)
1041         H5_LIBRARY_ERROR(ENVONLY);
1042 
1043 done:
1044     if (tagBuf)
1045         UNPIN_JAVA_STRING(ENVONLY, tag, tagBuf);
1046 
1047     return (jint)status;
1048 } /* end Java_hdf_hdf5lib_H5_H5Tset_1tag */
1049 
1050 /*
1051  * Class:     hdf_hdf5lib_H5
1052  * Method:    H5Tget_tag
1053  * Signature: (J)Ljava/lang/String;
1054  */
1055 JNIEXPORT jstring JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1tag(JNIEnv * env,jclass clss,jlong type)1056 Java_hdf_hdf5lib_H5_H5Tget_1tag
1057     (JNIEnv *env, jclass clss, jlong type)
1058 {
1059     jstring  str = NULL;
1060     char    *tag = NULL;
1061 
1062     UNUSED(clss);
1063 
1064     if (NULL == (tag = H5Tget_tag((hid_t)type)))
1065         H5_LIBRARY_ERROR(ENVONLY);
1066 
1067     if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, tag)))
1068         CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1069 
1070 done:
1071     if (tag)
1072         H5free_memory(tag);
1073 
1074     return str;
1075 } /* end Java_hdf_hdf5lib_H5_H5Tget_1tag */
1076 
1077 /*
1078  * Class:     hdf_hdf5lib_H5
1079  * Method:    H5Tget_super
1080  * Signature: (J)J
1081  */
1082 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Tget_1super(JNIEnv * env,jclass clss,jlong type_id)1083 Java_hdf_hdf5lib_H5__1H5Tget_1super
1084     (JNIEnv *env, jclass clss, jlong type_id)
1085 {
1086     hid_t retVal = H5I_INVALID_HID;
1087 
1088     UNUSED(clss);
1089 
1090     if ((retVal = H5Tget_super((hid_t)type_id)) < 0)
1091         H5_LIBRARY_ERROR(ENVONLY);
1092 
1093 done:
1094     return (jlong)retVal;
1095 } /* end Java_hdf_hdf5lib_H5__1H5Tget_1super */
1096 
1097 /*
1098  * Class:     hdf_hdf5lib_H5
1099  * Method:    _H5Tenum_create
1100  * Signature: (J)J
1101  */
1102 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Tenum_1create(JNIEnv * env,jclass clss,jlong base_id)1103 Java_hdf_hdf5lib_H5__1H5Tenum_1create
1104     (JNIEnv *env, jclass clss, jlong base_id)
1105 {
1106     hid_t retVal = H5I_INVALID_HID;
1107 
1108     UNUSED(clss);
1109 
1110     if ((retVal = H5Tenum_create((hid_t)base_id)) < 0)
1111         H5_LIBRARY_ERROR(ENVONLY);
1112 
1113 done:
1114     return (jlong)retVal;
1115 } /* end Java_hdf_hdf5lib_H5__1H5Tenum_1create */
1116 
1117 /*
1118  * Class:     hdf_hdf5lib_H5
1119  * Method:    H5Tenum_insert_int
1120  * Signature: (JLjava/lang/String;[I)I
1121  */
1122 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tenum_1insert_1int(JNIEnv * env,jclass clss,jlong type_id,jstring name,jintArray value)1123 Java_hdf_hdf5lib_H5_H5Tenum_1insert_1int
1124     (JNIEnv *env, jclass clss, jlong type_id, jstring name, jintArray value)
1125 {
1126     const char *memberName = NULL;
1127     jboolean    isCopy;
1128     jint       *intBuf = NULL;
1129     herr_t      status = FAIL;
1130 
1131     UNUSED(clss);
1132 
1133     if (NULL == value)
1134         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_insert_int: value is NULL");
1135     if (NULL == name)
1136         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_insert_int: member name is NULL");
1137 
1138     PIN_JAVA_STRING(ENVONLY, name, memberName, NULL, "H5Tenum_insert_int: member name not pinned");
1139 
1140     PIN_INT_ARRAY(ENVONLY, value, intBuf, &isCopy, "H5Tenum_insert_int: int buffer not pinned");
1141 
1142     if ((status = H5Tenum_insert((hid_t)type_id, memberName, intBuf)) < 0)
1143         H5_LIBRARY_ERROR(ENVONLY);
1144 
1145 done:
1146     if (intBuf)
1147         UNPIN_INT_ARRAY(ENVONLY, value, intBuf, (status < 0) ? JNI_ABORT : 0);
1148     if (memberName)
1149         UNPIN_JAVA_STRING(ENVONLY, name, memberName);
1150 
1151     return (jint)status;
1152 } /* end Java_hdf_hdf5lib_H5_H5Tenum_1insert_1int */
1153 
1154 /*
1155  * Class:     hdf_hdf5lib_H5
1156  * Method:    H5Tenum_insert
1157  * Signature: (JLjava/lang/String;[B)V
1158  */
1159 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Tenum_1insert(JNIEnv * env,jclass clss,jlong type_id,jstring name,jbyteArray value)1160 Java_hdf_hdf5lib_H5_H5Tenum_1insert
1161     (JNIEnv *env, jclass clss, jlong type_id, jstring name, jbyteArray value)
1162 {
1163     const char *memberName = NULL;
1164     jboolean    isCopy;
1165     jbyte      *memberBuf = NULL;
1166     herr_t      status = FAIL;
1167 
1168     UNUSED(clss);
1169 
1170     if (NULL == value)
1171         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_insert: value is NULL");
1172     if (NULL == name)
1173         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_insert: member name is NULL");
1174 
1175     PIN_JAVA_STRING(ENVONLY, name, memberName, NULL, "H5Tenum_insert: member name not pinned");
1176 
1177     PIN_BYTE_ARRAY(ENVONLY, value, memberBuf, &isCopy, "H5Tenum_insert: member buffer not pinned");
1178 
1179     if ((status = H5Tenum_insert((hid_t)type_id, memberName, memberBuf)) < 0)
1180         H5_LIBRARY_ERROR(ENVONLY);
1181 
1182 done:
1183     if (memberBuf)
1184         UNPIN_BYTE_ARRAY(ENVONLY, value, memberBuf, (status < 0) ? JNI_ABORT : 0);
1185     if (memberName)
1186         UNPIN_JAVA_STRING(ENVONLY, name, memberName);
1187 } /* end Java_hdf_hdf5lib_H5_H5Tenum_1insert */
1188 
1189 /*
1190  * Class:     hdf_hdf5lib_H5
1191  * Method:    H5Tenum_nameof_int
1192  * Signature: (J[I[Ljava/lang/String;I)I
1193  */
1194 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tenum_1nameof_1int(JNIEnv * env,jclass clss,jlong type_id,jintArray value,jobjectArray name,jint size)1195 Java_hdf_hdf5lib_H5_H5Tenum_1nameof_1int
1196     (JNIEnv *env, jclass clss, jlong type_id, jintArray value, jobjectArray name,
1197           jint size)
1198 {
1199     jboolean  isCopy;
1200     jstring   str;
1201     jint     *intP = NULL;
1202     char     *nameP = NULL;
1203     herr_t    status = FAIL;
1204 
1205     UNUSED(clss);
1206 
1207     if (NULL == value)
1208         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_nameof_int: value is NULL");
1209     if (size <= 0)
1210         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tenum_nameof_int: name size < 0");
1211 
1212     if (NULL == (nameP = (char *) HDmalloc(sizeof(char) * (size_t)size)))
1213         H5_JNI_FATAL_ERROR(ENVONLY, "H5Tenum_nameof_int: failed to allocate name buffer");
1214 
1215     PIN_INT_ARRAY(ENVONLY, value, intP, &isCopy, "H5Tenum_nameof_int: value not pinned");
1216 
1217     if ((status = H5Tenum_nameof((hid_t)type_id, intP, nameP, (size_t)size)) < 0)
1218         H5_LIBRARY_ERROR(ENVONLY);
1219     nameP[(size_t)size - 1] = '\0';
1220 
1221     if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, nameP)))
1222         CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1223 
1224     ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
1225     CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1226 
1227 done:
1228     if (intP)
1229         UNPIN_INT_ARRAY(ENVONLY, value, intP, JNI_ABORT);
1230     if (nameP)
1231         HDfree(nameP);
1232 
1233     return (jint)status;
1234 } /* end Java_hdf_hdf5lib_H5_H5Tenum_1nameof_1int */
1235 
1236 /*
1237  * Class:     hdf_hdf5lib_H5
1238  * Method:    H5Tenum_nameof
1239  * Signature: (J[BJ)Ljava/lang/String;
1240  */
1241 JNIEXPORT jstring JNICALL
Java_hdf_hdf5lib_H5_H5Tenum_1nameof(JNIEnv * env,jclass clss,jlong type_id,jbyteArray value,jlong size)1242 Java_hdf_hdf5lib_H5_H5Tenum_1nameof
1243     (JNIEnv *env, jclass clss, jlong type_id, jbyteArray value, jlong size)
1244 {
1245     jboolean  isCopy;
1246     jstring   str = NULL;
1247     jbyte    *byteP = NULL;
1248     char     *nameP = NULL;
1249     herr_t    status = FAIL;
1250 
1251     UNUSED(clss);
1252 
1253     if (size <= 0)
1254         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tenum_nameof: name size < 0");
1255     if (NULL == value)
1256         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_nameof: value is NULL");
1257 
1258     if (NULL == (nameP = (char *) HDmalloc(sizeof(char) * (size_t)size)))
1259         H5_JNI_FATAL_ERROR(ENVONLY, "H5Tenum_nameof: failed to allocate name buffer");
1260 
1261     PIN_BYTE_ARRAY(ENVONLY, value, byteP, &isCopy, "H5Tenum_nameof: value not pinned");
1262 
1263     if ((status = H5Tenum_nameof((hid_t)type_id, byteP, nameP, (size_t)size)) < 0)
1264         H5_LIBRARY_ERROR(ENVONLY);
1265     nameP[(size_t)size - 1] = '\0';
1266 
1267     if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, nameP)))
1268         CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1269 
1270 done:
1271     if (byteP)
1272         UNPIN_BYTE_ARRAY(ENVONLY, value, byteP, JNI_ABORT);
1273     if (nameP)
1274         HDfree(nameP);
1275 
1276     return str;
1277 } /* end Java_hdf_hdf5lib_H5_H5Tenum_1nameof */
1278 
1279 /*
1280  * Class:     hdf_hdf5lib_H5
1281  * Method:    H5Tenum_valueof_int
1282  * Signature: (JLjava/lang/String;[I)I
1283  */
1284 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tenum_1valueof_1int(JNIEnv * env,jclass clss,jlong type_id,jstring name,jintArray value)1285 Java_hdf_hdf5lib_H5_H5Tenum_1valueof_1int
1286     (JNIEnv *env, jclass clss, jlong type_id, jstring name, jintArray value)
1287 {
1288     const char *enumValue = NULL;
1289     jboolean    isCopy;
1290     jint       *enumValueBuf = NULL;
1291     herr_t      status = FAIL;
1292 
1293     UNUSED(clss);
1294 
1295     if (NULL == value)
1296         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_valueof_int: value is NULL");
1297     if (NULL == name)
1298         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_valueof_int: enum value name is NULL");
1299 
1300     PIN_JAVA_STRING(ENVONLY, name, enumValue, NULL, "H5Tenum_valueof_int: enum value not pinned");
1301 
1302     PIN_INT_ARRAY(ENVONLY, value, enumValueBuf, &isCopy, "H5Tenum_valueof_int: enum value buffer not pinned");
1303 
1304     if ((status = H5Tenum_valueof((hid_t)type_id, enumValue, enumValueBuf)) < 0)
1305         H5_LIBRARY_ERROR(ENVONLY);
1306 
1307 done:
1308     if (enumValueBuf)
1309         UNPIN_INT_ARRAY(ENVONLY, value, enumValueBuf, (status < 0) ? JNI_ABORT : 0);
1310     if (enumValue)
1311         UNPIN_JAVA_STRING(ENVONLY, name, enumValue);
1312 
1313     return (jint)status;
1314 } /* end Java_hdf_hdf5lib_H5_H5Tenum_1valueof_1int */
1315 
1316 /*
1317  * Class:     hdf_hdf5lib_H5
1318  * Method:    H5Tenum_valueof
1319  * Signature: (JLjava/lang/String;[B)V
1320  */
1321 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Tenum_1valueof(JNIEnv * env,jclass clss,jlong type_id,jstring name,jbyteArray value)1322 Java_hdf_hdf5lib_H5_H5Tenum_1valueof
1323     (JNIEnv *env, jclass clss, jlong type_id, jstring name, jbyteArray value)
1324 {
1325     const char *enumValue = NULL;
1326     jboolean    isCopy;
1327     jbyte      *enumValueBuf = NULL;
1328     herr_t      status = FAIL;
1329 
1330     UNUSED(clss);
1331 
1332     if (NULL == value)
1333         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_valueof: value is NULL");
1334     if (NULL == name)
1335         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tenum_valueof: enum value name is NULL");
1336 
1337     PIN_JAVA_STRING(ENVONLY, name, enumValue, NULL, "H5Tenum_valueof: enum value not pinned");
1338 
1339     PIN_BYTE_ARRAY(ENVONLY, value, enumValueBuf, &isCopy, "H5Tenum_valueof: enum value buffer not pinned");
1340 
1341     if ((status = H5Tenum_valueof((hid_t)type_id, enumValue, enumValueBuf)) < 0)
1342         H5_LIBRARY_ERROR(ENVONLY);
1343 
1344 done:
1345     if (enumValueBuf)
1346         UNPIN_BYTE_ARRAY(ENVONLY, value, enumValueBuf, (status < 0) ? JNI_ABORT : 0);
1347     if (enumValue)
1348         UNPIN_JAVA_STRING(ENVONLY, name, enumValue);
1349 } /* end Java_hdf_hdf5lib_H5_H5Tenum_1valueof */
1350 
1351 /*
1352  * Class:     hdf_hdf5lib_H5
1353  * Method:    H5Tget_member_value_int
1354  * Signature: (JI[I)I
1355  */
1356 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1member_1value_1int(JNIEnv * env,jclass clss,jlong type_id,jint membno,jintArray value)1357 Java_hdf_hdf5lib_H5_H5Tget_1member_1value_1int
1358     (JNIEnv *env, jclass clss, jlong type_id, jint membno, jintArray value)
1359 {
1360     jboolean  isCopy;
1361     jint     *intP = NULL;
1362     herr_t    status = FAIL;
1363 
1364     UNUSED(clss);
1365 
1366     if (NULL == value)
1367         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tget_member_value: value is NULL");
1368 
1369     PIN_INT_ARRAY(ENVONLY, value, intP, &isCopy, "H5Tget_member_value: value not pinned");
1370 
1371     if ((status = H5Tget_member_value((hid_t)type_id, (unsigned)membno, intP)) < 0)
1372         H5_LIBRARY_ERROR(ENVONLY);
1373 
1374 done:
1375     if (intP)
1376         UNPIN_INT_ARRAY(ENVONLY, value, intP, (status < 0) ? JNI_ABORT : 0);
1377 
1378     return (jint)status;
1379 } /* end Java_hdf_hdf5lib_H5_H5Tget_1member_1value_1int */
1380 
1381 /*
1382  * Class:     hdf_hdf5lib_H5
1383  * Method:    H5Tget_member_value
1384  * Signature: (JI[B)V
1385  */
1386 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1member_1value(JNIEnv * env,jclass clss,jlong type_id,jint membno,jbyteArray value)1387 Java_hdf_hdf5lib_H5_H5Tget_1member_1value
1388     (JNIEnv *env, jclass clss, jlong type_id, jint membno, jbyteArray value)
1389 {
1390     jboolean  isCopy;
1391     jbyte    *byteP = NULL;
1392     herr_t    status = FAIL;
1393 
1394     UNUSED(clss);
1395 
1396     if (NULL == value)
1397         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tget_member_value: value is NULL");
1398 
1399     PIN_BYTE_ARRAY(ENVONLY, value, byteP, &isCopy, "H5Tget_member_value: value not pinned");
1400 
1401     if ((status = H5Tget_member_value((hid_t)type_id, (unsigned)membno, byteP)) < 0)
1402         H5_LIBRARY_ERROR(ENVONLY);
1403 
1404 done:
1405     if (byteP)
1406         UNPIN_BYTE_ARRAY(ENVONLY, value, byteP, (status < 0) ? JNI_ABORT : 0);
1407 } /* end Java_hdf_hdf5lib_H5_H5Tget_1member_1value */
1408 
1409 /*
1410  * Class:     hdf_hdf5lib_H5
1411  * Method:    H5Tget_array_dims
1412  * Signature: (J)I
1413  */
1414 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1array_1ndims(JNIEnv * env,jclass clss,jlong type_id)1415 Java_hdf_hdf5lib_H5_H5Tget_1array_1ndims
1416     (JNIEnv *env, jclass clss, jlong type_id)
1417 {
1418     int ndims = -1;
1419 
1420     UNUSED(clss);
1421 
1422     if ((ndims = H5Tget_array_ndims((hid_t)type_id)) < 0)
1423         H5_LIBRARY_ERROR(ENVONLY);
1424 
1425 done:
1426     return (jint)ndims;
1427 } /* end Java_hdf_hdf5lib_H5_H5Tget_1array_1ndims */
1428 
1429 /*
1430  * Class:     hdf_hdf5lib_H5
1431  * Method:    H5Tarray_get_dims
1432  * Signature: (J[I[I)I
1433  */
1434 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1array_1dims(JNIEnv * env,jclass clss,jlong type_id,jintArray dims,jintArray perms)1435 Java_hdf_hdf5lib_H5_H5Tget_1array_1dims
1436     (JNIEnv *env, jclass clss, jlong type_id, jintArray dims, jintArray perms)
1437 {
1438     jboolean  isCopy;
1439     hsize_t  *cdims = NULL;
1440     size_t    i;
1441     jsize     dlen;
1442     jint     *dimsP = NULL;
1443     int       ndims = -1;
1444 
1445     UNUSED(clss);
1446     UNUSED(perms);
1447 
1448     if (NULL == dims)
1449         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tget_array_dims: dims array is NULL");
1450 
1451     PIN_INT_ARRAY(ENVONLY, dims, dimsP, &isCopy, "H5Tget_array_dims: dimsP not pinned");
1452 
1453     if ((dlen = ENVPTR->GetArrayLength(ENVONLY, dims)) < 0) {
1454         CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1455         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tget_array_dims: dims array length < 0");
1456     }
1457 
1458     if (NULL == (cdims = (hsize_t *) HDmalloc((size_t)dlen * sizeof(hsize_t))))
1459         H5_JNI_FATAL_ERROR(ENVONLY, "H5Tget_array_dims: failed to allocate dimension buffer");
1460 
1461     if ((ndims = H5Tget_array_dims2((hid_t)type_id, cdims)) < 0)
1462         H5_LIBRARY_ERROR(ENVONLY);
1463 
1464     for (i = 0; i < (size_t) dlen; i++) {
1465         dimsP[i] = (jint) cdims[i];
1466     } /* end for */
1467 
1468 done:
1469     if (cdims)
1470         HDfree(cdims);
1471     if (dimsP)
1472         UNPIN_INT_ARRAY(ENVONLY, dims, dimsP, (ndims < 0) ? JNI_ABORT : 0);
1473 
1474     return (jint)ndims;
1475 } /* end Java_hdf_hdf5lib_H5_H5Tget_1array_1dims */
1476 
1477 /*
1478  * Class:     hdf_hdf5lib_H5
1479  * Method:    H5Tis_variable_str
1480  * Signature: (J)Z
1481  */
1482 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Tis_1variable_1str(JNIEnv * env,jclass clss,jlong type_id)1483 Java_hdf_hdf5lib_H5_H5Tis_1variable_1str
1484     (JNIEnv *env, jclass clss, jlong type_id)
1485 {
1486     htri_t bval = JNI_FALSE;
1487 
1488     UNUSED(clss);
1489 
1490     if ((bval = H5Tis_variable_str((hid_t)type_id)) < 0)
1491         H5_LIBRARY_ERROR(ENVONLY);
1492 
1493     bval = (bval > 0) ? JNI_TRUE : JNI_FALSE;
1494 
1495 done:
1496     return (jboolean)bval;
1497 } /* end Java_hdf_hdf5lib_H5_H5Tis_1variable_1str */
1498 
1499 /*
1500  * Class:     hdf_hdf5lib_H5
1501  * Method:    H5Tget_native_type
1502  * Signature: (JI)J
1503  */
1504 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Tget_1native_1type(JNIEnv * env,jclass clss,jlong type_id,jint direction)1505 Java_hdf_hdf5lib_H5__1H5Tget_1native_1type
1506     (JNIEnv *env, jclass clss, jlong type_id, jint direction)
1507 {
1508     hid_t native_tid = H5I_INVALID_HID;
1509 
1510     UNUSED(clss);
1511 
1512     if ((native_tid = H5Tget_native_type((hid_t)type_id, (H5T_direction_t)direction)) < 0)
1513         H5_LIBRARY_ERROR(ENVONLY);
1514 
1515 done:
1516     return (jlong)native_tid;
1517 } /* end Java_hdf_hdf5lib_H5__1H5Tget_1native_1type */
1518 
1519 /*
1520  * Class:     hdf_hdf5lib_H5
1521  * Method:    H5Tdetect_class
1522  * Signature: (JI)Z
1523  */
1524 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Tdetect_1class(JNIEnv * env,jclass clss,jlong type_id,jint dtype_class)1525 Java_hdf_hdf5lib_H5_H5Tdetect_1class
1526     (JNIEnv *env, jclass clss, jlong type_id, jint dtype_class)
1527 {
1528     htri_t bval = JNI_FALSE;
1529 
1530     UNUSED(clss);
1531 
1532     if ((bval = H5Tdetect_class((hid_t)type_id, (H5T_class_t)dtype_class)) < 0)
1533         H5_LIBRARY_ERROR(ENVONLY);
1534 
1535     bval = (bval > 0) ? JNI_TRUE : JNI_FALSE;
1536 
1537 done:
1538     return (jboolean)bval;
1539 } /* end Java_hdf_hdf5lib_H5_H5Tdetect_1class */
1540 
1541 /*
1542  * Class:     hdf_hdf5lib_H5
1543  * Method:    H5Tcommit
1544  * Signature: (JLjava/lang/String;JJJJ)V
1545  */
1546 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Tcommit(JNIEnv * env,jclass clss,jlong loc_id,jstring name,jlong type,jlong link_plist_id,jlong create_plist_id,jlong access_plist_id)1547 Java_hdf_hdf5lib_H5_H5Tcommit
1548     (JNIEnv *env, jclass clss, jlong loc_id, jstring name, jlong type,
1549           jlong link_plist_id, jlong create_plist_id, jlong access_plist_id)
1550 {
1551     const char *datatypeName = NULL;
1552     herr_t      status = FAIL;
1553 
1554     UNUSED(clss);
1555 
1556     if (NULL == name)
1557         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tcommit: datatype name is NULL");
1558 
1559     PIN_JAVA_STRING(ENVONLY, name, datatypeName, NULL, "H5Tcommit: datatype name not pinned");
1560 
1561     if ((status = H5Tcommit2((hid_t)loc_id, datatypeName, (hid_t)type, (hid_t)link_plist_id, (hid_t)create_plist_id, (hid_t)access_plist_id)) < 0)
1562         H5_LIBRARY_ERROR(ENVONLY);
1563 
1564 done:
1565     if (datatypeName)
1566         UNPIN_JAVA_STRING(ENVONLY, name, datatypeName);
1567 } /* end Java_hdf_hdf5lib_H5_H5Tcommit */
1568 
1569 /*
1570  * Class:     hdf_hdf5lib_H5
1571  * Method:    _H5Tarray_create2
1572  * Signature: (JI[J)J
1573  */
1574 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5__1H5Tarray_1create2(JNIEnv * env,jclass clss,jlong base_id,jint rank,jlongArray dims)1575 Java_hdf_hdf5lib_H5__1H5Tarray_1create2
1576     (JNIEnv *env, jclass clss, jlong base_id, jint rank, jlongArray dims)
1577 {
1578     jboolean  isCopy;
1579     hsize_t  *cdims = NULL;
1580     size_t    i;
1581     jlong    *dimsP = NULL;
1582     jsize     dlen;
1583     hid_t     retVal = H5I_INVALID_HID;
1584 
1585     UNUSED(clss);
1586 
1587     if (rank <= 0)
1588         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tarray_create: rank is < 1");
1589     if (NULL == dims)
1590         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tarray_create: dims is NULL");
1591 
1592     PIN_LONG_ARRAY(ENVONLY, dims, dimsP, &isCopy, "H5Tarray_create: dimsP not pinned");
1593 
1594     if ((dlen = ENVPTR->GetArrayLength(ENVONLY, dims)) < 0) {
1595         CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1596         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tarray_create: dims array length < 0");
1597     }
1598 
1599     if (dlen != rank)
1600         H5_JNI_FATAL_ERROR(ENVONLY, "H5Tarray_create: dimension array length != array rank");
1601 
1602     if (NULL == (cdims = (hsize_t *) HDmalloc((size_t)dlen * sizeof(hsize_t))))
1603         H5_JNI_FATAL_ERROR(ENVONLY, "H5Tarray_create: failed to allocate dimension buffer");
1604 
1605     for (i = 0; i < (size_t) dlen; i++) {
1606         cdims[i] = (hsize_t)dimsP[i];
1607     } /* end for */
1608 
1609     if ((retVal = H5Tarray_create2((hid_t)base_id, (unsigned)rank, (const hsize_t *)cdims)) < 0)
1610         H5_LIBRARY_ERROR(ENVONLY);
1611 
1612 done:
1613     if (cdims)
1614         HDfree(cdims);
1615     if (dimsP)
1616         UNPIN_LONG_ARRAY(ENVONLY, dims, dimsP, (retVal < 0) ? JNI_ABORT : 0);
1617 
1618     return (jlong)retVal;
1619 } /* end Java_hdf_hdf5lib_H5__1H5Tarray_1create2 */
1620 
1621 /*
1622  * Class:     hdf_hdf5lib_H5
1623  * Method:    H5Tget_array_dims2
1624  * Signature: (J[J)I
1625  */
1626 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Tget_1array_1dims2(JNIEnv * env,jclass clss,jlong type_id,jlongArray dims)1627 Java_hdf_hdf5lib_H5_H5Tget_1array_1dims2
1628     (JNIEnv *env, jclass clss, jlong type_id, jlongArray dims)
1629 {
1630     jboolean  isCopy;
1631     hsize_t  *cdims = NULL;
1632     size_t    i;
1633     jlong    *dimsP = NULL;
1634     jsize     dlen;
1635     int       ndims = -1;
1636 
1637     UNUSED(clss);
1638 
1639     if (NULL == dims)
1640         H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Tarray_get_dims2: value is NULL");
1641 
1642     PIN_LONG_ARRAY(ENVONLY, dims, dimsP, &isCopy, "H5Tarray_get_dims2: dimsP not pinned");
1643 
1644     if ((dlen = ENVPTR->GetArrayLength(ENVONLY, dims)) < 0) {
1645         CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1646         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tarray_get_dims2: dims array length < 0");
1647     }
1648 
1649     if (NULL == (cdims = (hsize_t *) HDmalloc((size_t)dlen * sizeof(hsize_t))))
1650         H5_JNI_FATAL_ERROR(ENVONLY, "H5Tarray_get_dims2: failed to allocate dimension buffer");
1651 
1652     if ((ndims = H5Tget_array_dims2((hid_t)type_id, (hsize_t*)cdims)) < 0)
1653         H5_LIBRARY_ERROR(ENVONLY);
1654 
1655     for (i = 0; i < (size_t) dlen; i++) {
1656         dimsP[i] = (jlong) cdims[i];
1657     } /* end for */
1658 
1659 done:
1660     if (cdims)
1661         HDfree(cdims);
1662     if (dimsP)
1663         UNPIN_LONG_ARRAY(ENVONLY, dims, dimsP, (ndims < 0) ? JNI_ABORT : 0);
1664 
1665     return (jint)ndims;
1666 } /* end Java_hdf_hdf5lib_H5_H5Tget_1array_1dims2 */
1667 
1668 /*
1669  * Class:     hdf_hdf5lib_H5
1670  * Method:    H5Tconvert
1671  * Signature: (JJJ[B[BJ)V
1672  */
1673 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Tconvert(JNIEnv * env,jclass clss,jlong src_id,jlong dst_id,jlong nelmts,jbyteArray buf,jbyteArray background,jlong plist_id)1674 Java_hdf_hdf5lib_H5_H5Tconvert
1675     (JNIEnv *env, jclass clss, jlong src_id, jlong dst_id, jlong nelmts,
1676       jbyteArray buf, jbyteArray background, jlong plist_id)
1677 {
1678     jboolean  isCopy;
1679     jbyte    *bufP = NULL;
1680     jbyte    *bgP = NULL;
1681     herr_t    status = FAIL;
1682 
1683     UNUSED(clss);
1684 
1685     if (nelmts <= 0)
1686         H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Tconvert: nelmts < 0");
1687 
1688     PIN_BYTE_ARRAY(ENVONLY, buf, bufP, &isCopy, "H5Tconvert: buffer not pinned");
1689 
1690     if (background)
1691         PIN_BYTE_ARRAY(ENVONLY, background, bgP, &isCopy, "H5Tconvert: background buffer not pinned");
1692 
1693     if ((status = H5Tconvert((hid_t)src_id, (hid_t)dst_id, (size_t)nelmts, (void *)bufP, (void *)bgP, (hid_t)plist_id)) < 0)
1694         H5_LIBRARY_ERROR(ENVONLY);
1695 
1696 done:
1697     if (bgP)
1698         UNPIN_BYTE_ARRAY(ENVONLY, background, bgP, (status < 0) ? JNI_ABORT : 0);
1699     if (bufP)
1700         UNPIN_BYTE_ARRAY(ENVONLY, buf, bufP, (status < 0) ? JNI_ABORT : 0);
1701 } /* end Java_hdf_hdf5lib_H5_H5Tconvert */
1702 
1703 /*
1704  * Class:     hdf_hdf5lib_H5
1705  * Method:    H5Tflush
1706  * Signature: (J)V
1707  */
1708 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Tflush(JNIEnv * env,jclass clss,jlong loc_id)1709 Java_hdf_hdf5lib_H5_H5Tflush(JNIEnv *env, jclass clss, jlong loc_id)
1710 {
1711     UNUSED(clss);
1712 
1713     if (H5Tflush((hid_t)loc_id) < 0)
1714         H5_LIBRARY_ERROR(ENVONLY);
1715 
1716 done:
1717     return;
1718 }
1719 
1720 /*
1721  * Class:     hdf_hdf5lib_H5
1722  * Method:    H5Trefresh
1723  * Signature: (J)V
1724  */
1725 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Trefresh(JNIEnv * env,jclass clss,jlong loc_id)1726 Java_hdf_hdf5lib_H5_H5Trefresh(JNIEnv *env, jclass clss, jlong loc_id)
1727 {
1728     UNUSED(clss);
1729 
1730     if (H5Trefresh((hid_t)loc_id) < 0)
1731         H5_LIBRARY_ERROR(ENVONLY);
1732 
1733 done:
1734     return;
1735 }
1736 
1737 
1738 #ifdef __cplusplus
1739 } /* end extern "C" */
1740 #endif /* __cplusplus */
1741