mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-25 04:09:44 +03:00
Verified against the fork's actual GitHub Actions CI (not just local builds) and found two real regressions plus applied formatting the CI bot detected but couldn't push: - test/CMakeTests.cmake: register test_filters_v3.h5 (the Critical #3 golden file) in HDF5_REFERENCE_TEST_FILES so a fresh checkout's build tree actually stages it -- it only passed locally because the file had been generated directly inside an existing local build directory. Was failing H5TEST-tfilter2 on every CI job running the standard suite. - tools/lib/CMakeLists.txt: link the tools library against LINK_LIBS (libm), matching src/CMakeLists.txt's existing pattern. The new hex-float code in h5tools_dump.c is the first tools-library code to need floor()/isfinite(), and FreeBSD/OpenBSD's stricter linkers reject the resulting undefined symbols (Linux tolerated it silently). Was breaking the link step on FreeBSD 14.3/15.0 and OpenBSD 7.9. - Applied the clang-format fixes the CI bot found but couldn't push back (pre-existing fork credentials gap, confirmed unrelated to this branch): tfilter.cpp, h5pDCPLImp.c, H5Znbit.c, tfilter2.c, h5tools_dump.c. Verified via ctest -R H5TEST-tfilter2 on a build tree with the stale golden-file copy removed (reproducing CI's exact test invocation), plus a full local rebuild (0 warnings/errors) and the Fortran/parallel suites. Details and CI failure logs analyzed in REVIEW-6153.md's new "Post-push CI verification" section.
1582 lines
49 KiB
C
1582 lines
49 KiB
C
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* Copyright by The HDF Group. *
|
|
* All rights reserved. *
|
|
* *
|
|
* This file is part of HDF5. The full HDF5 copyright notice, including *
|
|
* terms governing use, modification, and redistribution, is contained in *
|
|
* the LICENSE file, which can be found at the root of the source code *
|
|
* distribution tree, or in https://www.hdfgroup.org/licenses. *
|
|
* If you do not have access to either file, you may request a copy from *
|
|
* help@hdfgroup.org. *
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
#include <stdlib.h>
|
|
#include "hdf5.h"
|
|
#include "h5jni.h"
|
|
#include "h5pDCPLImp.h"
|
|
|
|
/*
|
|
* Pointer to the JNI's Virtual Machine; used for callback functions.
|
|
*/
|
|
/* extern JavaVM *jvm; */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_layout
|
|
* Signature: (JI)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1layout(JNIEnv *env, jclass clss, jlong plist, jint layout)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pset_layout((hid_t)plist, (H5D_layout_t)layout)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1layout */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_layout
|
|
* Signature: (J)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1layout(JNIEnv *env, jclass clss, jlong plist)
|
|
{
|
|
H5D_layout_t retVal = H5D_LAYOUT_ERROR;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (H5D_LAYOUT_ERROR == (retVal = H5Pget_layout((hid_t)plist)))
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1layout */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_chunk
|
|
* Signature: (JI[B)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1chunk(JNIEnv *env, jclass clss, jlong plist, jint ndims, jbyteArray dim)
|
|
{
|
|
jboolean isCopy;
|
|
hsize_t *chunk_dims = NULL;
|
|
uint8_t *theArray_p = NULL;
|
|
size_t rank;
|
|
jsize arrLen;
|
|
jbyte *theArray = NULL;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (ndims < 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_chunk: ndims < 0");
|
|
if (NULL == dim)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_chunk: dim array is NULL");
|
|
|
|
if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, dim)) < 0) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_chunk: dim array length < 0");
|
|
}
|
|
|
|
rank = (size_t)arrLen / sizeof(jlong);
|
|
if (rank < (size_t)ndims)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_chunk: dims array rank < ndims");
|
|
|
|
PIN_BYTE_ARRAY(ENVONLY, dim, theArray, &isCopy, "H5Pset_chunk: dim array not pinned");
|
|
|
|
if (NULL == (chunk_dims = malloc(rank * sizeof(hsize_t))))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pset_chunk: memory allocation failed");
|
|
|
|
theArray_p = (uint8_t *)theArray;
|
|
for (size_t i = 0; i < rank; i++) {
|
|
jlong dim_val;
|
|
|
|
memcpy(&dim_val, theArray_p, sizeof(jlong));
|
|
|
|
if (dim_val < 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_chunk: chunk dimensions can't be negative");
|
|
|
|
chunk_dims[i] = (hsize_t)dim_val;
|
|
|
|
theArray_p += sizeof(jlong);
|
|
}
|
|
|
|
if ((status = H5Pset_chunk((hid_t)plist, (int)ndims, chunk_dims)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
free(chunk_dims);
|
|
|
|
if (theArray)
|
|
UNPIN_BYTE_ARRAY(ENVONLY, dim, theArray, JNI_ABORT);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1chunk */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_chunk
|
|
* Signature: (JI[J)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1chunk(JNIEnv *env, jclass clss, jlong plist, jint max_ndims, jlongArray dims)
|
|
{
|
|
jboolean isCopy;
|
|
hsize_t *da = NULL;
|
|
jlong *theArray = NULL;
|
|
jsize arrLen;
|
|
int i;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == dims)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_chunk: dims is NULL");
|
|
|
|
if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, dims)) < 0) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_chunk: dims array length < 0");
|
|
}
|
|
if (arrLen < max_ndims)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_chunk: dims array < max_ndims");
|
|
|
|
PIN_LONG_ARRAY(ENVONLY, dims, theArray, &isCopy, "H5Pget_chunk: input dims not pinned");
|
|
|
|
if (NULL == (da = (hsize_t *)malloc((size_t)max_ndims * sizeof(hsize_t))))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_chunk: memory allocation failed");
|
|
|
|
if ((status = H5Pget_chunk((hid_t)plist, (int)max_ndims, da)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
for (i = 0; i < max_ndims; i++)
|
|
theArray[i] = (jlong)da[i];
|
|
|
|
done:
|
|
if (da)
|
|
free(da);
|
|
if (theArray)
|
|
UNPIN_LONG_ARRAY(ENVONLY, dims, theArray, (status < 0) ? JNI_ABORT : 0);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1chunk */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_chunk_opts
|
|
* Signature: (JI)V
|
|
*/
|
|
JNIEXPORT void JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1chunk_1opts(JNIEnv *env, jclass clss, jlong dcpl_id, jint opts)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pset_chunk_opts((hid_t)dcpl_id, (unsigned)opts)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1chunk_1opts */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_chunk_opts
|
|
* Signature: (J)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1chunk_1opts(JNIEnv *env, jclass clss, jlong dcpl_id)
|
|
{
|
|
unsigned opts = 0;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (H5Pget_chunk_opts((hid_t)dcpl_id, &opts) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)opts;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1chunk_1opts */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_dset_no_attrs_hint
|
|
* Signature: (JZ)V
|
|
*/
|
|
JNIEXPORT void JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1dset_1no_1attrs_1hint(JNIEnv *env, jclass clss, jlong dcpl_id, jboolean minimize)
|
|
{
|
|
bool minimize_val;
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
minimize_val = (JNI_TRUE == minimize) ? true : false;
|
|
|
|
if ((retVal = H5Pset_dset_no_attrs_hint((hid_t)dcpl_id, (bool)minimize_val)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1dset_1no_1attrs_1hint */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_dset_no_attrs_hint
|
|
* Signature: (J)Z
|
|
*/
|
|
JNIEXPORT jboolean JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1dset_1no_1attrs_1hint(JNIEnv *env, jclass clss, jlong dcpl_id)
|
|
{
|
|
bool minimize = false;
|
|
jboolean bval = JNI_FALSE;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (H5Pget_dset_no_attrs_hint((hid_t)dcpl_id, (bool *)&minimize) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
if (minimize == true)
|
|
bval = JNI_TRUE;
|
|
|
|
done:
|
|
return bval;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1dset_1no_1attrs_1hint */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_deflate
|
|
* Signature: (JI)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1deflate(JNIEnv *env, jclass clss, jlong plist, jint level)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pset_deflate((hid_t)plist, (unsigned)level)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1deflate */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_fill_value
|
|
* Signature: (JJ[B)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1fill_1value(JNIEnv *env, jclass clss, jlong plist_id, jlong type_id,
|
|
jbyteArray value)
|
|
{
|
|
jboolean isCopy;
|
|
jbyte *byteP = NULL;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == value) {
|
|
if ((status = H5Pset_fill_value((hid_t)plist_id, (hid_t)type_id, byteP)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
}
|
|
else {
|
|
PIN_BYTE_ARRAY(ENVONLY, value, byteP, &isCopy, "H5Pget_fill_value: value array not pinned");
|
|
|
|
if ((status = H5Pset_fill_value((hid_t)plist_id, (hid_t)type_id, byteP)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
}
|
|
|
|
done:
|
|
if (byteP)
|
|
UNPIN_BYTE_ARRAY(ENVONLY, value, byteP, JNI_ABORT);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1fill_1value */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_fill_value
|
|
* Signature: (JJ[B)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1fill_1value(JNIEnv *env, jclass clss, jlong plist_id, jlong type_id,
|
|
jbyteArray value)
|
|
{
|
|
jboolean isCopy;
|
|
herr_t status = FAIL;
|
|
jbyte *byteP = NULL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == value)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_fill_value: value is NULL");
|
|
|
|
PIN_BYTE_ARRAY(ENVONLY, value, byteP, &isCopy, "H5Pget_fill_value: value array not pinned");
|
|
|
|
if ((status = H5Pget_fill_value((hid_t)plist_id, (hid_t)type_id, byteP)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
if (byteP)
|
|
UNPIN_BYTE_ARRAY(ENVONLY, value, byteP, (status < 0) ? JNI_ABORT : 0);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1fill_1value */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pfill_value_defined
|
|
* Signature: (J[I)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pfill_1value_1defined(JNIEnv *env, jclass clss, jlong plist, jintArray status)
|
|
{
|
|
H5D_fill_value_t value = H5D_FILL_VALUE_ERROR;
|
|
jboolean isCopy;
|
|
jint *theArray = NULL;
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == status)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pfill_value_defined: status is NULL");
|
|
|
|
PIN_INT_ARRAY(ENVONLY, status, theArray, &isCopy, "H5Pfill_value_defined: status not pinned");
|
|
|
|
if ((retVal = H5Pfill_value_defined((hid_t)plist, &value)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
theArray[0] = (jint)value;
|
|
|
|
done:
|
|
if (theArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, status, theArray, (retVal < 0) ? JNI_ABORT : 0);
|
|
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pfill_1value_1defined */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_fill_time
|
|
* Signature: (JI)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1fill_1time(JNIEnv *env, jclass clss, jlong plist, jint fill_time)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pset_fill_time((hid_t)plist, (H5D_fill_time_t)fill_time)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1fill_1time */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_fill_time
|
|
* Signature: (J[I)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1fill_1time(JNIEnv *env, jclass clss, jlong plist, jintArray fill_time)
|
|
{
|
|
H5D_fill_time_t time = H5D_FILL_TIME_ERROR;
|
|
jboolean isCopy;
|
|
jint *theArray = NULL;
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == fill_time)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_fill_time: fill_time is NULL");
|
|
|
|
PIN_INT_ARRAY(ENVONLY, fill_time, theArray, &isCopy, "H5Pget_fill_time: fill_time not pinned");
|
|
|
|
if ((retVal = H5Pget_fill_time((hid_t)plist, &time)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
theArray[0] = (jint)time;
|
|
|
|
done:
|
|
if (theArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, fill_time, theArray, (retVal < 0) ? JNI_ABORT : 0);
|
|
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1fill_1time */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_alloc_time
|
|
* Signature: (JI)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1alloc_1time(JNIEnv *env, jclass clss, jlong plist, jint alloc_time)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pset_alloc_time((hid_t)plist, (H5D_alloc_time_t)alloc_time)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1alloc_1time */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_alloc_time
|
|
* Signature: (J[I)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1alloc_1time(JNIEnv *env, jclass clss, jlong plist, jintArray alloc_time)
|
|
{
|
|
H5D_alloc_time_t time = H5D_ALLOC_TIME_ERROR;
|
|
jboolean isCopy;
|
|
jint *theArray = NULL;
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == alloc_time)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_alloc_time: alloc_time is NULL");
|
|
|
|
PIN_INT_ARRAY(ENVONLY, alloc_time, theArray, &isCopy, "H5Pget_alloc_time: alloc_time not pinned");
|
|
|
|
if ((retVal = H5Pget_alloc_time((hid_t)plist, &time)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
theArray[0] = time;
|
|
|
|
done:
|
|
if (theArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, alloc_time, theArray, (retVal < 0) ? JNI_ABORT : 0);
|
|
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1alloc_1time */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_filter
|
|
* Signature: (JIIJ[I)I
|
|
*/
|
|
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)
|
|
{
|
|
jboolean isCopy;
|
|
jint *theArray = NULL;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == cd_values) {
|
|
if ((status = H5Pset_filter((hid_t)plist, (H5Z_filter_t)filter, (unsigned int)flags,
|
|
(size_t)cd_nelmts, NULL)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
}
|
|
else {
|
|
PIN_INT_ARRAY(ENVONLY, cd_values, theArray, &isCopy, "H5Pset_filter: input array not pinned");
|
|
|
|
if ((status = H5Pset_filter((hid_t)plist, (H5Z_filter_t)filter, (unsigned int)flags,
|
|
(size_t)cd_nelmts, (const unsigned int *)theArray)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
}
|
|
|
|
done:
|
|
if (theArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, cd_values, theArray, JNI_ABORT);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1filter */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pall_filters_avail
|
|
* Signature: (J)Z
|
|
*/
|
|
JNIEXPORT jboolean JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pall_1filters_1avail(JNIEnv *env, jclass clss, jlong dcpl_id)
|
|
{
|
|
htri_t bval = JNI_FALSE;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((bval = H5Pall_filters_avail((hid_t)dcpl_id)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
bval = (bval > 0) ? JNI_TRUE : JNI_FALSE;
|
|
|
|
done:
|
|
return (jboolean)bval;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pall_1filters_1avail */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_nfilters
|
|
* Signature: (J)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1nfilters(JNIEnv *env, jclass clss, jlong plist)
|
|
{
|
|
int retVal = -1;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pget_nfilters((hid_t)plist)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1nfilters */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_filter
|
|
* Signature: (JI[I[J[IJ[Ljava/lang/String;)I
|
|
*/
|
|
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)
|
|
{
|
|
jboolean isCopy;
|
|
jstring str;
|
|
jint *flagsArray = NULL;
|
|
jlong *cd_nelmtsArray = NULL;
|
|
jint *cd_valuesArray = NULL;
|
|
char *filter = NULL;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (namelen <= 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter: namelen <= 0");
|
|
if (NULL == flags)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter: flags is NULL");
|
|
if (NULL == cd_nelmts)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter: cd_nelmts is NULL");
|
|
if (NULL == cd_values)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter: cd_values is NULL");
|
|
|
|
if (NULL == (filter = (char *)malloc(sizeof(char) * (size_t)namelen)))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_filter: memory allocation failed");
|
|
|
|
PIN_INT_ARRAY(ENVONLY, flags, flagsArray, &isCopy, "H5Pget_filter: flags array not pinned");
|
|
PIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, &isCopy, "H5Pget_filter: nelmts array not pinned");
|
|
PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, &isCopy, "H5Pget_filter: elmts array not pinned");
|
|
|
|
/* direct cast (size_t *)variable fails on 32-bit environment */
|
|
{
|
|
unsigned int filter_config;
|
|
long long cd_nelmts_temp = *cd_nelmtsArray;
|
|
size_t cd_nelmts_t = (size_t)cd_nelmts_temp;
|
|
|
|
if ((status = H5Pget_filter2((hid_t)plist, (unsigned)filter_number, (unsigned int *)flagsArray,
|
|
&cd_nelmts_t, (unsigned int *)cd_valuesArray, (size_t)namelen, filter,
|
|
&filter_config)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
filter[namelen - 1] = '\0';
|
|
|
|
*cd_nelmtsArray = (jlong)cd_nelmts_t;
|
|
}
|
|
|
|
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, filter))) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_OUT_OF_MEMORY_ERROR(
|
|
ENVONLY, "H5Pget_filter: out of memory - unable to construct string from UTF characters");
|
|
}
|
|
|
|
ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
|
|
|
done:
|
|
if (cd_valuesArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (cd_nelmtsArray)
|
|
UNPIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (flagsArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, flags, flagsArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (filter)
|
|
free(filter);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1filter */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_filter2
|
|
* Signature: (JI[I[J[IJ[Ljava/lang/String;[I)I
|
|
*/
|
|
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)
|
|
{
|
|
jboolean isCopy;
|
|
jstring str;
|
|
jint *flagsArray = NULL;
|
|
jlong *cd_nelmtsArray = NULL;
|
|
jint *cd_valuesArray = NULL;
|
|
jint *filter_configArray = NULL;
|
|
char *filter = NULL;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (namelen <= 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: namelen <= 0");
|
|
if (NULL == flags)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: flags is NULL");
|
|
if (NULL == cd_nelmts)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: cd_nelmts is NULL");
|
|
if (NULL == filter_config)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: filter_config is NULL");
|
|
|
|
if (NULL == (filter = (char *)malloc(sizeof(char) * (size_t)namelen)))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_filter2: memory allocation failed");
|
|
|
|
PIN_INT_ARRAY(ENVONLY, flags, flagsArray, &isCopy, "H5Pget_filter2: flags array not pinned");
|
|
PIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, &isCopy, "H5Pget_filter2: nelmts array not pinned");
|
|
PIN_INT_ARRAY(ENVONLY, filter_config, filter_configArray, &isCopy,
|
|
"H5Pget_filter2: filter_config array not pinned");
|
|
|
|
if (NULL == cd_values && *cd_nelmtsArray == 0) {
|
|
/* direct cast (size_t *)variable fails on 32-bit environment */
|
|
long long cd_nelmts_temp = 0;
|
|
size_t cd_nelmts_t = (size_t)cd_nelmts_temp;
|
|
|
|
if ((status = H5Pget_filter2((hid_t)plist, (unsigned)filter_number, (unsigned int *)flagsArray,
|
|
&cd_nelmts_t, NULL, (size_t)namelen, filter,
|
|
(unsigned int *)filter_configArray)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
filter[namelen - 1] = '\0';
|
|
|
|
*cd_nelmtsArray = (jlong)cd_nelmts_t;
|
|
}
|
|
else {
|
|
if (NULL == cd_values)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter2: cd_values is NULL");
|
|
|
|
PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, &isCopy, "H5Pget_filter2: elmts array not pinned");
|
|
|
|
{
|
|
/* direct cast (size_t *)variable fails on 32-bit environment */
|
|
long long cd_nelmts_temp = *cd_nelmtsArray;
|
|
size_t cd_nelmts_t = (size_t)cd_nelmts_temp;
|
|
|
|
if ((status = H5Pget_filter2((hid_t)plist, (unsigned)filter_number, (unsigned int *)flagsArray,
|
|
&cd_nelmts_t, (unsigned int *)cd_valuesArray, (size_t)namelen,
|
|
filter, (unsigned int *)filter_configArray)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
filter[namelen - 1] = '\0';
|
|
|
|
*cd_nelmtsArray = (jlong)cd_nelmts_t;
|
|
} /* end direct cast special */
|
|
}
|
|
|
|
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, filter))) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_OUT_OF_MEMORY_ERROR(
|
|
ENVONLY, "H5Pget_filter2: out of memory - unable to construct string from UTF characters");
|
|
}
|
|
|
|
ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
|
|
|
done:
|
|
if (cd_valuesArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (filter_configArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, filter_config, filter_configArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (cd_nelmtsArray)
|
|
UNPIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (flagsArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, flags, flagsArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (filter)
|
|
free(filter);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1filter2 */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_filter_by_id
|
|
* Signature: (JI[I[J[IJ[Ljava/lang/String;)I
|
|
*/
|
|
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)
|
|
{
|
|
jboolean isCopy;
|
|
jstring str;
|
|
jlong *cd_nelmtsArray = NULL;
|
|
jint *cd_valuesArray = NULL;
|
|
jint *flagsArray = NULL;
|
|
char *aName = NULL;
|
|
long bs;
|
|
int rank;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
bs = (long)namelen;
|
|
|
|
if (bs <= 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: namelen <= 0");
|
|
if (NULL == flags)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: flags is NULL");
|
|
if (NULL == cd_nelmts)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: cd_nelmts is NULL");
|
|
if (NULL == cd_values)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: cd_values is NULL");
|
|
if (NULL == name)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: name is NULL");
|
|
|
|
if (NULL == (aName = (char *)malloc(sizeof(char) * (size_t)bs)))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_filter_by_id: memory allocation failed");
|
|
|
|
PIN_INT_ARRAY(ENVONLY, flags, flagsArray, &isCopy, "H5Pget_filter_by_id: flags not pinned");
|
|
PIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, &isCopy, "H5Pget_filter_by_id: cd_nelms not pinned");
|
|
PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, &isCopy,
|
|
"H5Pget_filter_by_id: cd_values array not pinned");
|
|
|
|
if ((rank = ENVPTR->GetArrayLength(ENVONLY, cd_values)) < 0) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id: cd_values array length < 0");
|
|
}
|
|
|
|
{
|
|
/* direct cast (size_t *)variable fails on 32-bit environment */
|
|
unsigned int filter_config;
|
|
long long cd_nelmts_temp = *cd_nelmtsArray;
|
|
size_t cd_nelmts_t = (size_t)cd_nelmts_temp;
|
|
|
|
if ((status = H5Pget_filter_by_id2((hid_t)plist, (H5Z_filter_t)filter, (unsigned int *)flagsArray,
|
|
&cd_nelmts_t, (unsigned int *)cd_valuesArray, (size_t)namelen,
|
|
(char *)aName, &filter_config)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
aName[bs - 1] = '\0';
|
|
|
|
*cd_nelmtsArray = (jlong)cd_nelmts_t;
|
|
} /* end direct cast special */
|
|
|
|
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, aName))) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_OUT_OF_MEMORY_ERROR(
|
|
ENVONLY, "H5Pget_filter_by_id: out of memory - unable to construct string from UTF characters");
|
|
}
|
|
|
|
ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
|
|
|
done:
|
|
if (cd_valuesArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (cd_nelmtsArray)
|
|
UNPIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (flagsArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, flags, flagsArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (aName)
|
|
free(aName);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1filter_1by_1id */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_filter_by_id2
|
|
* Signature: (JI[I[J[IJ[Ljava/lang/String;[I)I
|
|
*/
|
|
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)
|
|
{
|
|
jboolean isCopy;
|
|
jstring str;
|
|
jlong *cd_nelmtsArray = NULL;
|
|
jint *cd_valuesArray = NULL;
|
|
jint *flagsArray = NULL;
|
|
jint *filter_configArray = NULL;
|
|
long bs;
|
|
char *aName = NULL;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
bs = (long)namelen;
|
|
|
|
if (bs <= 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: namelen <= 0");
|
|
if (NULL == flags)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: flags is NULL");
|
|
if (NULL == cd_nelmts)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: cd_nelmts is NULL");
|
|
if (NULL == cd_values)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: cd_values is NULL");
|
|
if (NULL == name)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: name is NULL");
|
|
if (NULL == filter_config)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pget_filter_by_id2: filter_config is NULL");
|
|
|
|
if (NULL == (aName = (char *)malloc(sizeof(char) * (size_t)bs)))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_filter_by_id2: memory allocation failed");
|
|
|
|
PIN_INT_ARRAY(ENVONLY, flags, flagsArray, &isCopy, "H5Pget_filter_by_id2: flags not pinned");
|
|
PIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, &isCopy, "H5Pget_filter_by_id2: cd_nelms not pinned");
|
|
PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, &isCopy,
|
|
"H5Pget_filter_by_id2: cd_values array not pinned");
|
|
PIN_INT_ARRAY(ENVONLY, filter_config, filter_configArray, &isCopy,
|
|
"H5Pget_filter_by_id2: filter_config not pinned");
|
|
|
|
{
|
|
/* direct cast (size_t *)variable fails on 32-bit environment */
|
|
long long cd_nelmts_temp = *cd_nelmtsArray;
|
|
size_t cd_nelmts_t = (size_t)cd_nelmts_temp;
|
|
|
|
if ((status = H5Pget_filter_by_id2((hid_t)plist, (H5Z_filter_t)filter, (unsigned int *)flagsArray,
|
|
&cd_nelmts_t, (unsigned int *)cd_valuesArray, (size_t)namelen,
|
|
(char *)aName, (unsigned int *)filter_configArray)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
aName[bs - 1] = '\0';
|
|
|
|
*cd_nelmtsArray = (jlong)cd_nelmts_t;
|
|
} /* end direct cast special handling */
|
|
|
|
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, aName))) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_OUT_OF_MEMORY_ERROR(
|
|
ENVONLY, "H5Pget_filter_by_id2: out of memory - unable to construct string from UTF characters");
|
|
}
|
|
|
|
ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
|
|
|
done:
|
|
if (filter_configArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, filter_config, filter_configArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (cd_valuesArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (cd_nelmtsArray)
|
|
UNPIN_LONG_ARRAY(ENVONLY, cd_nelmts, cd_nelmtsArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (flagsArray)
|
|
UNPIN_INT_ARRAY(ENVONLY, flags, flagsArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (aName)
|
|
free(aName);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1filter_1by_1id2 */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pmodify_filter
|
|
* Signature: (JIIJ[I)I
|
|
*/
|
|
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)
|
|
{
|
|
jboolean isCopy;
|
|
jint *cd_valuesP = NULL;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == cd_values)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pmodify_filter: cd_values is NULL");
|
|
|
|
PIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesP, &isCopy, "H5Pmodify_filter: cd_values not pinned");
|
|
|
|
if ((status = H5Pmodify_filter((hid_t)plist, (H5Z_filter_t)filter, (const unsigned int)flags,
|
|
(size_t)cd_nelmts, (unsigned int *)cd_valuesP)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
if (cd_valuesP)
|
|
UNPIN_INT_ARRAY(ENVONLY, cd_values, cd_valuesP, JNI_ABORT);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pmodify_1filter */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Premove_filter
|
|
* Signature: (JI)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5P1remove_1filter(JNIEnv *env, jclass clss, jlong obj_id, jint filter)
|
|
{
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((status = H5Premove_filter((hid_t)obj_id, (H5Z_filter_t)filter)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5P1remove_1filter */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_fletcher32
|
|
* Signature: (J)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1fletcher32(JNIEnv *env, jclass clss, jlong plist)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pset_fletcher32((hid_t)plist)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1fletcher32 */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_nbit
|
|
* Signature: (J)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1nbit(JNIEnv *env, jclass clss, jlong plist_id)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pset_nbit((hid_t)plist_id)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1nbit */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_scaleoffset
|
|
* Signature: (JII)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1scaleoffset(JNIEnv *env, jclass clss, jlong plist_id, jint scale_type,
|
|
jint scale_factor)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (scale_factor < 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_scaleoffset: scale factor must be >= 0");
|
|
if (scale_type != H5Z_SO_FLOAT_DSCALE && scale_type != H5Z_SO_FLOAT_ESCALE && scale_type != H5Z_SO_INT)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pset_scaleoffset: invalid scale type");
|
|
|
|
if ((retVal = H5Pset_scaleoffset((hid_t)plist_id, (H5Z_SO_scale_type_t)scale_type, scale_factor)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1scaleoffset */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_shuffle
|
|
* Signature: (J)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1shuffle(JNIEnv *env, jclass clss, jlong plist)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pset_shuffle((hid_t)plist)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1shuffle */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_szip
|
|
* Signature: (JII)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1szip(JNIEnv *env, jclass clss, jlong plist, jint options_mask,
|
|
jint pixels_per_block)
|
|
{
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pset_szip((hid_t)plist, (unsigned int)options_mask, (unsigned int)pixels_per_block)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1szip */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_external
|
|
* Signature: (JLjava/lang/String;JJ)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1external(JNIEnv *env, jclass clss, jlong plist, jstring name, jlong offset,
|
|
jlong size)
|
|
{
|
|
const char *fileName = NULL;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == name)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_external: file name is NULL");
|
|
|
|
PIN_JAVA_STRING(ENVONLY, name, fileName, NULL, "H5Pset_external: file name not pinned");
|
|
|
|
if ((status = H5Pset_external((hid_t)plist, fileName, (HDoff_t)offset, (hsize_t)size)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
if (fileName)
|
|
UNPIN_JAVA_STRING(ENVONLY, name, fileName);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1external */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_external
|
|
* Signature: (JIJ[Ljava/lang/String;[J)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1external(JNIEnv *env, jclass clss, jlong plist, jint idx, jlong name_size,
|
|
jobjectArray name, jlongArray size)
|
|
{
|
|
jboolean isCopy;
|
|
jstring str;
|
|
hsize_t s;
|
|
HDoff_t o;
|
|
jsize arrLen;
|
|
jlong *theArray = NULL;
|
|
char *file = NULL;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (name_size < 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_external: name_size < 0");
|
|
|
|
if ((arrLen = ENVPTR->GetArrayLength(ENVONLY, size)) < 0) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_external: size array length < 0");
|
|
}
|
|
if ((size != NULL) && (arrLen < 2))
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pget_external: size input array < 2");
|
|
|
|
if (name_size > 0)
|
|
if (NULL == (file = (char *)malloc(sizeof(char) * (size_t)name_size)))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_external: memory allocation failed");
|
|
|
|
if ((status = H5Pget_external((hid_t)plist, (unsigned)idx, (size_t)name_size, file, &o, (hsize_t *)&s)) <
|
|
0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
if (NULL != size) {
|
|
PIN_LONG_ARRAY(ENVONLY, size, theArray, &isCopy, "H5Pget_external: size array not pinned");
|
|
|
|
theArray[0] = o;
|
|
theArray[1] = (jlong)s;
|
|
}
|
|
|
|
if (NULL != file) {
|
|
file[name_size - 1] = '\0';
|
|
|
|
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, file))) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_OUT_OF_MEMORY_ERROR(
|
|
ENVONLY, "H5Pget_external: out of memory - unable to construct string from UTF characters");
|
|
}
|
|
|
|
ENVPTR->SetObjectArrayElement(ENVONLY, name, 0, (jobject)str);
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
|
}
|
|
|
|
done:
|
|
if (theArray)
|
|
UNPIN_LONG_ARRAY(ENVONLY, size, theArray, (status < 0) ? JNI_ABORT : 0);
|
|
if (file)
|
|
free(file);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1external */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_external_count
|
|
* Signature: (J)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1external_1count(JNIEnv *env, jclass clss, jlong plist)
|
|
{
|
|
int retVal = -1;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((retVal = H5Pget_external_count((hid_t)plist)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jint)retVal;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1external_1count */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_virtual
|
|
* Signature: (JJLjava/lang/String;Ljava/lang/String;J)V
|
|
*/
|
|
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)
|
|
{
|
|
const char *fstr = NULL;
|
|
const char *dstr = NULL;
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == src_file_name)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_virtual: src_file_name is NULL");
|
|
if (NULL == src_dset_name)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_virtual: src_dset_name is NULL");
|
|
|
|
PIN_JAVA_STRING(ENVONLY, src_file_name, fstr, NULL, "H5Pset_virtual: src_file_name not pinned");
|
|
PIN_JAVA_STRING(ENVONLY, src_dset_name, dstr, NULL, "H5Pset_virtual: src_dset_name not pinned");
|
|
|
|
if ((retVal = H5Pset_virtual((hid_t)dcpl_id, (hid_t)vspace_id, fstr, dstr, (hid_t)src_space_id)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
if (dstr)
|
|
UNPIN_JAVA_STRING(ENVONLY, src_dset_name, dstr);
|
|
if (fstr)
|
|
UNPIN_JAVA_STRING(ENVONLY, src_file_name, fstr);
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1virtual */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_virtual_count
|
|
* Signature: (J)J
|
|
*/
|
|
JNIEXPORT jlong JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1count(JNIEnv *env, jclass clss, jlong dcpl_id)
|
|
{
|
|
size_t s = 0;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (H5Pget_virtual_count((hid_t)dcpl_id, &s) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jlong)s;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1count */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_virtual_dsetname
|
|
* Signature: (JJ)Ljava/lang/String;
|
|
*/
|
|
JNIEXPORT jstring JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1dsetname(JNIEnv *env, jclass clss, jlong dcpl_id, jlong idx)
|
|
{
|
|
ssize_t buf_size;
|
|
char *dname = NULL;
|
|
jstring str = NULL;
|
|
|
|
UNUSED(clss);
|
|
|
|
/* get the length of the filename */
|
|
if ((buf_size = H5Pget_virtual_dsetname((hid_t)dcpl_id, (size_t)idx, NULL, 0)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
if (NULL == (dname = (char *)malloc(sizeof(char) * (size_t)buf_size + 1)))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_virtual_dsetname: memory allocation failed");
|
|
|
|
if (H5Pget_virtual_dsetname((hid_t)dcpl_id, (size_t)idx, dname, (size_t)buf_size + 1) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
dname[buf_size] = '\0';
|
|
|
|
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, dname))) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_OUT_OF_MEMORY_ERROR(
|
|
ENVONLY,
|
|
"H5Pget_virtual_dsetname: out of memory - unable to construct string from UTF characters");
|
|
}
|
|
|
|
done:
|
|
if (dname)
|
|
free(dname);
|
|
|
|
return (jstring)str;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1dsetname */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_virtual_filename
|
|
* Signature: (JJ)Ljava/lang/String;
|
|
*/
|
|
JNIEXPORT jstring JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1filename(JNIEnv *env, jclass clss, jlong dcpl_id, jlong idx)
|
|
{
|
|
ssize_t buf_size;
|
|
char *fname = NULL;
|
|
jstring str = NULL;
|
|
|
|
UNUSED(clss);
|
|
|
|
/* get the length of the filename */
|
|
if ((buf_size = H5Pget_virtual_filename((hid_t)dcpl_id, (size_t)idx, NULL, 0)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
if (NULL == (fname = (char *)malloc(sizeof(char) * (size_t)buf_size + 1)))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_virtual_filename: memory allocation failed");
|
|
|
|
if (H5Pget_virtual_filename((hid_t)dcpl_id, (size_t)idx, fname, (size_t)buf_size + 1) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
fname[buf_size] = '\0';
|
|
|
|
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, fname))) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_OUT_OF_MEMORY_ERROR(
|
|
ENVONLY,
|
|
"H5Pget_virtual_filename: out of memory - unable to construct string from UTF characters");
|
|
}
|
|
|
|
done:
|
|
if (fname)
|
|
free(fname);
|
|
|
|
return (jstring)str;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1filename */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_virtual_srcspace
|
|
* Signature: (JJ)J
|
|
*/
|
|
JNIEXPORT jlong JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1srcspace(JNIEnv *env, jclass clss, jlong dcpl_id, jlong idx)
|
|
{
|
|
hid_t space_id = H5I_INVALID_HID;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((space_id = H5Pget_virtual_srcspace((hid_t)dcpl_id, (size_t)idx)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jlong)space_id;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1srcspace */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_virtual_vspace
|
|
* Signature: (JJ)J
|
|
*/
|
|
JNIEXPORT jlong JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1vspace(JNIEnv *env, jclass clss, jlong dcpl_id, jlong idx)
|
|
{
|
|
hid_t space_id = H5I_INVALID_HID;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((space_id = H5Pget_virtual_vspace((hid_t)dcpl_id, (size_t)idx)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
return (jlong)space_id;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1vspace */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pset_virtual_prefix
|
|
* Signature: (JLjava/lang/String;)V
|
|
*/
|
|
JNIEXPORT void JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pset_1virtual_1prefix(JNIEnv *env, jclass clss, jlong dapl_id, jstring prefix)
|
|
{
|
|
const char *virtPrefix = NULL;
|
|
herr_t retVal = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (NULL == prefix)
|
|
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5Pset_virtual_prefix: virtual prefix is NULL");
|
|
|
|
PIN_JAVA_STRING(ENVONLY, prefix, virtPrefix, NULL, "H5Pset_virtual_prefix: virtual prefix not pinned");
|
|
|
|
if ((retVal = H5Pset_virtual_prefix((hid_t)dapl_id, virtPrefix)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
if (virtPrefix)
|
|
UNPIN_JAVA_STRING(ENVONLY, prefix, virtPrefix);
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pset_1virtual_1prefix */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_virtual_prefix
|
|
* Signature: (J)Ljava/lang/String;
|
|
*/
|
|
JNIEXPORT jstring JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1virtual_1prefix(JNIEnv *env, jclass clss, jlong dapl_id)
|
|
{
|
|
ssize_t prefix_size = -1;
|
|
char *pre = NULL;
|
|
jstring str = NULL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if ((prefix_size = H5Pget_virtual_prefix((hid_t)dapl_id, (char *)NULL, 0)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
if (NULL == (pre = (char *)malloc(sizeof(char) * (size_t)prefix_size + 1)))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_virtual_prefix: memory allocation failed");
|
|
|
|
if (H5Pget_virtual_prefix((hid_t)dapl_id, (char *)pre, (size_t)prefix_size + 1) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
pre[prefix_size] = '\0';
|
|
|
|
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, pre))) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_OUT_OF_MEMORY_ERROR(
|
|
ENVONLY, "H5Pget_virtual_prefix: out of memory - unable to construct string from UTF characters");
|
|
}
|
|
|
|
done:
|
|
if (pre)
|
|
free(pre);
|
|
|
|
return (jstring)str;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1virtual_1prefix */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pappend_filter (string form)
|
|
* Signature: (JIILjava/lang/String;)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pappend_1filter_1str(JNIEnv *env, jclass clss, jlong plist_id, jint filter_id,
|
|
jint flags, jstring params)
|
|
{
|
|
H5Z_params_t p;
|
|
const char *c_params = NULL;
|
|
jboolean isCopy;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (params)
|
|
PIN_JAVA_STRING(ENVONLY, params, c_params, &isCopy, "H5Pappend_filter: params string not pinned");
|
|
|
|
p.type = H5Z_PARAMS_STRING;
|
|
p.u.str = c_params;
|
|
|
|
if ((status = H5Pappend_filter((hid_t)plist_id, (H5Z_filter_t)filter_id, (unsigned)flags, &p)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
if (c_params)
|
|
UNPIN_JAVA_STRING(ENVONLY, params, c_params);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pappend_1filter_1str */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pappend_filter (raw cd_values form)
|
|
* Signature: (JII[I)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pappend_1filter_1raw(JNIEnv *env, jclass clss, jlong plist_id, jint filter_id,
|
|
jint flags, jintArray cd_values)
|
|
{
|
|
H5Z_params_t p;
|
|
jint *c_cd_values = NULL;
|
|
jboolean isCopy;
|
|
herr_t status = FAIL;
|
|
jsize cd_nelmts = 0;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (cd_values) {
|
|
cd_nelmts = ENVPTR->GetArrayLength(ENVONLY, cd_values);
|
|
if (cd_nelmts < 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pappend_filter: cd_values array length < 0");
|
|
PIN_INT_ARRAY(ENVONLY, cd_values, c_cd_values, &isCopy, "H5Pappend_filter: cd_values not pinned");
|
|
}
|
|
|
|
p.type = H5Z_PARAMS_CDVALUES;
|
|
p.u.raw.cd_nelmts = (size_t)cd_nelmts;
|
|
p.u.raw.cd_values = (const unsigned *)c_cd_values;
|
|
|
|
if ((status = H5Pappend_filter((hid_t)plist_id, (H5Z_filter_t)filter_id, (unsigned)flags, &p)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
if (c_cd_values)
|
|
UNPIN_INT_ARRAY(ENVONLY, cd_values, c_cd_values, JNI_ABORT);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pappend_1filter_1raw */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pmodify_filter_by_idx (string form)
|
|
* Signature: (JIILjava/lang/String;)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pmodify_1filter_1by_1idx_1str(JNIEnv *env, jclass clss, jlong plist_id, jint filter_idx,
|
|
jint flags, jstring params)
|
|
{
|
|
H5Z_params_t p;
|
|
const char *c_params = NULL;
|
|
jboolean isCopy;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (params)
|
|
PIN_JAVA_STRING(ENVONLY, params, c_params, &isCopy,
|
|
"H5Pmodify_filter_by_idx: params string not pinned");
|
|
|
|
p.type = H5Z_PARAMS_STRING;
|
|
p.u.str = c_params;
|
|
|
|
if ((status = H5Pmodify_filter_by_idx((hid_t)plist_id, (unsigned)filter_idx, (unsigned)flags, &p)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
if (c_params)
|
|
UNPIN_JAVA_STRING(ENVONLY, params, c_params);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pmodify_1filter_1by_1idx_1str */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pmodify_filter_by_idx (raw cd_values form)
|
|
* Signature: (JII[I)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pmodify_1filter_1by_1idx_1raw(JNIEnv *env, jclass clss, jlong plist_id, jint filter_idx,
|
|
jint flags, jintArray cd_values)
|
|
{
|
|
H5Z_params_t p;
|
|
jint *c_cd_values = NULL;
|
|
jboolean isCopy;
|
|
herr_t status = FAIL;
|
|
jsize cd_nelmts = 0;
|
|
|
|
UNUSED(clss);
|
|
|
|
if (cd_values) {
|
|
cd_nelmts = ENVPTR->GetArrayLength(ENVONLY, cd_values);
|
|
if (cd_nelmts < 0)
|
|
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5Pmodify_filter_by_idx: cd_values array length < 0");
|
|
PIN_INT_ARRAY(ENVONLY, cd_values, c_cd_values, &isCopy,
|
|
"H5Pmodify_filter_by_idx: cd_values not pinned");
|
|
}
|
|
|
|
p.type = H5Z_PARAMS_CDVALUES;
|
|
p.u.raw.cd_nelmts = (size_t)cd_nelmts;
|
|
p.u.raw.cd_values = (const unsigned *)c_cd_values;
|
|
|
|
if ((status = H5Pmodify_filter_by_idx((hid_t)plist_id, (unsigned)filter_idx, (unsigned)flags, &p)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
done:
|
|
if (c_cd_values)
|
|
UNPIN_INT_ARRAY(ENVONLY, cd_values, c_cd_values, JNI_ABORT);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pmodify_1filter_1by_1idx_1raw */
|
|
|
|
/*
|
|
* Class: hdf_hdf5lib_H5
|
|
* Method: H5Pget_filter_params_by_idx
|
|
* Signature: (JI[Ljava/lang/String;)I
|
|
*/
|
|
JNIEXPORT jint JNICALL
|
|
Java_hdf_hdf5lib_H5_H5Pget_1filter_1params_1by_1idx(JNIEnv *env, jclass clss, jlong plist_id, jint idx,
|
|
jobjectArray params)
|
|
{
|
|
jstring str;
|
|
char *buf = NULL;
|
|
size_t plen = 0;
|
|
herr_t status = FAIL;
|
|
|
|
UNUSED(clss);
|
|
|
|
/* Query the exact length first (buf == NULL), matching the H5Iget_name JNI idiom,
|
|
* so the buffer below is sized to fit the stored string without truncation. */
|
|
if ((status = H5Pget_filter_params_by_idx((hid_t)plist_id, (unsigned)idx, NULL, 0, &plen)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
|
|
if (NULL == (buf = (char *)malloc(plen + 1)))
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_filter_params_by_idx: malloc failed");
|
|
|
|
if (plen > 0) {
|
|
/* Populate the exact-size buffer. */
|
|
if ((status = H5Pget_filter_params_by_idx((hid_t)plist_id, (unsigned)idx, buf, plen + 1, &plen)) < 0)
|
|
H5_LIBRARY_ERROR(ENVONLY);
|
|
}
|
|
buf[plen] = '\0';
|
|
|
|
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, buf))) {
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_TRUE);
|
|
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5Pget_filter_params_by_idx: could not create string");
|
|
}
|
|
|
|
ENVPTR->SetObjectArrayElement(ENVONLY, params, 0, str);
|
|
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
|
|
|
|
done:
|
|
if (buf)
|
|
free(buf);
|
|
|
|
return (jint)status;
|
|
} /* end Java_hdf_hdf5lib_H5_H5Pget_1filter_1params_1by_1idx */
|
|
|
|
#ifdef __cplusplus
|
|
} /* end extern "C" */
|
|
#endif /* __cplusplus */
|