1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2 * Copyright by The HDF Group. *
3 * Copyright by the Board of Trustees of the University of Illinois. *
4 * All rights reserved. *
5 * *
6 * This file is part of HDF5. The full HDF5 copyright notice, including *
7 * terms governing use, modification, and redistribution, is contained in *
8 * the COPYING file, which can be found at the root of the source code *
9 * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
10 * If you do not have access to either file, you may request a copy from *
11 * help@hdfgroup.org. *
12 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13
14 /*
15 * For details of the HDF libraries, see the HDF Documentation at:
16 * http://hdfgroup.org/HDF5/doc/
17 *
18 */
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif /* __cplusplus */
23
24 #include <stdlib.h>
25 #include "hdf5.h"
26 #include "h5jni.h"
27 #include "h5pDCPLImp.h"
28
29 /*
30 * Pointer to the JNI's Virtual Machine; used for callback functions.
31 */
32 /* extern JavaVM *jvm; */
33
34 /*
35 * Class: hdf_hdf5lib_H5
36 * Method: H5Pset_layout
37 * Signature: (JI)I
38 */
39 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1layout(JNIEnv * env,jclass clss,jlong plist,jint layout)40 Java_hdf_hdf5lib_H5_H5Pset_1layout
41 (JNIEnv *env, jclass clss, jlong plist, jint layout)
42 {
43 herr_t retVal = FAIL;
44
45 UNUSED(clss);
46
47 if ((retVal = H5Pset_layout((hid_t)plist, (H5D_layout_t)layout)) < 0)
48 H5_LIBRARY_ERROR(ENVONLY);
49
50 done:
51 return (jint)retVal;
52 } /* end Java_hdf_hdf5lib_H5_H5Pset_1layout */
53
54 /*
55 * Class: hdf_hdf5lib_H5
56 * Method: H5Pget_layout
57 * Signature: (J)I
58 */
59 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1layout(JNIEnv * env,jclass clss,jlong plist)60 Java_hdf_hdf5lib_H5_H5Pget_1layout
61 (JNIEnv *env, jclass clss, jlong plist)
62 {
63 H5D_layout_t retVal = H5D_LAYOUT_ERROR;
64
65 UNUSED(clss);
66
67 if (H5D_LAYOUT_ERROR == (retVal = H5Pget_layout((hid_t)plist)))
68 H5_LIBRARY_ERROR(ENVONLY);
69
70 done:
71 return (jint)retVal;
72 } /* end Java_hdf_hdf5lib_H5_H5Pget_1layout */
73
74 /*
75 * Class: hdf_hdf5lib_H5
76 * Method: H5Pset_chunk
77 * Signature: (JI[B)I
78 */
79 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1chunk(JNIEnv * env,jclass clss,jlong plist,jint ndims,jbyteArray dim)80 Java_hdf_hdf5lib_H5_H5Pset_1chunk
81 (JNIEnv *env, jclass clss, jlong plist, jint ndims, jbyteArray dim)
82 {
83 jboolean isCopy;
84 hsize_t *da = NULL;
85 hsize_t *lp = NULL;
86 size_t i;
87 size_t rank;
88 jsize arrLen;
89 jbyte *theArray = NULL;
90 jlong *jlp = NULL;
91 herr_t status = FAIL;
92
93 UNUSED(clss);
94
95 if (ndims < 0)
96 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_chunk: ndims < 0");
97 if (NULL == dim)
98 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_chunk: dim array is NULL");
99
100 if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, dim)) < 0) {
101 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
102 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_chunk: dim array length < 0");
103 }
104
105 rank = (size_t) arrLen / sizeof(jlong);
106 if (rank < (size_t) ndims)
107 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_chunk: dims array rank < ndims");
108
109 PIN_BYTE_ARRAY(ENVONLY, dim, theArray, &isCopy, "H5Pset_chunk: dim array not pinned");
110
111 if (NULL == (da = lp = (hsize_t *) HDmalloc(rank * sizeof(hsize_t))))
112 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pset_chunk: memory allocation failed");
113
114 jlp = (jlong *)theArray;
115 for (i = 0; i < rank; i++) {
116 *lp = (hsize_t)*jlp;
117 lp++;
118 jlp++;
119 } /* end if */
120
121 if ((status = H5Pset_chunk((hid_t)plist, (int)ndims, da)) < 0)
122 H5_LIBRARY_ERROR(ENVONLY);
123
124 done:
125 if (da)
126 HDfree(da);
127 if (theArray)
128 UNPIN_BYTE_ARRAY(ENVONLY, dim, theArray, JNI_ABORT);
129
130 return (jint)status;
131 } /* end Java_hdf_hdf5lib_H5_H5Pset_1chunk */
132
133 /*
134 * Class: hdf_hdf5lib_H5
135 * Method: H5Pget_chunk
136 * Signature: (JI[J)I
137 */
138 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1chunk(JNIEnv * env,jclass clss,jlong plist,jint max_ndims,jlongArray dims)139 Java_hdf_hdf5lib_H5_H5Pget_1chunk
140 (JNIEnv *env, jclass clss, jlong plist, jint max_ndims, jlongArray dims)
141 {
142 jboolean isCopy;
143 hsize_t *da = NULL;
144 jlong *theArray = NULL;
145 jsize arrLen;
146 int i;
147 herr_t status = FAIL;
148
149 UNUSED(clss);
150
151 if (NULL == dims)
152 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_chunk: dims is NULL");
153
154 if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, dims)) < 0) {
155 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
156 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_chunk: dims array length < 0");
157 }
158 if (arrLen < max_ndims)
159 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_chunk: dims array < max_ndims");
160
161 PIN_LONG_ARRAY(ENVONLY, dims, theArray, &isCopy, "H5Pget_chunk: input dims not pinned");
162
163 if (NULL == (da = (hsize_t *) HDmalloc((size_t)max_ndims * sizeof(hsize_t))))
164 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_chunk: memory allocation failed");
165
166 if ((status = H5Pget_chunk((hid_t)plist, (int)max_ndims, da)) < 0)
167 H5_LIBRARY_ERROR(ENVONLY);
168
169 for (i = 0; i < max_ndims; i++)
170 theArray[i] = (jlong)da[i];
171
172 done:
173 if (da)
174 HDfree(da);
175 if (theArray)
176 UNPIN_LONG_ARRAY(ENVONLY, dims, theArray, (status < 0) ? JNI_ABORT : 0);
177
178 return (jint)status;
179 } /* end Java_hdf_hdf5lib_H5_H5Pget_1chunk */
180
181 /*
182 * Class: hdf_hdf5lib_H5
183 * Method: H5Pset_chunk_opts
184 * Signature: (JI)V
185 */
186 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1chunk_1opts(JNIEnv * env,jclass clss,jlong dcpl_id,jint opts)187 Java_hdf_hdf5lib_H5_H5Pset_1chunk_1opts
188 (JNIEnv *env, jclass clss, jlong dcpl_id, jint opts)
189 {
190 herr_t retVal = FAIL;
191
192 UNUSED(clss);
193
194 if ((retVal = H5Pset_chunk_opts((hid_t)dcpl_id, (unsigned)opts)) < 0)
195 H5_LIBRARY_ERROR(ENVONLY);
196
197 done:
198 return;
199 } /* end Java_hdf_hdf5lib_H5_H5Pset_1chunk_1opts */
200
201 /*
202 * Class: hdf_hdf5lib_H5
203 * Method: H5Pget_chunk_opts
204 * Signature: (J)I
205 */
206 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1chunk_1opts(JNIEnv * env,jclass clss,jlong dcpl_id)207 Java_hdf_hdf5lib_H5_H5Pget_1chunk_1opts
208 (JNIEnv *env, jclass clss, jlong dcpl_id)
209 {
210 unsigned opts = 0;
211
212 UNUSED(clss);
213
214 if (H5Pget_chunk_opts((hid_t)dcpl_id, &opts) < 0)
215 H5_LIBRARY_ERROR(ENVONLY);
216
217 done:
218 return (jint)opts;
219 } /* end Java_hdf_hdf5lib_H5_H5Pget_1chunk_1opts */
220
221 /*
222 * Class: hdf_hdf5lib_H5
223 * Method: H5Pset_dset_no_attrs_hint
224 * Signature: (JZ)V
225 */
226 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1dset_1no_1attrs_1hint(JNIEnv * env,jclass clss,jlong dcpl_id,jboolean minimize)227 Java_hdf_hdf5lib_H5_H5Pset_1dset_1no_1attrs_1hint
228 (JNIEnv *env, jclass clss, jlong dcpl_id, jboolean minimize)
229 {
230 hbool_t minimize_val;
231 herr_t retVal = FAIL;
232
233 UNUSED(clss);
234
235 minimize_val = (JNI_TRUE == minimize) ? TRUE : FALSE;
236
237 if ((retVal = H5Pset_dset_no_attrs_hint((hid_t)dcpl_id, (hbool_t)minimize_val)) < 0)
238 H5_LIBRARY_ERROR(ENVONLY);
239
240 done:
241 return;
242 } /* end Java_hdf_hdf5lib_H5_H5Pset_1dset_1no_1attrs_1hint */
243
244 /*
245 * Class: hdf_hdf5lib_H5
246 * Method: H5Pget_dset_no_attrs_hint
247 * Signature: (J)Z
248 */
249 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1dset_1no_1attrs_1hint(JNIEnv * env,jclass clss,jlong dcpl_id)250 Java_hdf_hdf5lib_H5_H5Pget_1dset_1no_1attrs_1hint
251 (JNIEnv *env, jclass clss, jlong dcpl_id)
252 {
253 hbool_t minimize = FALSE;
254 jboolean bval = JNI_FALSE;
255
256 UNUSED(clss);
257
258 if (H5Pget_dset_no_attrs_hint((hid_t)dcpl_id, (hbool_t *)&minimize) < 0)
259 H5_LIBRARY_ERROR(ENVONLY);
260
261 if (minimize == TRUE)
262 bval = JNI_TRUE;
263
264 done:
265 return bval;
266 } /* end Java_hdf_hdf5lib_H5_H5Pget_1dset_1no_1attrs_1hint */
267
268 /*
269 * Class: hdf_hdf5lib_H5
270 * Method: H5Pset_deflate
271 * Signature: (JI)I
272 */
273 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1deflate(JNIEnv * env,jclass clss,jlong plist,jint level)274 Java_hdf_hdf5lib_H5_H5Pset_1deflate
275 (JNIEnv *env, jclass clss, jlong plist, jint level)
276 {
277 herr_t retVal = FAIL;
278
279 UNUSED(clss);
280
281 if ((retVal = H5Pset_deflate((hid_t)plist, (unsigned)level)) < 0)
282 H5_LIBRARY_ERROR(ENVONLY);
283
284 done:
285 return (jint)retVal;
286 } /* end Java_hdf_hdf5lib_H5_H5Pset_1deflate */
287
288 /*
289 * Class: hdf_hdf5lib_H5
290 * Method: H5Pset_fill_value
291 * Signature: (JJ[B)I
292 */
293 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fill_1value(JNIEnv * env,jclass clss,jlong plist_id,jlong type_id,jbyteArray value)294 Java_hdf_hdf5lib_H5_H5Pset_1fill_1value
295 (JNIEnv *env, jclass clss, jlong plist_id, jlong type_id, jbyteArray value)
296 {
297 jboolean isCopy;
298 jbyte *byteP = NULL;
299 herr_t status = FAIL;
300
301 UNUSED(clss);
302
303 if (NULL == value) {
304 if ((status = H5Pset_fill_value((hid_t)plist_id, (hid_t)type_id, byteP)) < 0)
305 H5_LIBRARY_ERROR(ENVONLY);
306 }
307 else {
308 PIN_BYTE_ARRAY(ENVONLY, value, byteP, &isCopy, "H5Pget_fill_value: value array not pinned");
309
310 if ((status = H5Pset_fill_value((hid_t)plist_id, (hid_t)type_id, byteP)) < 0)
311 H5_LIBRARY_ERROR(ENVONLY);
312 }
313
314 done:
315 if (byteP)
316 UNPIN_BYTE_ARRAY(ENVONLY, value, byteP, JNI_ABORT);
317
318 return (jint)status;
319 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fill_1value */
320
321 /*
322 * Class: hdf_hdf5lib_H5
323 * Method: H5Pget_fill_value
324 * Signature: (JJ[B)I
325 */
326 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1fill_1value(JNIEnv * env,jclass clss,jlong plist_id,jlong type_id,jbyteArray value)327 Java_hdf_hdf5lib_H5_H5Pget_1fill_1value
328 (JNIEnv *env, jclass clss, jlong plist_id, jlong type_id, jbyteArray value)
329 {
330 jboolean isCopy;
331 herr_t status = FAIL;
332 jbyte *byteP = NULL;
333
334 UNUSED(clss);
335
336 if (NULL == value)
337 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_fill_value: value is NULL");
338
339 PIN_BYTE_ARRAY(ENVONLY, value, byteP, &isCopy, "H5Pget_fill_value: value array not pinned");
340
341 if ((status = H5Pget_fill_value((hid_t)plist_id, (hid_t)type_id, byteP)) < 0)
342 H5_LIBRARY_ERROR(ENVONLY);
343
344 done:
345 if (byteP)
346 UNPIN_BYTE_ARRAY(ENVONLY, value, byteP, (status < 0) ? JNI_ABORT : 0);
347
348 return (jint)status;
349 } /* end Java_hdf_hdf5lib_H5_H5Pget_1fill_1value */
350
351 /*
352 * Class: hdf_hdf5lib_H5
353 * Method: H5Pfill_value_defined
354 * Signature: (J[I)I
355 */
356 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pfill_1value_1defined(JNIEnv * env,jclass clss,jlong plist,jintArray status)357 Java_hdf_hdf5lib_H5_H5Pfill_1value_1defined
358 (JNIEnv *env, jclass clss, jlong plist, jintArray status)
359 {
360 H5D_fill_value_t value = H5D_FILL_VALUE_ERROR;
361 jboolean isCopy;
362 jint *theArray = NULL;
363 herr_t retVal = FAIL;
364
365 UNUSED(clss);
366
367 if (NULL == status)
368 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pfill_value_defined: status is NULL");
369
370 PIN_INT_ARRAY(ENVONLY, status, theArray, &isCopy, "H5Pfill_value_defined: status not pinned");
371
372 if ((retVal = H5Pfill_value_defined((hid_t)plist, &value)) < 0)
373 H5_LIBRARY_ERROR(ENVONLY);
374
375 theArray[0] = (jint)value;
376
377 done:
378 if (theArray)
379 UNPIN_INT_ARRAY(ENVONLY, status, theArray, (retVal < 0) ? JNI_ABORT : 0);
380
381 return (jint)retVal;
382 } /* end Java_hdf_hdf5lib_H5_H5Pfill_1value_1defined */
383
384 /*
385 * Class: hdf_hdf5lib_H5
386 * Method: H5Pset_fill_time
387 * Signature: (JI)I
388 */
389 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fill_1time(JNIEnv * env,jclass clss,jlong plist,jint fill_time)390 Java_hdf_hdf5lib_H5_H5Pset_1fill_1time
391 (JNIEnv *env, jclass clss, jlong plist, jint fill_time)
392 {
393 herr_t retVal = FAIL;
394
395 UNUSED(clss);
396
397 if ((retVal = H5Pset_fill_time((hid_t)plist, (H5D_fill_time_t)fill_time)) < 0)
398 H5_LIBRARY_ERROR(ENVONLY);
399
400 done:
401 return (jint)retVal;
402 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fill_1time */
403
404 /*
405 * Class: hdf_hdf5lib_H5
406 * Method: H5Pget_fill_time
407 * Signature: (J[I)I
408 */
409 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1fill_1time(JNIEnv * env,jclass clss,jlong plist,jintArray fill_time)410 Java_hdf_hdf5lib_H5_H5Pget_1fill_1time
411 (JNIEnv *env, jclass clss, jlong plist, jintArray fill_time)
412 {
413 H5D_fill_time_t time = H5D_FILL_TIME_ERROR;
414 jboolean isCopy;
415 jint *theArray = NULL;
416 herr_t retVal = FAIL;
417
418 UNUSED(clss);
419
420 if (NULL == fill_time)
421 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_fill_time: fill_time is NULL");
422
423 PIN_INT_ARRAY(ENVONLY, fill_time, theArray, &isCopy, "H5Pget_fill_time: fill_time not pinned");
424
425 if ((retVal = H5Pget_fill_time((hid_t)plist, &time)) < 0)
426 H5_LIBRARY_ERROR(ENVONLY);
427
428 theArray[0] = (jint)time;
429
430 done:
431 if (theArray)
432 UNPIN_INT_ARRAY(ENVONLY, fill_time, theArray, (retVal < 0) ? JNI_ABORT : 0);
433
434 return (jint)retVal;
435 } /* end Java_hdf_hdf5lib_H5_H5Pget_1fill_1time */
436
437 /*
438 * Class: hdf_hdf5lib_H5
439 * Method: H5Pset_alloc_time
440 * Signature: (JI)I
441 */
442 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1alloc_1time(JNIEnv * env,jclass clss,jlong plist,jint alloc_time)443 Java_hdf_hdf5lib_H5_H5Pset_1alloc_1time
444 (JNIEnv *env, jclass clss, jlong plist, jint alloc_time)
445 {
446 herr_t retVal = FAIL;
447
448 UNUSED(clss);
449
450 if ((retVal = H5Pset_alloc_time((hid_t)plist, (H5D_alloc_time_t)alloc_time)) < 0)
451 H5_LIBRARY_ERROR(ENVONLY);
452
453 done:
454 return (jint)retVal;
455 } /* end Java_hdf_hdf5lib_H5_H5Pset_1alloc_1time */
456
457 /*
458 * Class: hdf_hdf5lib_H5
459 * Method: H5Pget_alloc_time
460 * Signature: (J[I)I
461 */
462 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1alloc_1time(JNIEnv * env,jclass clss,jlong plist,jintArray alloc_time)463 Java_hdf_hdf5lib_H5_H5Pget_1alloc_1time
464 (JNIEnv *env, jclass clss, jlong plist, jintArray alloc_time)
465 {
466 H5D_alloc_time_t time = H5D_ALLOC_TIME_ERROR;
467 jboolean isCopy;
468 jint *theArray = NULL;
469 herr_t retVal = FAIL;
470
471 UNUSED(clss);
472
473 if (NULL == alloc_time)
474 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_alloc_time: alloc_time is NULL");
475
476 PIN_INT_ARRAY(ENVONLY, alloc_time, theArray, &isCopy, "H5Pget_alloc_time: alloc_time not pinned");
477
478 if ((retVal = H5Pget_alloc_time((hid_t)plist, &time)) < 0)
479 H5_LIBRARY_ERROR(ENVONLY);
480
481 theArray[0] = time;
482
483 done:
484 if (theArray)
485 UNPIN_INT_ARRAY(ENVONLY, alloc_time, theArray, (retVal < 0) ? JNI_ABORT : 0);
486
487 return (jint)retVal;
488 } /* end Java_hdf_hdf5lib_H5_H5Pget_1alloc_1time */
489
490 /*
491 * Class: hdf_hdf5lib_H5
492 * Method: H5Pset_filter
493 * Signature: (JIIJ[I)I
494 */
495 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1filter(JNIEnv * env,jclass clss,jlong plist,jint filter,jint flags,jlong cd_nelmts,jintArray cd_values)496 Java_hdf_hdf5lib_H5_H5Pset_1filter
497 (JNIEnv *env, jclass clss, jlong plist, jint filter, jint flags,
498 jlong cd_nelmts, jintArray cd_values)
499 {
500 jboolean isCopy;
501 jint *theArray = NULL;
502 herr_t status = FAIL;
503
504 UNUSED(clss);
505
506 if (NULL == cd_values) {
507 if ((status = H5Pset_filter((hid_t)plist, (H5Z_filter_t)filter,
508 (unsigned int)flags, (size_t)cd_nelmts, NULL)) < 0)
509 H5_LIBRARY_ERROR(ENVONLY);
510 }
511 else {
512 PIN_INT_ARRAY(ENVONLY, cd_values, theArray, &isCopy, "H5Pset_filter: input array not pinned");
513
514 if ((status = H5Pset_filter((hid_t)plist, (H5Z_filter_t)filter,
515 (unsigned int)flags, (size_t)cd_nelmts, (const unsigned int *)theArray)) < 0)
516 H5_LIBRARY_ERROR(ENVONLY);
517 }
518
519 done:
520 if (theArray)
521 UNPIN_INT_ARRAY(ENVONLY, cd_values, theArray, JNI_ABORT);
522
523 return (jint)status;
524 } /* end Java_hdf_hdf5lib_H5_H5Pset_1filter */
525
526 /*
527 * Class: hdf_hdf5lib_H5
528 * Method: H5Pall_filters_avail
529 * Signature: (J)Z
530 */
531 JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5Pall_1filters_1avail(JNIEnv * env,jclass clss,jlong dcpl_id)532 Java_hdf_hdf5lib_H5_H5Pall_1filters_1avail
533 (JNIEnv *env, jclass clss, jlong dcpl_id)
534 {
535 htri_t bval = JNI_FALSE;
536
537 UNUSED(clss);
538
539 if ((bval = H5Pall_filters_avail((hid_t)dcpl_id)) < 0)
540 H5_LIBRARY_ERROR(ENVONLY);
541
542 bval = (bval > 0) ? JNI_TRUE : JNI_FALSE;
543
544 done:
545 return (jboolean)bval;
546 } /* end Java_hdf_hdf5lib_H5_H5Pall_1filters_1avail */
547
548 /*
549 * Class: hdf_hdf5lib_H5
550 * Method: H5Pget_nfilters
551 * Signature: (J)I
552 */
553 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1nfilters(JNIEnv * env,jclass clss,jlong plist)554 Java_hdf_hdf5lib_H5_H5Pget_1nfilters
555 (JNIEnv *env, jclass clss, jlong plist)
556 {
557 int retVal = -1;
558
559 UNUSED(clss);
560
561 if ((retVal = H5Pget_nfilters((hid_t)plist)) < 0)
562 H5_LIBRARY_ERROR(ENVONLY);
563
564 done:
565 return (jint)retVal;
566 } /* end Java_hdf_hdf5lib_H5_H5Pget_1nfilters */
567
568 /*
569 * Class: hdf_hdf5lib_H5
570 * Method: H5Pget_filter
571 * Signature: (JI[I[J[IJ[Ljava/lang/String;)I
572 */
573 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1filter(JNIEnv * env,jclass clss,jlong plist,jint filter_number,jintArray flags,jlongArray cd_nelmts,jintArray cd_values,jlong namelen,jobjectArray name)574 Java_hdf_hdf5lib_H5_H5Pget_1filter
575 (JNIEnv *env, jclass clss, jlong plist, jint filter_number, jintArray flags,
576 jlongArray cd_nelmts, jintArray cd_values, jlong namelen, jobjectArray name)
577 {
578 jboolean isCopy;
579 jstring str;
580 jint *flagsArray = NULL;
581 jlong *cd_nelmtsArray = NULL;
582 jint *cd_valuesArray = NULL;
583 char *filter = NULL;
584 herr_t status = FAIL;
585
586 UNUSED(clss);
587
588 if (namelen <= 0)
589 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter: namelen <= 0");
590 if (NULL == flags)
591 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter: flags is NULL");
592 if (NULL == cd_nelmts)
593 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter: cd_nelmts is NULL");
594 if (NULL == cd_values)
595 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter: cd_values is NULL");
596
597 if (NULL == (filter = (char *) HDmalloc(sizeof(char) * (size_t)namelen)))
598 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_filter: memory allocation failed");
599
600 PIN_INT_ARRAY(ENVONLY, flags, flagsArray, &isCopy, "H5Pget_filter: flags array not pinned");
601 PIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, &isCopy, "H5Pget_filter: nelmts array not pinned");
602 PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, &isCopy, "H5Pget_filter: elmts array not pinned");
603
604
605 /* direct cast (size_t *)variable fails on 32-bit environment */
606 {
607 unsigned int filter_config;
608 long long cd_nelmts_temp = *cd_nelmtsArray;
609 size_t cd_nelmts_t = (size_t) cd_nelmts_temp;
610
611 if ((status = H5Pget_filter2((hid_t)plist, (unsigned)filter_number,
612 (unsigned int *)flagsArray, &cd_nelmts_t, (unsigned int *)cd_valuesArray,
613 (size_t)namelen, filter, &filter_config)) < 0)
614 H5_LIBRARY_ERROR(ENVONLY);
615
616 filter[namelen - 1] = '\0';
617
618 *cd_nelmtsArray = (jlong)cd_nelmts_t;
619 }
620
621 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, filter))) {
622 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
623 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_filter: out of memory - unable to construct string from UTF characters");
624 }
625
626 ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
627 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
628
629 done:
630 if (cd_valuesArray)
631 UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, (status < 0) ? JNI_ABORT : 0);
632 if (cd_nelmtsArray)
633 UNPIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, (status < 0) ? JNI_ABORT : 0);
634 if (flagsArray)
635 UNPIN_INT_ARRAY(ENVONLY, flags, flagsArray, (status < 0) ? JNI_ABORT : 0)
636 if (filter)
637 HDfree(filter);
638
639 return (jint)status;
640 } /* end Java_hdf_hdf5lib_H5_H5Pget_1filter */
641
642 /*
643 * Class: hdf_hdf5lib_H5
644 * Method: H5Pget_filter2
645 * Signature: (JI[I[J[IJ[Ljava/lang/String;[I)I
646 */
647 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1filter2(JNIEnv * env,jclass clss,jlong plist,jint filter_number,jintArray flags,jlongArray cd_nelmts,jintArray cd_values,jlong namelen,jobjectArray name,jintArray filter_config)648 Java_hdf_hdf5lib_H5_H5Pget_1filter2
649 (JNIEnv *env, jclass clss, jlong plist, jint filter_number,
650 jintArray flags, jlongArray cd_nelmts, jintArray cd_values, jlong namelen,
651 jobjectArray name, jintArray filter_config)
652 {
653 jboolean isCopy;
654 jstring str;
655 jint *flagsArray = NULL;
656 jlong *cd_nelmtsArray = NULL;
657 jint *cd_valuesArray = NULL;
658 jint *filter_configArray = NULL;
659 char *filter = NULL;
660 herr_t status = FAIL;
661
662 UNUSED(clss);
663
664 if (namelen <= 0)
665 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: namelen <= 0");
666 if (NULL == flags)
667 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: flags is NULL");
668 if (NULL == cd_nelmts)
669 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: cd_nelmts is NULL");
670 if (NULL == filter_config)
671 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: filter_config is NULL");
672
673 if (NULL == (filter = (char *) HDmalloc(sizeof(char) * (size_t)namelen)))
674 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_filter2: memory allocation failed");
675
676 PIN_INT_ARRAY(ENVONLY, flags, flagsArray, &isCopy, "H5Pget_filter2: flags array not pinned");
677 PIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, &isCopy, "H5Pget_filter2: nelmts array not pinned");
678 PIN_INT_ARRAY(ENVONLY, filter_config, filter_configArray, &isCopy, "H5Pget_filter2: filter_config array not pinned");
679
680 if (NULL == cd_values && *cd_nelmtsArray == 0) {
681 /* direct cast (size_t *)variable fails on 32-bit environment */
682 long long cd_nelmts_temp = 0;
683 size_t cd_nelmts_t = (size_t) cd_nelmts_temp;
684
685 if ((status = H5Pget_filter2((hid_t)plist, (unsigned)filter_number,
686 (unsigned int *)flagsArray, &cd_nelmts_t, NULL,
687 (size_t)namelen, filter, (unsigned int *)filter_configArray)) < 0)
688 H5_LIBRARY_ERROR(ENVONLY);
689
690 filter[namelen - 1] = '\0';
691
692 *cd_nelmtsArray = (jlong)cd_nelmts_t;
693 }
694 else {
695 if (NULL == cd_values)
696 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: cd_values is NULL");
697
698 PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, &isCopy, "H5Pget_filter2: elmts array not pinned");
699
700 {
701 /* direct cast (size_t *)variable fails on 32-bit environment */
702 long long cd_nelmts_temp = *cd_nelmtsArray;
703 size_t cd_nelmts_t = (size_t) cd_nelmts_temp;
704
705 if ((status = H5Pget_filter2((hid_t)plist, (unsigned)filter_number,
706 (unsigned int *)flagsArray, &cd_nelmts_t, (unsigned int *)cd_valuesArray,
707 (size_t)namelen, filter, (unsigned int *)filter_configArray)) < 0)
708 H5_LIBRARY_ERROR(ENVONLY);
709
710 filter[namelen - 1] = '\0';
711
712 *cd_nelmtsArray = (jlong)cd_nelmts_t;
713 } /* end direct cast special */
714 }
715
716 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, filter))) {
717 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
718 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_filter2: out of memory - unable to construct string from UTF characters");
719 }
720
721 ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
722 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
723
724 done:
725 if (cd_valuesArray)
726 UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, (status < 0) ? JNI_ABORT : 0);
727 if (filter_configArray)
728 UNPIN_INT_ARRAY(ENVONLY, filter_config, filter_configArray, (status < 0) ? JNI_ABORT : 0);
729 if (cd_nelmtsArray)
730 UNPIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, (status < 0) ? JNI_ABORT : 0);
731 if (flagsArray)
732 UNPIN_INT_ARRAY(ENVONLY, flags, flagsArray, (status < 0) ? JNI_ABORT : 0);
733 if (filter)
734 HDfree(filter);
735
736 return (jint)status;
737 } /* end Java_hdf_hdf5lib_H5_H5Pget_1filter2 */
738
739 /*
740 * Class: hdf_hdf5lib_H5
741 * Method: H5Pget_filter_by_id
742 * Signature: (JI[I[J[IJ[Ljava/lang/String;)I
743 */
744 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1filter_1by_1id(JNIEnv * env,jclass clss,jlong plist,jint filter,jintArray flags,jlongArray cd_nelmts,jintArray cd_values,jlong namelen,jobjectArray name)745 Java_hdf_hdf5lib_H5_H5Pget_1filter_1by_1id
746 (JNIEnv *env, jclass clss, jlong plist, jint filter,
747 jintArray flags, jlongArray cd_nelmts, jintArray cd_values, jlong namelen, jobjectArray name)
748 {
749 jboolean isCopy;
750 jstring str;
751 jlong *cd_nelmtsArray = NULL;
752 jint *cd_valuesArray = NULL;
753 jint *flagsArray = NULL;
754 char *aName = NULL;
755 long bs;
756 int rank;
757 herr_t status = FAIL;
758
759 UNUSED(clss);
760
761 bs = (long)namelen;
762
763 if (bs <= 0)
764 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: namelen <= 0");
765 if (NULL == flags)
766 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: flags is NULL");
767 if (NULL == cd_nelmts)
768 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: cd_nelmts is NULL");
769 if (NULL == cd_values)
770 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: cd_values is NULL");
771 if (NULL == name)
772 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: name is NULL");
773
774 if (NULL == (aName = (char *) HDmalloc(sizeof(char) * (size_t)bs)))
775 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_filter_by_id: memory allocation failed");
776
777 PIN_INT_ARRAY(ENVONLY, flags, flagsArray, &isCopy, "H5Pget_filter_by_id: flags not pinned");
778 PIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, &isCopy, "H5Pget_filter_by_id: cd_nelms not pinned");
779 PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, &isCopy, "H5Pget_filter_by_id: cd_values array not pinned");
780
781 if ((rank = ENVPTR->GetArrayLength(ENVONLY, cd_values)) < 0) {
782 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
783 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: cd_values array length < 0");
784 }
785
786 {
787 /* direct cast (size_t *)variable fails on 32-bit environment */
788 unsigned int filter_config;
789 long long cd_nelmts_temp = *cd_nelmtsArray;
790 size_t cd_nelmts_t = (size_t) cd_nelmts_temp;
791
792 if ((status = H5Pget_filter_by_id2((hid_t)plist, (H5Z_filter_t)filter,
793 (unsigned int *)flagsArray, &cd_nelmts_t, (unsigned int *)cd_valuesArray,
794 (size_t)namelen, (char *)aName, &filter_config)) < 0)
795 H5_LIBRARY_ERROR(ENVONLY);
796
797 aName[bs - 1] = '\0';
798
799 *cd_nelmtsArray = (jlong)cd_nelmts_t;
800 } /* end direct cast special */
801
802 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, aName))) {
803 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
804 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_filter_by_id: out of memory - unable to construct string from UTF characters");
805 }
806
807 ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
808 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
809
810 done:
811 if (cd_valuesArray)
812 UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, (status < 0) ? JNI_ABORT : 0);
813 if (cd_nelmtsArray)
814 UNPIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, (status < 0) ? JNI_ABORT : 0);
815 if (flagsArray)
816 UNPIN_INT_ARRAY(ENVONLY, flags, flagsArray, (status < 0) ? JNI_ABORT : 0);
817 if (aName)
818 HDfree(aName);
819
820 return (jint)status;
821 } /* end Java_hdf_hdf5lib_H5_H5Pget_1filter_1by_1id */
822
823 /*
824 * Class: hdf_hdf5lib_H5
825 * Method: H5Pget_filter_by_id2
826 * Signature: (JI[I[J[IJ[Ljava/lang/String;[I)I
827 */
828 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1filter_1by_1id2(JNIEnv * env,jclass clss,jlong plist,jint filter,jintArray flags,jlongArray cd_nelmts,jintArray cd_values,jlong namelen,jobjectArray name,jintArray filter_config)829 Java_hdf_hdf5lib_H5_H5Pget_1filter_1by_1id2
830 (JNIEnv *env, jclass clss, jlong plist, jint filter,
831 jintArray flags, jlongArray cd_nelmts, jintArray cd_values, jlong namelen, jobjectArray name, jintArray filter_config)
832 {
833 jboolean isCopy;
834 jstring str;
835 jlong *cd_nelmtsArray = NULL;
836 jint *cd_valuesArray = NULL;
837 jint *flagsArray = NULL;
838 jint *filter_configArray = NULL;
839 long bs;
840 char *aName = NULL;
841 herr_t status = FAIL;
842
843 UNUSED(clss);
844
845 bs = (long)namelen;
846
847 if (bs <= 0)
848 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: namelen <= 0");
849 if (NULL == flags)
850 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: flags is NULL");
851 if (NULL == cd_nelmts)
852 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: cd_nelmts is NULL");
853 if (NULL == cd_values)
854 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: cd_values is NULL");
855 if (NULL == name)
856 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: name is NULL");
857 if (NULL == filter_config)
858 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: filter_config is NULL");
859
860 if (NULL == (aName = (char *) HDmalloc(sizeof(char) * (size_t)bs)))
861 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_filter_by_id2: memory allocation failed");
862
863 PIN_INT_ARRAY(ENVONLY, flags, flagsArray, &isCopy, "H5Pget_filter_by_id2: flags not pinned");
864 PIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, &isCopy, "H5Pget_filter_by_id2: cd_nelms not pinned");
865 PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, &isCopy, "H5Pget_filter_by_id2: cd_values array not pinned");
866 PIN_INT_ARRAY(ENVONLY, filter_config, filter_configArray, &isCopy, "H5Pget_filter_by_id2: filter_config not pinned");
867
868 {
869 /* direct cast (size_t *)variable fails on 32-bit environment */
870 long long cd_nelmts_temp = *cd_nelmtsArray;
871 size_t cd_nelmts_t = (size_t) cd_nelmts_temp;
872
873 if ((status = H5Pget_filter_by_id2((hid_t)plist, (H5Z_filter_t)filter,
874 (unsigned int *)flagsArray, &cd_nelmts_t, (unsigned int *)cd_valuesArray,
875 (size_t)namelen, (char *)aName, (unsigned int *)filter_configArray)) < 0)
876 H5_LIBRARY_ERROR(ENVONLY);
877
878 aName[bs - 1] = '\0';
879
880 *cd_nelmtsArray = (jlong)cd_nelmts_t;
881 } /* end direct cast special handling */
882
883 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, aName))) {
884 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
885 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_filter_by_id2: out of memory - unable to construct string from UTF characters");
886 }
887
888 ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
889 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
890
891 done:
892 if (filter_configArray)
893 UNPIN_INT_ARRAY(ENVONLY, filter_config, filter_configArray, (status < 0) ? JNI_ABORT : 0);
894 if (cd_valuesArray)
895 UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, (status < 0) ? JNI_ABORT : 0);
896 if (cd_nelmtsArray)
897 UNPIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, (status < 0) ? JNI_ABORT : 0);
898 if (flagsArray)
899 UNPIN_INT_ARRAY(ENVONLY, flags, flagsArray, (status < 0) ? JNI_ABORT : 0);
900 if (aName)
901 HDfree(aName);
902
903 return (jint)status;
904 } /* end Java_hdf_hdf5lib_H5_H5Pget_1filter_1by_1id2 */
905
906 /*
907 * Class: hdf_hdf5lib_H5
908 * Method: H5Pmodify_filter
909 * Signature: (JIIJ[I)I
910 */
911 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pmodify_1filter(JNIEnv * env,jclass clss,jlong plist,jint filter,jint flags,jlong cd_nelmts,jintArray cd_values)912 Java_hdf_hdf5lib_H5_H5Pmodify_1filter
913 (JNIEnv *env, jclass clss, jlong plist, jint filter,
914 jint flags, jlong cd_nelmts, jintArray cd_values)
915 {
916 jboolean isCopy;
917 jint *cd_valuesP = NULL;
918 herr_t status = FAIL;
919
920 UNUSED(clss);
921
922 if (NULL == cd_values)
923 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pmodify_filter: cd_values is NULL");
924
925 PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesP, &isCopy, "H5Pmodify_filter: cd_values not pinned");
926
927 if ((status = H5Pmodify_filter((hid_t)plist, (H5Z_filter_t)filter, (const unsigned int)flags,
928 (size_t)cd_nelmts, (unsigned int *)cd_valuesP)) < 0)
929 H5_LIBRARY_ERROR(ENVONLY);
930
931 done:
932 if (cd_valuesP)
933 UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesP, JNI_ABORT);
934
935 return (jint)status;
936 } /* end Java_hdf_hdf5lib_H5_H5Pmodify_1filter */
937
938 /*
939 * Class: hdf_hdf5lib_H5
940 * Method: H5Premove_filter
941 * Signature: (JI)I
942 */
943 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5P1remove_1filter(JNIEnv * env,jclass clss,jlong obj_id,jint filter)944 Java_hdf_hdf5lib_H5_H5P1remove_1filter
945 (JNIEnv *env, jclass clss, jlong obj_id, jint filter)
946 {
947 herr_t status = FAIL;
948
949 UNUSED(clss);
950
951 if ((status = H5Premove_filter((hid_t)obj_id, (H5Z_filter_t)filter)) < 0)
952 H5_LIBRARY_ERROR(ENVONLY);
953
954 done:
955 return (jint)status;
956 } /* end Java_hdf_hdf5lib_H5_H5P1remove_1filter */
957
958 /*
959 * Class: hdf_hdf5lib_H5
960 * Method: H5Pset_fletcher32
961 * Signature: (J)I
962 */
963 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1fletcher32(JNIEnv * env,jclass clss,jlong plist)964 Java_hdf_hdf5lib_H5_H5Pset_1fletcher32
965 (JNIEnv *env, jclass clss, jlong plist)
966 {
967 herr_t retVal = FAIL;
968
969 UNUSED(clss);
970
971 if ((retVal = H5Pset_fletcher32((hid_t)plist)) < 0)
972 H5_LIBRARY_ERROR(ENVONLY);
973
974 done:
975 return (jint)retVal;
976 } /* end Java_hdf_hdf5lib_H5_H5Pset_1fletcher32 */
977
978 /*
979 * Class: hdf_hdf5lib_H5
980 * Method: H5Pset_nbit
981 * Signature: (J)I
982 */
983 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1nbit(JNIEnv * env,jclass clss,jlong plist_id)984 Java_hdf_hdf5lib_H5_H5Pset_1nbit
985 (JNIEnv *env, jclass clss, jlong plist_id)
986 {
987 herr_t retVal = FAIL;
988
989 UNUSED(clss);
990
991 if ((retVal = H5Pset_nbit((hid_t)plist_id)) < 0)
992 H5_LIBRARY_ERROR(ENVONLY);
993
994 done:
995 return (jint)retVal;
996 } /* end Java_hdf_hdf5lib_H5_H5Pset_1nbit */
997
998 /*
999 * Class: hdf_hdf5lib_H5
1000 * Method: H5Pset_scaleoffset
1001 * Signature: (JII)I
1002 */
1003 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1scaleoffset(JNIEnv * env,jclass clss,jlong plist_id,jint scale_type,jint scale_factor)1004 Java_hdf_hdf5lib_H5_H5Pset_1scaleoffset
1005 (JNIEnv *env, jclass clss, jlong plist_id, jint scale_type, jint scale_factor)
1006 {
1007 herr_t retVal = FAIL;
1008
1009 UNUSED(clss);
1010
1011 if (scale_factor < 0)
1012 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_scaleoffset: scale factor must be >= 0");
1013 if (scale_type != H5Z_SO_FLOAT_DSCALE && scale_type != H5Z_SO_FLOAT_ESCALE && scale_type != H5Z_SO_INT)
1014 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_scaleoffset: invalid scale type");
1015
1016 if ((retVal = H5Pset_scaleoffset((hid_t)plist_id, (H5Z_SO_scale_type_t)scale_type, scale_factor)) < 0)
1017 H5_LIBRARY_ERROR(ENVONLY);
1018
1019 done:
1020 return (jint)retVal;
1021 } /* end Java_hdf_hdf5lib_H5_H5Pset_1scaleoffset */
1022
1023 /*
1024 * Class: hdf_hdf5lib_H5
1025 * Method: H5Pset_shuffle
1026 * Signature: (J)I
1027 */
1028 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1shuffle(JNIEnv * env,jclass clss,jlong plist)1029 Java_hdf_hdf5lib_H5_H5Pset_1shuffle
1030 (JNIEnv *env, jclass clss, jlong plist)
1031 {
1032 herr_t retVal = FAIL;
1033
1034 UNUSED(clss);
1035
1036 if ((retVal = H5Pset_shuffle((hid_t)plist)) < 0)
1037 H5_LIBRARY_ERROR(ENVONLY);
1038
1039 done:
1040 return (jint)retVal;
1041 } /* end Java_hdf_hdf5lib_H5_H5Pset_1shuffle */
1042
1043 /*
1044 * Class: hdf_hdf5lib_H5
1045 * Method: H5Pset_szip
1046 * Signature: (JII)I
1047 */
1048 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1szip(JNIEnv * env,jclass clss,jlong plist,jint options_mask,jint pixels_per_block)1049 Java_hdf_hdf5lib_H5_H5Pset_1szip
1050 (JNIEnv *env, jclass clss, jlong plist, jint options_mask, jint pixels_per_block)
1051 {
1052 herr_t retVal = FAIL;
1053
1054 UNUSED(clss);
1055
1056 if ((retVal = H5Pset_szip((hid_t)plist, (unsigned int)options_mask, (unsigned int)pixels_per_block)) < 0)
1057 H5_LIBRARY_ERROR(ENVONLY);
1058
1059 done:
1060 return (jint)retVal;
1061 } /* end Java_hdf_hdf5lib_H5_H5Pset_1szip */
1062
1063 /*
1064 * Class: hdf_hdf5lib_H5
1065 * Method: H5Pset_external
1066 * Signature: (JLjava/lang/String;JJ)I
1067 */
1068 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1external(JNIEnv * env,jclass clss,jlong plist,jstring name,jlong offset,jlong size)1069 Java_hdf_hdf5lib_H5_H5Pset_1external
1070 (JNIEnv *env, jclass clss, jlong plist, jstring name, jlong offset, jlong size)
1071 {
1072 const char *fileName = NULL;
1073 herr_t status = FAIL;
1074
1075 UNUSED(clss);
1076
1077 if (NULL == name)
1078 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_external: file name is NULL");
1079
1080 PIN_JAVA_STRING(ENVONLY, name, fileName, NULL, "H5Pset_external: file name not pinned");
1081
1082 if ((status = H5Pset_external((hid_t)plist, fileName, (off_t)offset, (hsize_t)size)) < 0)
1083 H5_LIBRARY_ERROR(ENVONLY);
1084
1085 done:
1086 if (fileName)
1087 UNPIN_JAVA_STRING(ENVONLY, name, fileName);
1088
1089 return (jint)status;
1090 } /* end Java_hdf_hdf5lib_H5_H5Pset_1external */
1091
1092 /*
1093 * Class: hdf_hdf5lib_H5
1094 * Method: H5Pget_external
1095 * Signature: (JIJ[Ljava/lang/String;[J)I
1096 */
1097 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1external(JNIEnv * env,jclass clss,jlong plist,jint idx,jlong name_size,jobjectArray name,jlongArray size)1098 Java_hdf_hdf5lib_H5_H5Pget_1external
1099 (JNIEnv *env, jclass clss, jlong plist, jint idx, jlong name_size,
1100 jobjectArray name, jlongArray size)
1101 {
1102 jboolean isCopy;
1103 jstring str;
1104 hsize_t s;
1105 off_t o;
1106 jsize arrLen;
1107 jlong *theArray = NULL;
1108 char *file = NULL;
1109 herr_t status = FAIL;
1110
1111 UNUSED(clss);
1112
1113 if (name_size < 0)
1114 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_external: name_size < 0");
1115
1116 if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, size)) < 0) {
1117 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1118 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_external: size array length < 0");
1119 }
1120 if ((size != NULL) && (arrLen < 2))
1121 H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_external: size input array < 2");
1122
1123 if (name_size > 0)
1124 if (NULL == (file = (char *) HDmalloc(sizeof(char) * (size_t)name_size)))
1125 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_external: memory allocation failed");
1126
1127 if ((status = H5Pget_external((hid_t) plist, (unsigned)idx, (size_t)name_size,
1128 file, (off_t *)&o, (hsize_t *)&s)) < 0)
1129 H5_LIBRARY_ERROR(ENVONLY);
1130
1131 if (NULL != size) {
1132 PIN_LONG_ARRAY(ENVONLY, size, theArray, &isCopy, "H5Pget_external: size array not pinned");
1133
1134 theArray[0] = o;
1135 theArray[1] = (jlong)s;
1136 }
1137
1138 if (NULL != file) {
1139 file[name_size - 1] = '\0';
1140
1141 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, file))) {
1142 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1143 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_external: out of memory - unable to construct string from UTF characters");
1144 }
1145
1146 ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
1147 CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
1148 }
1149
1150 done:
1151 if (theArray)
1152 UNPIN_LONG_ARRAY(ENVONLY, size, theArray, (status < 0) ? JNI_ABORT : 0);
1153 if (file)
1154 HDfree(file);
1155
1156 return (jint)status;
1157 } /* end Java_hdf_hdf5lib_H5_H5Pget_1external */
1158
1159 /*
1160 * Class: hdf_hdf5lib_H5
1161 * Method: H5Pget_external_count
1162 * Signature: (J)I
1163 */
1164 JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1external_1count(JNIEnv * env,jclass clss,jlong plist)1165 Java_hdf_hdf5lib_H5_H5Pget_1external_1count
1166 (JNIEnv *env, jclass clss, jlong plist)
1167 {
1168 int retVal = -1;
1169
1170 UNUSED(clss);
1171
1172 if ((retVal = H5Pget_external_count((hid_t)plist)) < 0)
1173 H5_LIBRARY_ERROR(ENVONLY);
1174
1175 done:
1176 return (jint)retVal;
1177 } /* end Java_hdf_hdf5lib_H5_H5Pget_1external_1count */
1178
1179 /*
1180 * Class: hdf_hdf5lib_H5
1181 * Method: H5Pset_virtual
1182 * Signature: (JJLjava/lang/String;Ljava/lang/String;J)V
1183 */
1184 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1virtual(JNIEnv * env,jclass clss,jlong dcpl_id,jlong vspace_id,jstring src_file_name,jstring src_dset_name,jlong src_space_id)1185 Java_hdf_hdf5lib_H5_H5Pset_1virtual
1186 (JNIEnv *env, jclass clss, jlong dcpl_id, jlong vspace_id,
1187 jstring src_file_name, jstring src_dset_name, jlong src_space_id)
1188 {
1189 const char *fstr = NULL;
1190 const char *dstr = NULL;
1191 herr_t retVal = FAIL;
1192
1193 UNUSED(clss);
1194
1195 if (NULL == src_file_name)
1196 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_virtual: src_file_name is NULL");
1197 if (NULL == src_dset_name)
1198 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_virtual: src_dset_name is NULL");
1199
1200 PIN_JAVA_STRING(ENVONLY, src_file_name, fstr, NULL, "H5Pset_virtual: src_file_name not pinned");
1201 PIN_JAVA_STRING(ENVONLY, src_dset_name, dstr, NULL, "H5Pset_virtual: src_dset_name not pinned");
1202
1203 if ((retVal = H5Pset_virtual((hid_t)dcpl_id, (hid_t)vspace_id, fstr, dstr, (hid_t)src_space_id)) < 0)
1204 H5_LIBRARY_ERROR(ENVONLY);
1205
1206 done:
1207 if (dstr)
1208 UNPIN_JAVA_STRING(ENVONLY, src_dset_name, dstr);
1209 if (fstr)
1210 UNPIN_JAVA_STRING(ENVONLY, src_file_name, fstr);
1211 } /* end Java_hdf_hdf5lib_H5_H5Pset_1virtual */
1212
1213 /*
1214 * Class: hdf_hdf5lib_H5
1215 * Method: H5Pget_virtual_count
1216 * Signature: (J)J
1217 */
1218 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1count(JNIEnv * env,jclass clss,jlong dcpl_id)1219 Java_hdf_hdf5lib_H5_H5Pget_1virtual_1count
1220 (JNIEnv *env, jclass clss, jlong dcpl_id)
1221 {
1222 size_t s = 0;
1223
1224 UNUSED(clss);
1225
1226 if (H5Pget_virtual_count((hid_t)dcpl_id, &s) < 0)
1227 H5_LIBRARY_ERROR(ENVONLY);
1228
1229 done:
1230 return (jlong)s;
1231 } /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1count */
1232
1233 /*
1234 * Class: hdf_hdf5lib_H5
1235 * Method: H5Pget_virtual_dsetname
1236 * Signature: (JJ)Ljava/lang/String;
1237 */
1238 JNIEXPORT jstring JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1dsetname(JNIEnv * env,jclass clss,jlong dcpl_id,jlong index)1239 Java_hdf_hdf5lib_H5_H5Pget_1virtual_1dsetname
1240 (JNIEnv *env, jclass clss, jlong dcpl_id, jlong index)
1241 {
1242 ssize_t buf_size;
1243 char *dname = NULL;
1244 jstring str = NULL;
1245
1246 UNUSED(clss);
1247
1248 /* get the length of the filename */
1249 if ((buf_size = H5Pget_virtual_dsetname((hid_t)dcpl_id, (size_t)index, NULL, 0)) < 0)
1250 H5_LIBRARY_ERROR(ENVONLY);
1251
1252 if (NULL == (dname = (char *) HDmalloc(sizeof(char) * (size_t)buf_size + 1)))
1253 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_virtual_dsetname: memory allocation failed");
1254
1255 if (H5Pget_virtual_dsetname((hid_t)dcpl_id, (size_t)index, dname, (size_t)buf_size + 1) < 0)
1256 H5_LIBRARY_ERROR(ENVONLY);
1257 dname[buf_size] = '\0';
1258
1259 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, dname))) {
1260 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1261 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_virtual_dsetname: out of memory - unable to construct string from UTF characters");
1262 }
1263
1264 done:
1265 if (dname)
1266 HDfree(dname);
1267
1268 return (jstring)str;
1269 } /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1dsetname */
1270
1271 /*
1272 * Class: hdf_hdf5lib_H5
1273 * Method: H5Pget_virtual_filename
1274 * Signature: (JJ)Ljava/lang/String;
1275 */
1276 JNIEXPORT jstring JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1filename(JNIEnv * env,jclass clss,jlong dcpl_id,jlong index)1277 Java_hdf_hdf5lib_H5_H5Pget_1virtual_1filename
1278 (JNIEnv *env, jclass clss, jlong dcpl_id, jlong index)
1279 {
1280 ssize_t buf_size;
1281 char *fname = NULL;
1282 jstring str = NULL;
1283
1284 UNUSED(clss);
1285
1286 /* get the length of the filename */
1287 if ((buf_size = H5Pget_virtual_filename((hid_t)dcpl_id, (size_t)index, NULL, 0)) < 0)
1288 H5_LIBRARY_ERROR(ENVONLY);
1289
1290 if (NULL == (fname = (char *) HDmalloc(sizeof(char) * (size_t)buf_size + 1)))
1291 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_virtual_filename: memory allocation failed");
1292
1293 if (H5Pget_virtual_filename((hid_t)dcpl_id, (size_t)index, fname, (size_t)buf_size + 1) < 0)
1294 H5_LIBRARY_ERROR(ENVONLY);
1295 fname[buf_size] = '\0';
1296
1297 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, fname))) {
1298 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1299 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_virtual_filename: out of memory - unable to construct string from UTF characters");
1300 }
1301
1302 done:
1303 if (fname)
1304 HDfree(fname);
1305
1306 return (jstring)str;
1307 } /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1filename */
1308
1309 /*
1310 * Class: hdf_hdf5lib_H5
1311 * Method: H5Pget_virtual_srcspace
1312 * Signature: (JJ)J
1313 */
1314 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1srcspace(JNIEnv * env,jclass clss,jlong dcpl_id,jlong index)1315 Java_hdf_hdf5lib_H5_H5Pget_1virtual_1srcspace
1316 (JNIEnv *env, jclass clss, jlong dcpl_id, jlong index)
1317 {
1318 hid_t space_id = H5I_INVALID_HID;
1319
1320 UNUSED(clss);
1321
1322 if ((space_id = H5Pget_virtual_srcspace((hid_t)dcpl_id, (size_t)index)) < 0)
1323 H5_LIBRARY_ERROR(ENVONLY);
1324
1325 done:
1326 return (jlong)space_id;
1327 } /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1srcspace */
1328
1329 /*
1330 * Class: hdf_hdf5lib_H5
1331 * Method: H5Pget_virtual_vspace
1332 * Signature: (JJ)J
1333 */
1334 JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1vspace(JNIEnv * env,jclass clss,jlong dcpl_id,jlong index)1335 Java_hdf_hdf5lib_H5_H5Pget_1virtual_1vspace
1336 (JNIEnv *env, jclass clss, jlong dcpl_id, jlong index)
1337 {
1338 hid_t space_id = H5I_INVALID_HID;
1339
1340 UNUSED(clss);
1341
1342 if ((space_id = H5Pget_virtual_vspace((hid_t)dcpl_id, (size_t)index)) < 0)
1343 H5_LIBRARY_ERROR(ENVONLY);
1344
1345 done:
1346 return (jlong)space_id;
1347 } /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1vspace */
1348
1349 /*
1350 * Class: hdf_hdf5lib_H5
1351 * Method: H5Pset_virtual_prefix
1352 * Signature: (JLjava/lang/String;)V
1353 */
1354 JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5Pset_1virtual_1prefix(JNIEnv * env,jclass clss,jlong dapl_id,jstring prefix)1355 Java_hdf_hdf5lib_H5_H5Pset_1virtual_1prefix
1356 (JNIEnv *env, jclass clss, jlong dapl_id, jstring prefix)
1357 {
1358 const char *virtPrefix = NULL;
1359 herr_t retVal = FAIL;
1360
1361 UNUSED(clss);
1362
1363 if (NULL == prefix)
1364 H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_virtual_prefix: virtual prefix is NULL");
1365
1366 PIN_JAVA_STRING(ENVONLY, prefix, virtPrefix, NULL, "H5Pset_virtual_prefix: virtual prefix not pinned");
1367
1368 if ((retVal = H5Pset_virtual_prefix((hid_t)dapl_id, virtPrefix)) < 0)
1369 H5_LIBRARY_ERROR(ENVONLY);
1370
1371 done:
1372 if (virtPrefix)
1373 UNPIN_JAVA_STRING(ENVONLY, prefix, virtPrefix);
1374 } /* end Java_hdf_hdf5lib_H5_H5Pset_1virtual_1prefix */
1375
1376 /*
1377 * Class: hdf_hdf5lib_H5
1378 * Method: H5Pget_virtual_prefix
1379 * Signature: (J)Ljava/lang/String;
1380 */
1381 JNIEXPORT jstring JNICALL
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1prefix(JNIEnv * env,jclass clss,jlong dapl_id)1382 Java_hdf_hdf5lib_H5_H5Pget_1virtual_1prefix
1383 (JNIEnv *env, jclass clss, jlong dapl_id)
1384 {
1385 ssize_t prefix_size = -1;
1386 char *pre = NULL;
1387 jstring str = NULL;
1388
1389 UNUSED(clss);
1390
1391 if ((prefix_size = H5Pget_virtual_prefix((hid_t)dapl_id, (char *)NULL, 0)) < 0)
1392 H5_LIBRARY_ERROR(ENVONLY);
1393
1394 if (NULL == (pre = (char *) HDmalloc(sizeof(char) * (size_t) prefix_size + 1)))
1395 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_virtual_prefix: memory allocation failed");
1396
1397 if (H5Pget_virtual_prefix((hid_t)dapl_id, (char *)pre, (size_t) prefix_size + 1) < 0)
1398 H5_LIBRARY_ERROR(ENVONLY);
1399 pre[prefix_size] = '\0';
1400
1401 if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, pre))) {
1402 CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
1403 H5_JNI_FATAL_ERROR(ENVONLY, "H5Pget_virtual_prefix: out of memory - unable to construct string from UTF characters");
1404 }
1405
1406 done:
1407 if (pre)
1408 HDfree(pre);
1409
1410 return (jstring)str;
1411 } /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1prefix */
1412
1413 #ifdef __cplusplus
1414 } /* end extern "C" */
1415 #endif /* __cplusplus */
1416