awips2/nativeLib/rary.cots.hdf5/native/hdf5lib/h5pImp.c
root 9f19e3f712 Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: 64fa9254b946eae7e61bbc3f513b7c3696c4f54f
2012-01-06 08:55:05 -06:00

2806 lines
75 KiB
C
Executable file

/****************************************************************************
* NCSA HDF *
* National Comptational Science Alliance *
* University of Illinois at Urbana-Champaign *
* 605 E. Springfield, Champaign IL 61820 *
* *
* For conditions of distribution and use, see the accompanying *
* hdf-java/COPYING file. *
* *
****************************************************************************/
/*
* This code is the C-interface called by Java programs to access the
* Property List API Functions of the HDF5 library.
*
* Each routine wraps a single HDF entry point, generally with the
* analogous arguments and return codes.
*
* For details of the HDF libraries, see the HDF Documentation at:
* http://hdf.ncsa.uiuc.edu/HDF5/doc/
*
*/
#ifdef __cplusplus
extern "C" {
#endif
#include "hdf5.h"
#include <jni.h>
#include <stdlib.h>
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE (!FALSE)
#endif
#ifdef __cplusplus
#define ENVPTR (env)
#define ENVPAR
#else
#define ENVPTR (*env)
#define ENVPAR env,
#endif
extern jboolean h5outOfMemory( JNIEnv *env, char *functName);
extern jboolean h5JNIFatalError( JNIEnv *env, char *functName);
extern jboolean h5nullArgument( JNIEnv *env, char *functName);
extern jboolean h5libraryError( JNIEnv *env );
extern jboolean h5badArgument( JNIEnv *env, char *functName);
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pcreate
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5__1H5Pcreate
(JNIEnv *env, jclass clss, jint type)
{
hid_t retVal = -1;
retVal = H5Pcreate((hid_t)type );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pclose
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5__1H5Pclose
(JNIEnv *env, jclass clss, jint plist)
{
herr_t retVal = 0;
if (plist > 0)
retVal = H5Pclose((hid_t)plist );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_class
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1class
(JNIEnv *env, jclass clss, jint plist)
{
hid_t retVal = H5P_NO_CLASS;
retVal = H5Pget_class((hid_t) plist );
if (retVal == H5P_NO_CLASS) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pcopy
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5__1H5Pcopy
(JNIEnv *env, jclass clss, jint plist)
{
hid_t retVal = -1;
retVal = H5Pcopy((hid_t)plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_version
* Signature: (I[I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1version
(JNIEnv *env, jclass clss, jint plist, jintArray version_info)
{
herr_t status;
jint *theArray;
jboolean isCopy;
if (version_info == NULL) {
h5nullArgument( env, "H5Pget_version: version_info input array is NULL");
return -1;
}
if (ENVPTR->GetArrayLength(ENVPAR version_info) < 4) {
h5badArgument( env, "H5Pget_version: version_info input array < 4");
return -1;
}
theArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR version_info,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_version: version_info not pinned");
return -1;
}
status = H5Pget_version((hid_t)plist, (unsigned *)&(theArray[0]),
(unsigned *)&(theArray[1]), (unsigned *)&(theArray[2]), (unsigned *)&(theArray[3]));
if (status < 0) {
ENVPTR->ReleaseIntArrayElements(ENVPAR version_info,theArray,JNI_ABORT);
h5libraryError(env);
} else {
ENVPTR->ReleaseIntArrayElements(ENVPAR version_info,theArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_userblock
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1userblock
(JNIEnv *env, jclass clss, jint plist, jlong size)
{
long sz;
herr_t retVal = -1;
sz = (long)size;
retVal = H5Pset_userblock((hid_t)plist, (hsize_t)sz );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_userblock
* Signature: (I[J)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1userblock
(JNIEnv *env, jclass clss, jint plist, jlongArray size)
{
herr_t status;
jlong *theArray;
jboolean isCopy;
hsize_t s;
if (size == NULL) {
/* exception ? */
h5nullArgument( env, "H5Pget_userblock: size is NULL");
return -1;
}
theArray = (jlong *)ENVPTR->GetLongArrayElements(ENVPAR size,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_userblock: size not pinned");
return -1;
}
status = H5Pget_userblock((hid_t)plist, &s);
if (status < 0) {
ENVPTR->ReleaseLongArrayElements(ENVPAR size,theArray,JNI_ABORT);
h5libraryError(env);
} else {
theArray[0] = s;
ENVPTR->ReleaseLongArrayElements(ENVPAR size,theArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_sizes
* Signature: (III)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1sizes
(JNIEnv *env, jclass clss, jint plist, jint sizeof_addr, jint sizeof_size)
{
herr_t retVal = -1;
retVal = H5Pset_sizes((hid_t)plist, (size_t)sizeof_addr, (size_t)sizeof_size);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_sizes
* Signature: (I[I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1sizes
(JNIEnv *env, jclass clss, jint plist, jintArray size)
{
herr_t status;
jint *theArray;
jboolean isCopy;
size_t ss;
size_t sa;
if (size == NULL) {
h5nullArgument( env, "H5Pget_sizes: size is NULL");
return -1;
}
if (ENVPTR->GetArrayLength(ENVPAR size) < 2) {
h5badArgument( env, "H5Pget_sizes: size input array < 2 elements");
return -1;
}
theArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR size,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_sizes: size not pinned");
return -1;
}
status = H5Pget_sizes((hid_t)plist, &sa, &ss);
if (status < 0) {
ENVPTR->ReleaseIntArrayElements(ENVPAR size,theArray,JNI_ABORT);
h5libraryError(env);
} else {
theArray[0] = sa;
theArray[1] = ss;
ENVPTR->ReleaseIntArrayElements(ENVPAR size,theArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_sym_k
* Signature: (III)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1sym_1k
(JNIEnv *env, jclass clss, jint plist, jint ik, jint lk)
{
herr_t retVal = -1;
retVal = H5Pset_sym_k((hid_t)plist, (int)ik, (int)lk);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_sym_k
* Signature: (I[I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1sym_1k
(JNIEnv *env, jclass clss, jint plist, jintArray size)
{
herr_t status;
jint *theArray;
jboolean isCopy;
if (size == NULL) {
h5nullArgument( env, "H5Pget_sym_k: size is NULL");
return -1;
}
if (ENVPTR->GetArrayLength(ENVPAR size) < 2) {
h5badArgument( env, "H5Pget_sym_k: size < 2 elements");
return -1;
}
theArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR size,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_sym_k: size not pinned");
return -1;
}
status = H5Pget_sym_k((hid_t)plist, (unsigned *)&(theArray[0]), (unsigned *)&(theArray[1]));
if (status < 0) {
ENVPTR->ReleaseIntArrayElements(ENVPAR size,theArray,JNI_ABORT);
h5libraryError(env);
} else {
ENVPTR->ReleaseIntArrayElements(ENVPAR size,theArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_istore_k
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1istore_1k
(JNIEnv *env, jclass clss, jint plist, jint ik)
{
herr_t retVal = -1;
retVal = H5Pset_istore_k((hid_t)plist, (int)ik );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_istore_k
* Signature: (I[I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1istore_1k
(JNIEnv *env, jclass clss, jint plist, jintArray ik)
{
herr_t status;
jint *theArray;
jboolean isCopy;
if (ik == NULL) {
h5nullArgument( env, "H5Pget_store_k: ik is NULL");
return -1;
}
theArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR ik,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_store_k: size not pinned");
return -1;
}
status = H5Pget_istore_k((hid_t)plist, (unsigned *)&(theArray[0]));
if (status < 0) {
ENVPTR->ReleaseIntArrayElements(ENVPAR ik,theArray,JNI_ABORT);
h5libraryError(env);
} else {
ENVPTR->ReleaseIntArrayElements(ENVPAR ik,theArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_layout
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1layout
(JNIEnv *env, jclass clss, jint plist, jint layout)
{
herr_t retVal = -1;
retVal = H5Pset_layout((hid_t)plist, (H5D_layout_t)layout );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_layout
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1layout
(JNIEnv *env, jclass clss, jint plist)
{
H5D_layout_t retVal = H5D_LAYOUT_ERROR;
retVal = H5Pget_layout((hid_t)plist);
if (retVal == H5D_LAYOUT_ERROR) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_chunk
* Signature: (II[B)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1chunk
(JNIEnv *env, jclass clss, jint plist, jint ndims, jbyteArray dim)
{
herr_t status;
jbyte *theArray;
jboolean isCopy;
hsize_t *da;
int i;
hsize_t *lp;
jlong *jlp;
int rank;
if (dim == NULL) {
h5nullArgument( env, "H5Pset_chunk: dim array is NULL");
return -1;
}
i = ENVPTR->GetArrayLength(ENVPAR dim);
rank = i / sizeof(jlong);
if (rank < ndims) {
h5badArgument( env, "H5Pset_chunk: dims array < ndims");
return -1;
}
theArray = (jbyte *)ENVPTR->GetByteArrayElements(ENVPAR dim,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pset_chunk: dim array not pinned");
return -1;
}
da = lp = (hsize_t *)malloc(rank * sizeof(hsize_t));
if (da == NULL) {
ENVPTR->ReleaseByteArrayElements(ENVPAR dim,theArray,JNI_ABORT);
h5JNIFatalError(env, "H5Pset_chunk: dims not converted to hsize_t");
return -1;
}
jlp = (jlong *)theArray;
for (i = 0; i < rank; i++) {
*lp = (hsize_t)*jlp;
lp++;
jlp++;
}
status = H5Pset_chunk((hid_t)plist, (int)ndims, da);
ENVPTR->ReleaseByteArrayElements(ENVPAR dim,theArray,0);
free(da);
if (status < 0) {
h5libraryError(env);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_chunk
* Signature: (II[J)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1chunk
(JNIEnv *env, jclass clss, jint plist, jint max_ndims, jlongArray dims)
{
herr_t status;
jlong *theArray;
jboolean isCopy;
hsize_t *da;
int i;
if (dims == NULL) {
h5nullArgument( env, "H5Pget_chunk: dims is NULL");
return -1;
}
if (ENVPTR->GetArrayLength(ENVPAR dims) < max_ndims) {
h5badArgument( env, "H5Pget_chunk: dims array < max_ndims");
return -1;
}
theArray = (jlong *)ENVPTR->GetLongArrayElements(ENVPAR dims,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_chunk: input dims not pinned");
return -1;
}
da = (hsize_t *)malloc( max_ndims * sizeof(hsize_t));
if (da == NULL) {
ENVPTR->ReleaseLongArrayElements(ENVPAR dims, theArray,JNI_ABORT);
h5JNIFatalError(env, "H5Pget_chunk: dims not converted to hsize_t");
return -1;
}
status = H5Pget_chunk((hid_t)plist, (int)max_ndims, da);
if (status < 0) {
ENVPTR->ReleaseLongArrayElements(ENVPAR dims, theArray,JNI_ABORT);
free (da);
h5libraryError(env);
} else {
for (i= 0; i < max_ndims; i++) {
theArray[i] = da[i];
}
free (da);
ENVPTR->ReleaseLongArrayElements(ENVPAR dims, theArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_alignment
* Signature: (IJJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1alignment
(JNIEnv *env, jclass clss, jint plist, jlong threshold, jlong alignment)
{
long thr;
long align;
herr_t retVal = -1;
thr = (long)threshold;
align = (long)alignment;
retVal = H5Pset_alignment((hid_t)plist, (hsize_t)thr, (hsize_t)align);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_alignment
* Signature: (I[J)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1alignment
(JNIEnv *env, jclass clss, jint plist, jlongArray alignment)
{
herr_t status;
jlong *theArray;
jboolean isCopy;
hsize_t t;
hsize_t a;
if (alignment == NULL) {
h5nullArgument( env, "H5Pget_alignment: input alignment is NULL");
return -1;
}
if (ENVPTR->GetArrayLength(ENVPAR alignment) < 2) {
h5badArgument( env, "H5Pget_alignment: allingment input array < 2");
return -1;
}
theArray = (jlong *)ENVPTR->GetLongArrayElements(ENVPAR alignment,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_alignment: input array not pinned");
return -1;
}
status = H5Pget_alignment((hid_t)plist, &t, &a);
if (status < 0) {
ENVPTR->ReleaseLongArrayElements(ENVPAR alignment, theArray,JNI_ABORT);
h5libraryError(env);
} else {
theArray[0] = t;
theArray[1] = a;
ENVPTR->ReleaseLongArrayElements(ENVPAR alignment, theArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_external
* Signature: (ILjava/lang/String;JJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1external
(JNIEnv *env, jclass clss, jint plist, jstring name, jlong offset, jlong size)
{
herr_t status;
char* file;
jboolean isCopy;
long off;
long sz;
off = (long)offset;
sz = (long)size;
if (name == NULL) {
h5nullArgument( env, "H5Pset_external: name is NULL");
return -1;
}
file = (char *)ENVPTR->GetStringUTFChars(ENVPAR name,&isCopy);
if (file == NULL) {
h5JNIFatalError( env, "H5Pset_external: name not pinned");
return -1;
}
status = H5Pset_external((hid_t)plist, file, (off_t)off, (hsize_t)sz);
ENVPTR->ReleaseStringUTFChars(ENVPAR name,file);
if (status < 0) {
h5libraryError(env);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_external_count
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1external_1count
(JNIEnv *env, jclass clss, jint plist)
{
int retVal = -1;
retVal = H5Pget_external_count((hid_t)plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_external
* Signature: (III[Ljava/lang/String;[J[J)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1external
(JNIEnv *env, jclass clss, jint plist, jint idx, jint name_size,
jobjectArray name, jlongArray size)
{
herr_t status;
jlong *theArray;
jboolean isCopy;
char *file;
jstring str;
off_t o;
hsize_t s;
if (name_size < 0) {
h5badArgument( env, "H5Pget_external: name_size < 0");
return -1;
}
else if (name_size == 0) {
file = NULL;
}
else {
file = (char *)malloc(sizeof(char)*name_size);
}
if (size != NULL) {
if (ENVPTR->GetArrayLength(ENVPAR size) < 2) {
free(file);
h5badArgument( env, "H5Pget_external: size input array < 2");
return -1;
}
theArray = (jlong *)ENVPTR->GetLongArrayElements(ENVPAR size,&isCopy);
if (theArray == NULL) {
free(file);
h5JNIFatalError( env, "H5Pget_external: size array not pinned");
return -1;
}
}
status = H5Pget_external((hid_t) plist, (int)idx, (size_t)name_size,
file, (off_t *)&o, (hsize_t *)&s);
if (status < 0) {
if (size != NULL) {
ENVPTR->ReleaseLongArrayElements(ENVPAR size,theArray,JNI_ABORT);
}
free(file);
h5libraryError(env);
return -1;
}
if (size != NULL) {
theArray[0] = o;
theArray[1] = s;
ENVPTR->ReleaseLongArrayElements(ENVPAR size,theArray,0);
}
if (file != NULL) {
/* NewStringUTF may throw OutOfMemoryError */
str = ENVPTR->NewStringUTF(ENVPAR file);
if (str == NULL) {
free(file);
h5JNIFatalError( env, "H5Pget_external: return array not created");
return -1;
}
/* SetObjectArrayElement may raise exceptions */
ENVPTR->SetObjectArrayElement(ENVPAR name,0,(jobject)str);
free(file);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_fill_value
* Signature: (II[B)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1fill_1value
(JNIEnv *env, jclass clss, jint plist_id, jint type_id, jbyteArray value)
{
/*
unimplemented( env, "H5Pset_fill_value: not implemented yet");
return -1;
*/
jint status;
jbyte *byteP;
jboolean isCopy;
byteP = ENVPTR->GetByteArrayElements(ENVPAR value,&isCopy);
status = H5Pset_fill_value((hid_t)plist_id, (hid_t)type_id, byteP);
ENVPTR->ReleaseByteArrayElements(ENVPAR value,byteP,JNI_ABORT);
return status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_fill_value
* Signature: (II[B)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1fill_1value
(JNIEnv *env, jclass clss, jint plist_id, jint type_id, jbyteArray value)
{
jint status;
jbyte *byteP;
jboolean isCopy;
byteP = ENVPTR->GetByteArrayElements(ENVPAR value,&isCopy);
status = H5Pget_fill_value((hid_t)plist_id, (hid_t)type_id, byteP);
if (status < 0)
ENVPTR->ReleaseByteArrayElements(ENVPAR value,byteP,JNI_ABORT);
else
ENVPTR->ReleaseByteArrayElements(ENVPAR value,byteP,0);
return status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_filter
* Signature: (IIII[I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1filter
(JNIEnv *env, jclass clss, jint plist, jint filter, jint flags,
jint cd_nelmts, jintArray cd_values)
{
herr_t status;
jint *theArray;
jboolean isCopy;
if (cd_values == NULL)
status = H5Pset_filter((hid_t)plist, (H5Z_filter_t)filter,
(unsigned int)flags, (size_t)cd_nelmts, NULL);
else
{
theArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR cd_values,&isCopy);
if (theArray == NULL) {
h5JNIFatalError(env, "H5Pset_filter: input array not pinned");
return -1;
}
status = H5Pset_filter((hid_t)plist, (H5Z_filter_t)filter,
(unsigned int)flags, (size_t)cd_nelmts, (const unsigned int *)theArray);
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_values,theArray,JNI_ABORT);
}
if (status < 0) {
h5libraryError(env);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_nfilters
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1nfilters
(JNIEnv *env, jclass clss, jint plist)
{
int retVal = -1;
retVal = H5Pget_nfilters((hid_t)plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_filter
* Signature: (II[I[IILjava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1filter
(JNIEnv *env, jclass clss, jint plist, jint filter_number, jintArray flags,
jintArray cd_nelmts, jintArray cd_values, jint namelen, jobjectArray name)
{
herr_t status;
jint *flagsArray, *cd_nelmtsArray, *cd_valuesArray;
jboolean isCopy;
char *filter;
jstring str;
if (namelen <= 0) {
h5badArgument( env, "H5Pget_filter: namelen <= 0");
return -1;
}
if (flags == NULL) {
h5badArgument( env, "H5Pget_filter: flags is NULL");
return -1;
}
if (cd_nelmts == NULL) {
h5badArgument( env, "H5Pget_filter: cd_nelmts is NULL");
return -1;
}
if (cd_values == NULL) {
h5badArgument( env, "H5Pget_filter: cd_values is NULL");
return -1;
}
filter = (char *)malloc(sizeof(char)*namelen);
if (filter == NULL) {
h5outOfMemory( env, "H5Pget_filter: namelent malloc failed");
return -1;
}
flagsArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR flags,&isCopy);
if (flagsArray == NULL) {
free(filter);
h5JNIFatalError(env, "H5Pget_filter: flags array not pinned");
return -1;
}
cd_nelmtsArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR cd_nelmts,&isCopy);
if (cd_nelmtsArray == NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR flags,flagsArray,JNI_ABORT);
free(filter);
h5JNIFatalError(env, "H5Pget_filter: nelmts array not pinned");
return -1;
}
cd_valuesArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR cd_values,&isCopy);
if (cd_valuesArray == NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_nelmts,cd_nelmtsArray,JNI_ABORT);
ENVPTR->ReleaseIntArrayElements(ENVPAR flags,flagsArray,JNI_ABORT);
free(filter);
h5JNIFatalError(env, "H5Pget_filter: elmts array not pinned");
return -1;
}
{
/* direct cast (size_t *)cd_nelmtsArray fails on 64-bit environment, see bug #1369
status = H5Pget_filter((hid_t)plist, (int)filter_number, (unsigned int *)flagsArray,
(size_t *)cd_nelmtsArray, (unsigned int *)cd_valuesArray, (size_t)namelen, filter);
*/
int cd_nelmts_temp = *(cd_nelmtsArray);
size_t cd_nelmts_t = cd_nelmts_temp;
status = H5Pget_filter((hid_t)plist, (int)filter_number,
(unsigned int *)flagsArray, &cd_nelmts_t, (unsigned int *)cd_valuesArray,
(size_t)namelen, filter);
*cd_nelmtsArray = cd_nelmts_t;
}
if (status < 0)
{
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_values,cd_valuesArray,JNI_ABORT);
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_nelmts,cd_nelmtsArray,JNI_ABORT);
ENVPTR->ReleaseIntArrayElements(ENVPAR flags,flagsArray,JNI_ABORT);
free(filter);
h5libraryError(env);
return -1;
}
else
{
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_values,cd_valuesArray,0);
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_nelmts,cd_nelmtsArray,0);
ENVPTR->ReleaseIntArrayElements(ENVPAR flags,flagsArray,0);
/* NewStringUTF may throw OutOfMemoryError */
str = ENVPTR->NewStringUTF(ENVPAR filter);
if (str == NULL) {
free(filter);
h5JNIFatalError(env, "H5Pget_filter: return string not pinned");
return -1;
}
/* SetObjectArrayElement may throw exceptiosn */
ENVPTR->SetObjectArrayElement(ENVPAR name,0,(jobject)str);
}
free(filter);
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_driver
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1driver
(JNIEnv *env, jclass clss, jint plist)
{
hid_t retVal = -1;
retVal = H5Pget_driver((hid_t) plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
#ifdef removed
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_stdio
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1stdio
(JNIEnv *env, jclass clss, jint plist)
{
herr_t retVal = -1;
retVal = H5Pset_stdio((hid_t)plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_stdio
* Signature: (I)B
*/
JNIEXPORT jboolean JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1stdio
(JNIEnv *env, jclass clss, jint plist)
{
herr_t retValue;
retValue = H5Pget_stdio((hid_t)plist);
if (retValue >= 0) {
return JNI_TRUE;
} else {
return JNI_FALSE;
}
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_sec2
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1sec2
(JNIEnv *env, jclass clss, jint plist)
{
herr_t retVal = -1;
retVal = H5Pset_sec2((hid_t) plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_sec2
* Signature: (I)B
*/
JNIEXPORT jboolean JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1sec2
(JNIEnv *env, jclass clss, jint plist)
{
herr_t retValue;
retValue = H5Pget_sec2((hid_t)plist);
if (retValue >= 0) {
return JNI_TRUE;
} else {
return JNI_FALSE;
}
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_core
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1core
(JNIEnv *env, jclass clss, jint plist, jint increment)
{
herr_t retVal = -1;
retVal = H5Pset_core((hid_t)plist, (size_t)increment);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_core
* Signature: (I[I)B
*/
JNIEXPORT jboolean JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1core
(JNIEnv *env, jclass clss, jint plist, jintArray increment)
{
jboolean isCopy;
herr_t status;
jint *theArray = NULL;
if (increment != NULL) {
theArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR increment,&isCopy);
if (theArray == NULL) {
h5JNIFatalError(env, "H5Pget_core: input array not pinned");
return JNI_FALSE;
}
}
status = H5Pget_core((hid_t)plist, (size_t *)&(theArray[0]));
if (status < 0) {
ENVPTR->ReleaseIntArrayElements(ENVPAR increment,theArray,JNI_ABORT);
return JNI_FALSE;
} else {
ENVPTR->ReleaseIntArrayElements(ENVPAR increment,theArray,0);
return JNI_TRUE;
}
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_split
* Signature: (ILjava/lang/String;ILjava/lang/String;I)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1split
(JNIEnv *env, jclass clss, jint plist, jstring meta_ext, jint meta_plist,
jstring raw_ext, jint raw_plist)
{
herr_t status;
char *meta, *raw;
jboolean isCopy;
if (meta_ext == NULL) {
meta = (char *)NULL;
} else {
meta = (char *)ENVPTR->GetStringUTFChars(ENVPAR meta_ext,&isCopy);
if (meta == NULL) {
h5JNIFatalError(env, "H5Pset_split: meta not pinned");
return -1;
}
}
if (raw_ext == NULL) {
raw = (char *)NULL;
} else {
raw = (char *)ENVPTR->GetStringUTFChars(ENVPAR raw_ext,&isCopy);
if (raw == NULL) {
ENVPTR->ReleaseStringUTFChars(ENVPAR meta_ext,meta);
h5JNIFatalError(env, "H5Pset_split: raw not pinned");
return -1;
}
}
status = H5Pset_split((hid_t)plist, meta, (hid_t)meta_plist, raw, (hid_t)raw_plist);
ENVPTR->ReleaseStringUTFChars(ENVPAR raw_ext,raw);
ENVPTR->ReleaseStringUTFChars(ENVPAR meta_ext,meta);
if (status < 0) {
h5libraryError(env);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_split
* Signature: (II[Ljava/lang/String;[II[Ljava/lang/String;[I)B
*/
JNIEXPORT jboolean JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1split
(JNIEnv *env, jclass clss, jint plist, jint meta_ext_size, jobjectArray meta_ext,
jintArray meta_properties, jint raw_ext_size, jobjectArray raw_ext,
jintArray raw_properties)
{
jint status;
jint *metaArray, *rawArray;
jboolean isCopy;
char *meta, *raw;
jstring meta_str, raw_str;
if (meta_ext == NULL) {
metaArray = NULL;
} else {
if (meta_ext_size <=0 ) {
h5badArgument( env, "H5Pget_split: meta_ext_size <=0");
return -1;
}
meta = (char *)malloc(sizeof(char)*meta_ext_size);
if (meta == NULL) {
h5JNIFatalError(env, "H5Pget_split: meta not pinned");
return -1;
}
}
if (raw_ext == NULL ) {
rawArray = NULL;
} else {
if (raw_ext_size <=0 ) {
h5badArgument( env, "H5Pget_split: raw_ext_size <=0");
return -1;
}
raw = (char *)malloc(sizeof(char)*raw_ext_size);
if (raw == NULL) {
free(meta);
h5JNIFatalError(env, "H5Pget_split: raw not pinned");
return -1;
}
}
metaArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR meta_properties,&isCopy);
if (metaArray == NULL) {
free(raw);
free(meta);
h5JNIFatalError(env, "H5Pget_split: metaArray not pinned");
return -1;
}
rawArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR raw_properties,&isCopy);
if (rawArray == NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR meta_properties,metaArray,JNI_ABORT);
free(raw);
free(meta);
h5JNIFatalError(env, "H5Pget_split: rawArray not pinned");
return -1;
}
status = H5Pget_split((hid_t)plist, (size_t)meta_ext_size, meta,
(hid_t *)metaArray, (size_t)raw_ext_size, raw, (hid_t *)rawArray);
if (status < 0)
{
ENVPTR->ReleaseIntArrayElements(ENVPAR raw_properties,rawArray,JNI_ABORT);
ENVPTR->ReleaseIntArrayElements(ENVPAR meta_properties,metaArray,JNI_ABORT);
free(raw);
free(meta);
h5libraryError(env);
return -1;
}
ENVPTR->ReleaseIntArrayElements(ENVPAR raw_properties,rawArray,0);
ENVPTR->ReleaseIntArrayElements(ENVPAR meta_properties,metaArray,0);
/* NewStringUTF may throw OutOfMemoryError */
meta_str = ENVPTR->NewStringUTF(ENVPAR meta);
if (meta_str == NULL) {
free(raw);
free(meta);
h5JNIFatalError(env, "H5Pget_split: return meta_str not pinned");
return -1;
}
/* SetObjectArrayElement may throw exceptions */
ENVPTR->SetObjectArrayElement(ENVPAR meta_ext,0,(jobject)meta_str);
free(meta);
/* NewStringUTF may throw OutOfMemoryError */
raw_str = ENVPTR->NewStringUTF(ENVPAR raw);
if (meta_str == NULL) {
free(raw);
h5JNIFatalError(env, "H5Pget_split: return raw_str not pinned");
return -1;
}
/* SetObjectArrayElement may throw exceptions */
ENVPTR->SetObjectArrayElement(ENVPAR raw_ext,0,(jobject)raw_str);
free(raw);
return (jint)status;
}
#endif
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_cache
* Signature: (IIID)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1cache
(JNIEnv *env, jclass clss, jint plist, jint mdc_nelmts, jint rdcc_nelmts,
jint rdcc_nbytes, jdouble rdcc_w0)
{
herr_t retVal = -1;
retVal = H5Pset_cache((hid_t)plist, (int)mdc_nelmts, (int)rdcc_nelmts,
(size_t)rdcc_nbytes, (double) rdcc_w0);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_cache
* Signature: (I[I[I[D)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1cache
(JNIEnv *env, jclass clss, jint plist, jintArray mdc_nelmts,
jintArray rdcc_nelmts, jintArray rdcc_nbytes, jdoubleArray rdcc_w0)
{
herr_t status;
jint mode;
jdouble *w0Array;
jint *mdc_nelmtsArray, *rdcc_nelmtsArray, *nbytesArray;
jboolean isCopy;
if (mdc_nelmts == NULL) {
h5nullArgument( env, "H5Pget_gache: mdc_nelmts is NULL");
return -1;
}
mdc_nelmtsArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR mdc_nelmts,&isCopy);
if (mdc_nelmtsArray == NULL) {
h5JNIFatalError(env, "H5Pget_cache: mdc_nelmts array not pinned");
return -1;
}
if (rdcc_w0 == NULL) {
w0Array = (jdouble *)NULL;
} else {
w0Array = (jdouble *)ENVPTR->GetDoubleArrayElements(ENVPAR rdcc_w0,&isCopy);
if (w0Array == NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR mdc_nelmts,mdc_nelmtsArray,JNI_ABORT);
h5JNIFatalError(env, "H5Pget_cache: w0_array array not pinned");
return -1;
}
}
if (rdcc_nelmts == NULL) {
rdcc_nelmtsArray = (jint *) NULL;
} else {
rdcc_nelmtsArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR rdcc_nelmts,&isCopy);
if (rdcc_nelmtsArray == NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR mdc_nelmts,mdc_nelmtsArray,JNI_ABORT);
/* exception -- out of memory */
if (w0Array != NULL) {
ENVPTR->ReleaseDoubleArrayElements(ENVPAR rdcc_w0,w0Array,JNI_ABORT);
}
h5JNIFatalError(env, "H5Pget_cache: rdcc_nelmts array not pinned");
return -1;
}
}
if (rdcc_nbytes == NULL) {
nbytesArray = (jint *) NULL;
} else {
nbytesArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR rdcc_nbytes,&isCopy);
if (nbytesArray == NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR mdc_nelmts,mdc_nelmtsArray,JNI_ABORT);
if (w0Array != NULL) {
ENVPTR->ReleaseDoubleArrayElements(ENVPAR rdcc_w0,w0Array,JNI_ABORT);
}
if (rdcc_nelmtsArray != NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR rdcc_nelmts,rdcc_nelmtsArray,JNI_ABORT);
}
h5JNIFatalError(env, "H5Pget_cache: nbytesArray array not pinned");
return -1;
}
}
status = H5Pget_cache((hid_t)plist, (int *)mdc_nelmtsArray, (size_t *)rdcc_nelmtsArray, (size_t *)nbytesArray,
(double *)w0Array);
if (status < 0) {
mode = JNI_ABORT;
} else {
mode = 0; /* commit and free */
}
ENVPTR->ReleaseIntArrayElements(ENVPAR mdc_nelmts,mdc_nelmtsArray,mode);
if (rdcc_nelmtsArray != NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR rdcc_nelmts,rdcc_nelmtsArray,mode);
}
if (nbytesArray != NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR rdcc_nbytes,nbytesArray,mode);
}
if (w0Array != NULL) {
ENVPTR->ReleaseDoubleArrayElements(ENVPAR rdcc_w0,w0Array,mode);
}
if (status < 0) {
h5libraryError(env);
}
return (jint)status;
}
#ifdef notdef
/* DON'T IMPLEMENT THIS!!! */
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_buffer
* Signature: (II[B[B)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1buffer
(JNIEnv *env, jclass clss, jint plist, jint size, jbyteArray tconv, jbyteArray bkg)
{
jint status;
jbyte *tconvP, *bkgP;
jboolean isCopy;
if (tconv == NULL)
tconvP = (jbyte *)NULL;
else
tconvP = ENVPTR->GetByteArrayElements(ENVPAR tconv,&isCopy);
if (bkg == NULL)
bkgP = (jbyte *)NULL;
else
bkgP = ENVPTR->GetByteArrayElements(ENVPAR bkg,&isCopy);
status = H5Pset_buffer((hid_t)plist, (size_t)size, tconvP, bkgP);
if (tconv != NULL)
ENVPTR->ReleaseByteArrayElements(ENVPAR tconv,tconvP,0);
if (bkg != NULL)
ENVPTR->ReleaseByteArrayElements(ENVPAR bkg,bkgP,0);
return status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_buffer
* Signature: (I[B[B)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1buffer
(JNIEnv *env, jclass clss, jint plist, jbyteArray tconv, jbyteArray bkg)
{
jint status;
jbyte *tconvP, *bkgP;
jboolean isCopy;
tconvP = ENVPTR->GetByteArrayElements(ENVPAR tconv,&isCopy);
bkgP = ENVPTR->GetByteArrayElements(ENVPAR bkg,&isCopy);
status = H5Pget_buffer((hid_t)plist, tconvP, bkgP);
if (status < 0)
{
ENVPTR->ReleaseByteArrayElements(ENVPAR tconv,tconvP,JNI_ABORT);
ENVPTR->ReleaseByteArrayElements(ENVPAR bkg,bkgP,JNI_ABORT);
}
else
{
ENVPTR->ReleaseByteArrayElements(ENVPAR tconv,tconvP,0);
ENVPTR->ReleaseByteArrayElements(ENVPAR bkg,bkgP,0);
}
return status;
}
#endif
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_preserve
* Signature: (IB)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1preserve
(JNIEnv *env, jclass clss, jint plist, jboolean status)
{
hbool_t st;
herr_t retVal = -1;
if (status == JNI_TRUE) {
st = TRUE;
} else if (status == JNI_FALSE) {
st = FALSE;
} else {
/* exception -- bad argument */
h5badArgument( env, "H5Pset_preserve: status not TRUE or FALSE");
return -1;
}
retVal = H5Pset_preserve((hid_t)plist, (hbool_t)st);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_preserve
* Signature: (I)B
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1preserve
(JNIEnv *env, jclass clss, jint plist)
{
herr_t retValue;
retValue = H5Pget_preserve((hid_t)plist);
if (retValue < 0) {
h5libraryError(env);
return JNI_FALSE;
}
return (jint)retValue;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_deflate
* Signature: (II)B
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1deflate
(JNIEnv *env, jclass clss, jint plist, jint level)
{
herr_t retValue;
retValue = H5Pset_deflate((hid_t)plist, (int)level);
if (retValue < 0) {
h5libraryError(env);
return JNI_FALSE;
}
return (jint)retValue;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_gc_references
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1gc_1references
(JNIEnv *env, jclass clss, jint fapl_id, jboolean gc_ref)
{
herr_t retVal;
unsigned gc_ref_val;
if (gc_ref == JNI_TRUE) {
gc_ref_val = 1;
} else {
gc_ref_val = 0;
}
retVal = H5Pset_gc_references((hid_t)fapl_id, gc_ref_val);
if (retVal < 0) {
h5libraryError(env);
return -1;
}
return (jint)retVal;
}
#ifdef remove
#ifdef USE_H5_1_2_1
#define GET_GC H5Pget_gc_reference
#else
#define GET_GC H5Pget_gc_references
#endif
#endif
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_gc_references
* Signature: (I[Z)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1gc_1references
(JNIEnv *env, jclass clss, jint fapl_id, jbooleanArray gc_ref)
{
herr_t status;
jboolean *theArray;
jboolean isCopy;
unsigned gc_ref_val = 0;
if (gc_ref == NULL) {
h5nullArgument( env, "H5Pget_gc_references: gc_ref input array is NULL");
return -1;
}
theArray = (jboolean *)ENVPTR->GetBooleanArrayElements(ENVPAR gc_ref,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_gc_references: gc_ref not pinned");
return -1;
}
status = H5Pget_gc_references((hid_t)fapl_id, (unsigned *)&gc_ref_val);
#ifdef removed
status = GET_GC((hid_t)fapl_id, (unsigned *)&gc_ref_val);
#endif
if (status < 0) {
ENVPTR->ReleaseBooleanArrayElements(ENVPAR gc_ref,theArray,JNI_ABORT);
h5libraryError(env);
} else {
if (gc_ref_val == 1) {
theArray[0] = JNI_TRUE;
} else {
theArray[0] = JNI_FALSE;
}
ENVPTR->ReleaseBooleanArrayElements(ENVPAR gc_ref,theArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_btree_ratios
* Signature: (IDDD)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1btree_1ratios
(JNIEnv *env, jclass clss, jint plist_id, jdouble left, jdouble middle, jdouble right)
{
herr_t status;
status = H5Pset_btree_ratios((hid_t)plist_id, (double)left,(double)middle, (double)right);
if (status < 0) {
h5libraryError(env);
return -1;
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_btree_ratios
* Signature: (I[D[D[D)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1btree_1ratios
(JNIEnv *env, jclass clss, jint plist_id, jdoubleArray left, jdoubleArray middle, jdoubleArray right)
{
herr_t status;
jdouble *leftP, *middleP, *rightP;
jboolean isCopy;
if (left == NULL) {
h5nullArgument( env, "H5Pget_btree_ratios: left input array is NULL");
return -1;
}
if (middle == NULL) {
h5nullArgument( env, "H5Pget_btree_ratios: middle input array is NULL");
return -1;
}
if (right == NULL) {
h5nullArgument( env, "H5Pget_btree_ratios: right input array is NULL");
return -1;
}
leftP = (jdouble *)ENVPTR->GetDoubleArrayElements(ENVPAR left,&isCopy);
if (leftP == NULL) {
h5JNIFatalError( env, "H5Pget_btree_ratios: left not pinned");
return -1;
}
middleP = (jdouble *)ENVPTR->GetDoubleArrayElements(ENVPAR middle,&isCopy);
if (middleP == NULL) {
ENVPTR->ReleaseDoubleArrayElements(ENVPAR left,leftP,JNI_ABORT);
h5JNIFatalError( env, "H5Pget_btree_ratios: middle not pinned");
return -1;
}
rightP = (jdouble *)ENVPTR->GetDoubleArrayElements(ENVPAR right,&isCopy);
if (rightP == NULL) {
ENVPTR->ReleaseDoubleArrayElements(ENVPAR left,leftP,JNI_ABORT);
ENVPTR->ReleaseDoubleArrayElements(ENVPAR middle,middleP,JNI_ABORT);
h5JNIFatalError( env, "H5Pget_btree_ratios: middle not pinned");
return -1;
}
status = H5Pget_btree_ratios((hid_t)plist_id, (double *)leftP,
(double *)middleP, (double *)rightP);
if (status < 0) {
ENVPTR->ReleaseDoubleArrayElements(ENVPAR left,leftP,JNI_ABORT);
ENVPTR->ReleaseDoubleArrayElements(ENVPAR middle,middleP,JNI_ABORT);
ENVPTR->ReleaseDoubleArrayElements(ENVPAR right,rightP,JNI_ABORT);
h5libraryError(env);
} else {
ENVPTR->ReleaseDoubleArrayElements(ENVPAR left,leftP,0);
ENVPTR->ReleaseDoubleArrayElements(ENVPAR middle,middleP,0);
ENVPTR->ReleaseDoubleArrayElements(ENVPAR right,rightP,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_small_data_block_size
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1small_1data_1block_1size
(JNIEnv *env, jclass clss, jint plist, jlong size)
{
long sz;
herr_t retVal = -1;
sz = (long)size;
retVal = H5Pset_small_data_block_size((hid_t)plist, (hsize_t)sz );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_small_data_block_size
* Signature: (I[J)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1small_1data_1block_1size
(JNIEnv *env, jclass clss, jint plist, jlongArray size)
{
herr_t status;
jlong *theArray;
jboolean isCopy;
hsize_t s;
if (size == NULL) {
/* exception ? */
h5nullArgument( env, "H5Pget_small_user_block_size: size is NULL");
return -1;
}
theArray = (jlong *)ENVPTR->GetLongArrayElements(ENVPAR size,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_userblock: size not pinned");
return -1;
}
status = H5Pget_small_data_block_size((hid_t)plist, &s);
if (status < 0) {
ENVPTR->ReleaseLongArrayElements(ENVPAR size,theArray,JNI_ABORT);
h5libraryError(env);
} else {
theArray[0] = s;
ENVPTR->ReleaseLongArrayElements(ENVPAR size,theArray,0);
}
return (jint)status;
}
/***************************************************************
* New APIs for HDF5.1.6 *
***************************************************************/
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time )
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1alloc_1time
(JNIEnv *env, jclass clss, jint plist, jint alloc_time)
{
herr_t retVal = -1;
retVal = H5Pset_alloc_time((hid_t)plist, (H5D_alloc_time_t)alloc_time );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time )
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1alloc_1time
(JNIEnv *env, jclass clss, jint plist, jintArray alloc_time)
{
herr_t retVal = -1;
jint *theArray;
jboolean isCopy;
H5D_alloc_time_t time;
if (alloc_time == NULL) {
/* exception ? */
h5nullArgument( env, "H5Pget_alloc_time: alloc_time is NULL");
return -1;
}
theArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR alloc_time,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_alloc_time: alloc_time not pinned");
return -1;
}
retVal = H5Pget_alloc_time((hid_t)plist, &time );
if (retVal < 0) {
ENVPTR->ReleaseIntArrayElements(ENVPAR alloc_time,theArray,JNI_ABORT);
h5libraryError(env);
} else {
theArray[0] = time;
ENVPTR->ReleaseIntArrayElements(ENVPAR alloc_time,theArray,0);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time )
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1fill_1time
(JNIEnv *env, jclass clss, jint plist, jint fill_time)
{
herr_t retVal = -1;
retVal = H5Pset_fill_time((hid_t)plist, (H5D_fill_time_t)fill_time );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time )
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1fill_1time
(JNIEnv *env, jclass clss, jint plist, jintArray fill_time)
{
herr_t retVal = -1;
jint *theArray;
jboolean isCopy;
H5D_fill_time_t time;
if (fill_time == NULL) {
/* exception ? */
h5nullArgument( env, "H5Pget_fill_time: fill_time is NULL");
return -1;
}
theArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR fill_time,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_fill_time: fill_time not pinned");
return -1;
}
retVal = H5Pget_fill_time((hid_t)plist, &time );
if (retVal < 0) {
ENVPTR->ReleaseIntArrayElements(ENVPAR fill_time,theArray,JNI_ABORT);
h5libraryError(env);
} else {
theArray[0] = time;
ENVPTR->ReleaseIntArrayElements(ENVPAR fill_time,theArray,0);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status )
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pfill_1value_1defined
(JNIEnv *env, jclass clss, jint plist, jintArray status)
{
herr_t retVal = -1;
jint *theArray;
jboolean isCopy;
H5D_fill_value_t value;
if (status == NULL) {
/* exception ? */
h5nullArgument( env, "H5Pfill_value_defined: status is NULL");
return -1;
}
theArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR status,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pfill_value_defined: status not pinned");
return -1;
}
retVal = H5Pfill_value_defined((hid_t)plist, &value );
if (retVal < 0) {
ENVPTR->ReleaseIntArrayElements(ENVPAR status,theArray,JNI_ABORT);
h5libraryError(env);
} else {
theArray[0] = value;
ENVPTR->ReleaseIntArrayElements(ENVPAR status,theArray,0);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_fletcher32(hid_t plist)
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1fletcher32
(JNIEnv *env, jclass clss, jint plist)
{
herr_t retVal = -1;
retVal = H5Pset_fletcher32((hid_t)plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_edc_check(hid_t plist, H5Z_EDC_t check)
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1edc_1check
(JNIEnv *env, jclass clss, jint plist, jint check)
{
herr_t retVal = -1;
retVal = H5Pset_edc_check((hid_t)plist, (H5Z_EDC_t)check );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_edc_check(hid_t plist)
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1edc_1check
(JNIEnv *env, jclass clss, jint plist)
{
H5Z_EDC_t retVal = (H5Z_EDC_t)-1;
retVal = H5Pget_edc_check((hid_t)plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_shuffle(hid_t plist_id)
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1shuffle
(JNIEnv *env, jclass clss, jint plist)
{
herr_t retVal = -1;
retVal = H5Pset_shuffle((hid_t)plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block)
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1szip
(JNIEnv *env, jclass clss, jint plist, jint options_mask, jint pixels_per_block)
{
herr_t retVal = -1;
retVal = H5Pset_szip((hid_t)plist, (unsigned int)options_mask, (unsigned int)pixels_per_block);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_hyper_vector_size(hid_t dxpl_id, size_t vector_size )
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1hyper_1vector_1size
(JNIEnv *env, jclass clss, jint plist, jlong vector_size)
{
herr_t retVal = -1;
retVal = H5Pset_hyper_vector_size((hid_t)plist, (size_t)vector_size);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_hyper_vector_size(hid_t dxpl_id, size_t *vector_size )
* Signature: (IJ)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1hyper_1vector_1size
(JNIEnv *env, jclass clss, jint plist, jlongArray vector_size)
{
herr_t retVal = -1;
jlong *theArray;
size_t size;
jboolean isCopy;
if (vector_size == NULL) {
/* exception ? */
h5nullArgument( env, "H5Pget_hyper_vector_size: vector_size is NULL");
return -1;
}
theArray = (jlong *)ENVPTR->GetLongArrayElements(ENVPAR vector_size,&isCopy);
if (theArray == NULL) {
h5JNIFatalError( env, "H5Pget_hyper_vector_size: vector_size not pinned");
return -1;
}
retVal = H5Pget_hyper_vector_size((hid_t)plist, &size);
if (retVal < 0) {
ENVPTR->ReleaseLongArrayElements(ENVPAR vector_size,theArray,JNI_ABORT);
h5libraryError(env);
} else {
theArray[0] = size;
ENVPTR->ReleaseLongArrayElements(ENVPAR vector_size,theArray,0);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pall_filters_avail(hid_t dcpl_id)
* Signature: (I)J
*/
JNIEXPORT jboolean JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pall_1filters_1avail
(JNIEnv *env, jclass clss, jint dcpl_id)
{
htri_t bval;
bval = H5Pall_filters_avail((hid_t)dcpl_id);
if (bval > 0) {
return JNI_TRUE;
} else if (bval == 0) {
return JNI_FALSE;
} else {
h5libraryError(env);
return JNI_FALSE;
}
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pmodify_filter(hid_t plist, H5Z_filter_t filter,
* unsigned int flags, size_t cd_nelmts, const unsigned int cd_values[] )
* Signature: (III[J)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pmodify_1filter
(JNIEnv *env, jclass clss, jint plist, jint filter, jint flags,
jlong cd_nelmts, jintArray cd_values)
{
herr_t status;
jint *cd_valuesP;
jboolean isCopy;
if (cd_values == NULL) {
h5nullArgument( env, "H5Pmodify_filter: cd_values is NULL");
return -1;
}
cd_valuesP = ENVPTR->GetIntArrayElements(ENVPAR cd_values,&isCopy);
if (cd_valuesP == NULL) {
h5JNIFatalError(env, "H5Pmodify_filter: cd_values not pinned");
return -1;
}
status = H5Pmodify_filter((hid_t)plist, (H5Z_filter_t)filter,(const unsigned int)flags,
(size_t)cd_nelmts, (unsigned int *)cd_valuesP);
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_values, cd_valuesP, 0);
if (status < 0) {
h5libraryError(env);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,
* unsigned int *flags, size_t *cd_nelmts, unsigned int cd_values[],
* size_t namelen, char *name[] )
* Signature: (III[J)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1filter_1by_1id
(JNIEnv *env, jclass clss, jint plist, jint filter, jintArray flags,
jlongArray cd_nelmts, jintArray cd_values, jlong namelen, jobjectArray name)
{
herr_t status;
int i=0;
jint *cd_valuesP, *flagsP;
jlong *cd_nelmsP;
jboolean isCopy;
size_t *nelmsP;
int rank;
long bs;
char *aName;
jstring str;
bs = (long)namelen;
if (bs <= 0) {
h5badArgument( env, "H5Pget_filter_by_id: namelen <= 0");
return -1;
}
if (flags == NULL) {
h5nullArgument( env, "H5Pget_filter_by_id: flags is NULL");
return -1;
}
if (cd_nelmts == NULL) {
h5nullArgument( env, "H5Pget_filter_by_id: cd_nelms is NULL");
return -1;
}
if (cd_values == NULL) {
h5nullArgument( env, "H5Pget_filter_by_id: cd_values is NULL");
return -1;
}
if (name == NULL) {
h5nullArgument( env, "H5Pget_filter_by_id: name is NULL");
return -1;
}
aName = (char*)malloc(sizeof(char)*bs);
if (aName == NULL) {
h5outOfMemory( env, "H5Pget_filter_by_id: malloc failed");
return -1;
}
flagsP = ENVPTR->GetIntArrayElements(ENVPAR flags,&isCopy);
if (flagsP == NULL) {
free(aName);
h5JNIFatalError(env, "H5Pget_filter_by_id: flags not pinned");
return -1;
}
cd_nelmsP = ENVPTR->GetLongArrayElements(ENVPAR cd_nelmts,&isCopy);
if (cd_nelmsP == NULL) {
free(aName);
h5JNIFatalError(env, "H5Pget_filter_by_id: cd_nelms not pinned");
return -1;
}
nelmsP = (size_t *)malloc( sizeof(size_t));
if (nelmsP == NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR flags,flagsP,JNI_ABORT);
ENVPTR->ReleaseLongArrayElements(ENVPAR cd_nelmts,cd_nelmsP,JNI_ABORT);
free(aName);
h5JNIFatalError(env, "H5Pget_filter_by_id: cd_nelmts array not converted to unsigned int.");
return -1;
}
cd_valuesP = ENVPTR->GetIntArrayElements(ENVPAR cd_values,&isCopy);
rank = ENVPTR->GetArrayLength(ENVPAR cd_values);
if (cd_valuesP == NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR flags,flagsP,JNI_ABORT);
ENVPTR->ReleaseLongArrayElements(ENVPAR cd_nelmts,cd_nelmsP,JNI_ABORT);
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_values,cd_valuesP,JNI_ABORT);
free(aName);
free(nelmsP);
h5JNIFatalError(env, "H5Pget_filter_by_id: cd_values array not converted to unsigned int.");
return -1;
}
status = H5Pget_filter_by_id( (hid_t)plist, (H5Z_filter_t)filter,
(unsigned int *)flagsP, (size_t *)nelmsP, (unsigned int *)cd_valuesP,
(size_t)namelen, (char *)aName);
if (status < 0) {
ENVPTR->ReleaseIntArrayElements(ENVPAR flags,flagsP,JNI_ABORT);
ENVPTR->ReleaseLongArrayElements(ENVPAR cd_nelmts,cd_nelmsP,JNI_ABORT);
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_values,cd_valuesP,JNI_ABORT);
h5libraryError(env);
} else {
cd_nelmsP[0] = nelmsP[0];
str = ENVPTR->NewStringUTF(ENVPAR aName);
ENVPTR->ReleaseIntArrayElements(ENVPAR flags,flagsP,0);
ENVPTR->ReleaseLongArrayElements(ENVPAR cd_nelmts,cd_nelmsP,0);
ENVPTR->ReleaseIntArrayElements(ENVPAR cd_values,cd_valuesP,0);
}
free(aName);
free(nelmsP);
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset_fclose_degree
* Signature: (IJI)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1fclose_1degree
(JNIEnv *env, jclass clss, jint plist, jint fc_degree)
{
herr_t retVal = -1;
retVal = H5Pset_fclose_degree((hid_t) plist, (H5F_close_degree_t) fc_degree);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_fclose_degree
* Signature: (IJI)I
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1fclose_1degree
(JNIEnv *env, jclass clss, jint plist)
{
H5F_close_degree_t degree;
herr_t retVal = -1;
retVal = H5Pget_fclose_degree((hid_t) plist, &degree);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)degree;
}
/**********************************************************************
* *
* File access properties *
* *
**********************************************************************/
/*
* Class: ncsa_hdf_hdf5lib_H5
* Signature: herr_t H5Pset_fapl_family ( hid_t fapl_id, hsize_t memb_size, hid_t memb_fapl_id )
* Purpose: Sets the file access property list to use the family driver
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1fapl_1family
(JNIEnv *env, jclass clss, jint plist, jlong memb_size, jint memb_plist)
{
long ms;
herr_t retVal = -1;
ms = (long)memb_size;
retVal = H5Pset_fapl_family((hid_t)plist, (hsize_t)ms, (hid_t)memb_plist);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Signature: herr_t H5Pget_fapl_family ( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id )
* Purpose: Returns file access property list information
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1family
(JNIEnv *env, jclass clss, jint tid, jlongArray memb_size, jintArray memb_plist)
{
herr_t status;
jlong *sizeArray;
jint *plistArray;
jboolean isCopy;
hsize_t *sa;
int i;
int rank;
if (memb_size == NULL) {
h5nullArgument( env, "H5Pget_family: memb_size is NULL");
return -1;
}
if (memb_plist == NULL) {
h5nullArgument( env, "H5Pget_family: memb_plist is NULL");
return -1;
}
sizeArray = (jlong *)ENVPTR->GetLongArrayElements(ENVPAR memb_size,&isCopy);
if (sizeArray == NULL) {
h5JNIFatalError(env, "H5Pget_family: sizeArray not pinned");
return -1;
}
rank = ENVPTR->GetArrayLength(ENVPAR memb_size);
sa = (hsize_t *)malloc( rank * sizeof(hsize_t));
if (sa == NULL) {
ENVPTR->ReleaseLongArrayElements(ENVPAR memb_size,sizeArray,JNI_ABORT);
h5JNIFatalError(env, "H5Screate-simple: dims not converted to hsize_t");
return -1;
}
plistArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR memb_plist,&isCopy);
if (plistArray == NULL) {
ENVPTR->ReleaseLongArrayElements(ENVPAR memb_size,sizeArray,JNI_ABORT);
h5JNIFatalError(env, "H5Pget_family: plistArray not pinned");
return -1;
}
status = H5Pget_fapl_family ((hid_t)tid, sa, (hid_t *)plistArray);
if (status < 0)
{
free(sa);
ENVPTR->ReleaseLongArrayElements(ENVPAR memb_size,sizeArray,JNI_ABORT);
ENVPTR->ReleaseIntArrayElements(ENVPAR memb_plist,plistArray,JNI_ABORT);
h5libraryError(env);
}
else
{
for (i= 0; i < rank; i++) {
sa[i] = sizeArray[i];
}
free(sa);
ENVPTR->ReleaseLongArrayElements(ENVPAR memb_size,sizeArray,0);
ENVPTR->ReleaseIntArrayElements(ENVPAR memb_plist,plistArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Signature: herr_t H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store )
* Purpose: Modifies the file access property list to use the H5FD_CORE driver
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1fapl_1core
(JNIEnv *env, jclass clss, jint fapl_id, jint increment, jboolean backing_store)
{
herr_t retVal = -1;
retVal = H5Pset_fapl_core( (hid_t) fapl_id, (size_t) increment, (hbool_t) backing_store );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Signature: herr_t H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store )
* Purpose: Queries core file driver properties
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1fapl_1core
(JNIEnv *env, jclass clss, jint fapl_id, jintArray increment, jbooleanArray backing_store)
{
herr_t status;
jint *incArray;
jboolean *backArray;
jboolean isCopy;
if (increment == NULL) {
h5nullArgument( env, "H5Pget_fapl_core: increment is NULL");
return -1;
}
if (backing_store == NULL) {
h5nullArgument( env, "H5Pget_fapl_core: backing_store is NULL");
return -1;
}
incArray = (jint *)ENVPTR->GetIntArrayElements(ENVPAR increment,&isCopy);
if (incArray == NULL) {
h5JNIFatalError(env, "H5Pget_fapl_core: incArray not pinned");
return -1;
}
backArray = (jboolean *)ENVPTR->GetBooleanArrayElements(ENVPAR backing_store,&isCopy);
if (backArray == NULL) {
ENVPTR->ReleaseIntArrayElements(ENVPAR increment,incArray,JNI_ABORT);
h5JNIFatalError(env, "H5Pget_fapl_core: backArray not pinned");
return -1;
}
status = H5Pget_fapl_core( (hid_t) fapl_id, (size_t *)incArray, (hbool_t *)backArray );
if (status < 0)
{
ENVPTR->ReleaseIntArrayElements(ENVPAR increment,incArray,JNI_ABORT);
ENVPTR->ReleaseBooleanArrayElements(ENVPAR backing_store,backArray,JNI_ABORT);
h5libraryError(env);
}
else
{
ENVPTR->ReleaseIntArrayElements(ENVPAR increment,incArray,0);
ENVPTR->ReleaseBooleanArrayElements(ENVPAR backing_store,backArray,0);
}
return (jint)status;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Signature: herr_t H5Pset_family_offset ( hid_t fapl_id, hsize_t offset )
* Purpose: Sets offset property for low-level access to a file in a family of files
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1family_1offset
(JNIEnv *env, jclass clss, jint fapl_id, jlong offset)
{
herr_t retVal = -1;
retVal = H5Pset_family_offset ( (hid_t) fapl_id, (hsize_t) offset );
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Signature: herr_t H5Pget_family_offset ( hid_t fapl_id, hsize_t *offset )
* Purpose: Retrieves a data offset from the file access property list
*/
JNIEXPORT jlong JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1family_1offset
(JNIEnv *env, jclass clss, jint fapl_id)
{
hsize_t offset = -1;
herr_t retVal = -1;
retVal = H5Pget_family_offset ( (hid_t) fapl_id, &offset );
if (retVal < 0) {
h5libraryError(env);
}
return (jlong)offset;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Signature: herr_t H5Pset_fapl_log( hid_t fapl_id, const char *logfile, unsigned int flags, size_t buf_size )
* Purpose: Sets up the use of the logging driver
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset_1fapl_1log
(JNIEnv *env, jclass clss, jint fapl_id, jstring logfile, jint flags, jint buf_size)
{
herr_t retVal = -1;
char * pLogfile;
jboolean isCopy;
if (logfile == NULL) {
h5nullArgument( env, "H5Pset_fapl_log: logfile is NULL");
return -1;
}
pLogfile = (char *)ENVPTR->GetStringUTFChars(ENVPAR logfile,&isCopy);
if (pLogfile == NULL) {
h5JNIFatalError(env, "H5Pset_fapl_log: logfile not pinned");
return -1;
}
retVal = H5Pset_fapl_log( (hid_t) fapl_id, (const char *)pLogfile, (unsigned int) flags, (size_t) buf_size );
if (retVal < 0) {
h5libraryError(env);
}
ENVPTR->ReleaseStringUTFChars(ENVPAR logfile, pLogfile);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/**********************************************************************
* *
* New functions release 1.6.3 versus release 1.6.2 *
* *
**********************************************************************/
/*
* Class: ncsa_hdf_hdf5lib_H5
* Signature: herr_t H5Premove_filter (hid_t obj_id, H5Z_filter_t filter)
* Purpose:
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5P1remove_1filter
(JNIEnv *env, jclass clss, jint obj_id, jint filter)
{
herr_t status;
status = H5Premove_filter ((hid_t) obj_id, (H5Z_filter_t) filter);
if (status < 0) {
h5libraryError(env);
}
return status;
}
/**********************************************************************
* *
Modified by Peter Cao on July 26, 2006:
Some of the Generic Property APIs have callback function
pointers, which Java does not support. Only the Generic
Property APIs without function pointers are implemented
* *
**********************************************************************/
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pcreate_list
* Signature: hid_t H5Pcreate_list( hid_t class)
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pcreate_1list
(JNIEnv *env, jclass clss, jint cls)
{
hid_t retVal = -1;
retVal = H5Pcopy((hid_t)cls);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pset
* Signature: herr_t H5Pset( hid_t plid, const char *name, void *value)
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pset
(JNIEnv *env, jclass clss, jint plid, jstring name, jint val)
{
char* cstr;
jboolean isCopy;
hid_t retVal = -1;
if (name == NULL) {
h5nullArgument( env, "H5Pset: name is NULL");
return -1;
}
cstr = (char *)ENVPTR->GetStringUTFChars(ENVPAR name,&isCopy);
if (cstr == NULL) {
h5JNIFatalError( env, "H5Pset: name not pinned");
return -1;
}
retVal = H5Pset((hid_t)plid, cstr, &val);
ENVPTR->ReleaseStringUTFChars(ENVPAR name,cstr);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pexist
* Signature: htri_t H5Pexist( hid_t id, const char *name )
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pexist
(JNIEnv *env, jclass clss, jint plid, jstring name)
{
char* cstr;
jboolean isCopy;
hid_t retVal = -1;
if (name == NULL) {
h5nullArgument( env, "H5Pexist: name is NULL");
return -1;
}
cstr = (char *)ENVPTR->GetStringUTFChars(ENVPAR name,&isCopy);
if (cstr == NULL) {
h5JNIFatalError( env, "H5Pexist: name not pinned");
return -1;
}
retVal = H5Pexist((hid_t)plid, cstr);
ENVPTR->ReleaseStringUTFChars(ENVPAR name,cstr);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_size
* Signature: int H5Pget_size( hid_t id, const char *name, size_t *size )
*/
JNIEXPORT jlong JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1size
(JNIEnv *env, jclass clss, jint plid, jstring name)
{
char* cstr;
jboolean isCopy;
hid_t retVal = -1;
size_t size;
if (name == NULL) {
h5nullArgument( env, "H5Pget_size: name is NULL");
return -1;
}
cstr = (char *)ENVPTR->GetStringUTFChars(ENVPAR name,&isCopy);
if (cstr == NULL) {
h5JNIFatalError( env, "H5Pget_size: name not pinned");
return -1;
}
retVal = H5Pget_size((hid_t)plid, cstr, &size);
ENVPTR->ReleaseStringUTFChars(ENVPAR name,cstr);
if (retVal < 0) {
h5libraryError(env);
}
return (jlong) size;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_nprops
* Signature: int H5Pget_nprops( hid_t id, size_t *nprops )
*/
JNIEXPORT jlong JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1nprops
(JNIEnv *env, jclass clss, jint plid)
{
hid_t retVal = -1;
size_t nprops;
retVal = H5Pget_nprops((hid_t)plid, &nprops);
if (retVal < 0) {
h5libraryError(env);
}
return (jlong) nprops;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_class_name
* Signature: char * H5Pget_class_name( hid_t pcid )
*/
JNIEXPORT jstring JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1class_1name
(JNIEnv *env, jclass clss, jint plid)
{
char *c_str;
jstring j_str;
c_str = H5Pget_class_name((hid_t)plid);
if (c_str < 0) {
h5libraryError(env);
return NULL;
}
j_str = ENVPTR->NewStringUTF(ENVPAR c_str);
if (j_str == NULL) {
h5JNIFatalError( env,"H5Pget_class_name: return string failed");
}
return j_str;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget_class_parent
* Signature: hid_t H5Pget_class_parent( hid_t pcid )
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget_1class_1parent
(JNIEnv *env, jclass clss, jint plid)
{
hid_t retVal = -1;
retVal = H5Pget_class_parent((hid_t)plid);
if (retVal < 0) {
h5libraryError(env);
}
return (jint) retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pisa_class
* Signature: htri_t H5Pisa_class( hid_t plist, hid_t pclass )
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pisa_1class
(JNIEnv *env, jclass clss, jint plid, jint pcls)
{
htri_t retVal = -1;
retVal = H5Pisa_class((hid_t)plid, (hid_t)pcls);
if (retVal < 0) {
h5libraryError(env);
}
return (jint) retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pget
* Signature: herr_t H5Pget( hid_t plid, const char *name, void *value )
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pget
(JNIEnv *env, jclass clss, jint plid, jstring name)
{
char* cstr;
jboolean isCopy;
jint val;
jint retVal = -1;
if (name == NULL) {
h5nullArgument( env, "H5Pget: name is NULL");
return -1;
}
cstr = (char *)ENVPTR->GetStringUTFChars(ENVPAR name,&isCopy);
if (cstr == NULL) {
h5JNIFatalError( env, "H5Pget: name not pinned");
return -1;
}
retVal = H5Pget((hid_t)plid, cstr, &val);
ENVPTR->ReleaseStringUTFChars(ENVPAR name,cstr);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)val;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pequal
* Signature: htri_t H5Pequal( hid_t id1, hid_t id2 )
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pequal
(JNIEnv *env, jclass clss, jint plid1, jint plid2)
{
htri_t retVal = -1;
retVal = H5Pequal((hid_t)plid1, (hid_t)plid2);
if (retVal < 0) {
h5libraryError(env);
}
return (jint) retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pcopy_prop
* Signature: herr_t H5Pcopy_prop( hid_t dst_id, hid_t src_id, const char *name )
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pcopy_1prop
(JNIEnv *env, jclass clss, jint dst_plid, jint src_plid, jstring name)
{
char* cstr;
jboolean isCopy;
jint retVal = -1;
if (name == NULL) {
h5nullArgument( env, "H5Pcopy_prop: name is NULL");
return -1;
}
cstr = (char *)ENVPTR->GetStringUTFChars(ENVPAR name,&isCopy);
if (cstr == NULL) {
h5JNIFatalError( env, "H5Pcopy_prop: name not pinned");
return -1;
}
retVal = H5Pcopy_prop((hid_t)dst_plid, (hid_t)src_plid, cstr);
ENVPTR->ReleaseStringUTFChars(ENVPAR name,cstr);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Premove
* Signature: herr_t H5Premove( hid_t plid; const char *name )
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Premove
(JNIEnv *env, jclass clss, jint plid, jstring name)
{
char* cstr;
jboolean isCopy;
jint retVal = -1;
if (name == NULL) {
h5nullArgument( env, "H5Premove: name is NULL");
return -1;
}
cstr = (char *)ENVPTR->GetStringUTFChars(ENVPAR name,&isCopy);
if (cstr == NULL) {
h5JNIFatalError( env, "H5Premove: name not pinned");
return -1;
}
retVal = H5Premove((hid_t)plid, cstr);
ENVPTR->ReleaseStringUTFChars(ENVPAR name,cstr);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Punregister
* Signature: herr_t H5Punregister( H5P_class_t class, const char *name )
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Punregister
(JNIEnv *env, jclass clss, jint plid, jstring name)
{
char* cstr;
jboolean isCopy;
jint retVal = -1;
if (name == NULL) {
h5nullArgument( env, "H5Punregister: name is NULL");
return -1;
}
cstr = (char *)ENVPTR->GetStringUTFChars(ENVPAR name,&isCopy);
if (cstr == NULL) {
h5JNIFatalError( env, "H5Punregister: name not pinned");
return -1;
}
retVal = H5Punregister((hid_t)plid, cstr);
ENVPTR->ReleaseStringUTFChars(ENVPAR name,cstr);
if (retVal < 0) {
h5libraryError(env);
}
return (jint)retVal;
}
/*
* Class: ncsa_hdf_hdf5lib_H5
* Method: H5Pclose_list
* Signature: herr_t H5Pclose_class( hid_t plist )
*/
JNIEXPORT jint JNICALL Java_ncsa_hdf_hdf5lib_H5_H5Pclose_1class
(JNIEnv *env, jclass clss, jint plid)
{
hid_t retVal = -1;
retVal = H5Pclose_class((hid_t)plid);
if (retVal < 0) {
h5libraryError(env);
}
return (jint) retVal;
}
#ifdef __cplusplus
}
#endif