mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-25 04:09:44 +03:00
FFM build requires Java 25, Jextract 25. Generates FFM bindings during configure. JNI is default when the requirements are not met or can be forced. Presets added for maven and FFM - JNI is default selection. Enhanced Maven options will work with either JNI or FFM New Workflows for testing and maven uploads. Extensive documentation changes for java.
1394 lines
43 KiB
C
1394 lines
43 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 */
|
|
|
|
#ifdef __cplusplus
|
|
} /* end extern "C" */
|
|
#endif /* __cplusplus */
|