Files
hdf5/java/src/jni/h5plImp.c
David Young 13bb3afdc6 Reduce differences between my -Werror branch and develop:
Rename index -> idx, fileno -> fnumber, fileno -> fno to avoid GCC
shadowed declaration warnings about index(3).

Convert #pragma GCC diagnostic push/pop/ignored to the HDF5 library's
H5_GCC_DIAG_OFF()/H5_GCC_DIAG_ON() macros.
2020-05-20 09:31:54 -05:00

268 lines
6.8 KiB
C

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by The HDF Group. *
* Copyright by the Board of Trustees of the University of Illinois. *
* 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 COPYING file, which can be found at the root of the source code *
* distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* For details of the HDF libraries, see the HDF Documentation at:
* http://hdfgroup.org/HDF5/doc/
*
*/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "hdf5.h"
#include <stdlib.h>
#include "h5jni.h"
#include "h5plImp.h"
/*
* Pointer to the JNI's Virtual Machine; used for callback functions.
*/
/* extern JavaVM *jvm; */
/*
* Class: hdf_hdf5lib_H5
* Method: H5PLset_loading_state
* Signature: (I)V
*/
JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5PLset_1loading_1state
(JNIEnv *env, jclass clss, jint plugin_flags)
{
UNUSED(clss);
if (H5PLset_loading_state((unsigned int)plugin_flags) < 0)
H5_LIBRARY_ERROR(ENVONLY);
done:
return;
} /* end Java_hdf_hdf5lib_H5_H5PLset_1loading_1state */
/*
* Class: hdf_hdf5lib_H5
* Method: H5PLget_loading_state
* Signature: (V)I
*/
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5PLget_1loading_1state
(JNIEnv *env, jclass clss)
{
unsigned int plugin_type = 0;
UNUSED(clss);
if (H5PLget_loading_state(&plugin_type) < 0)
H5_LIBRARY_ERROR(ENVONLY);
done:
return (jint)plugin_type;
} /* end Java_hdf_hdf5lib_H5_H5PLget_1loading_1state */
/*
* Class: hdf_hdf5lib_H5
* Method: H5PLappend
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5PLappend
(JNIEnv *env, jclass clss, jobjectArray plugin_path)
{
const char *newPath = NULL;
herr_t retVal = FAIL;
UNUSED(clss);
if (NULL == plugin_path)
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5PLappend: new path is NULL");
PIN_JAVA_STRING(ENVONLY, plugin_path, newPath, NULL, "H5PLappend: new path not pinned");
if ((retVal = H5PLappend(newPath)) < 0)
H5_LIBRARY_ERROR(ENVONLY);
done:
if (newPath)
UNPIN_JAVA_STRING(ENVONLY, plugin_path, newPath);
} /* end Java_hdf_hdf5lib_H5_H5PLappend */
/*
* Class: hdf_hdf5lib_H5
* Method: H5PLprepend
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5PLprepend
(JNIEnv *env, jclass clss, jobjectArray plugin_path)
{
const char *newPath = NULL;
herr_t retVal = FAIL;
UNUSED(clss);
if (NULL == plugin_path)
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5PLprepend: new path is NULL");
PIN_JAVA_STRING(ENVONLY, plugin_path, newPath, NULL, "H5PLprepend: new path not pinned");
if ((retVal = H5PLprepend(newPath)) < 0)
H5_LIBRARY_ERROR(ENVONLY);
done:
if (newPath)
UNPIN_JAVA_STRING(ENVONLY, plugin_path, newPath);
} /* end Java_hdf_hdf5lib_H5_H5PLprepend */
/*
* Class: hdf_hdf5lib_H5
* Method: H5PLreplace
* Signature: (Ljava/lang/String;I)V
*/
JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5PLreplace
(JNIEnv *env, jclass clss, jobjectArray plugin_path, jint idx)
{
const char *newPath = NULL;
herr_t retVal = FAIL;
UNUSED(clss);
if (NULL == plugin_path)
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5PLreplace: new path is NULL");
if (idx < 0)
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5PLreplace: index < 0");
PIN_JAVA_STRING(ENVONLY, plugin_path, newPath, NULL, "H5PLreplace: new path not pinned");
if ((retVal = H5PLreplace(newPath, (unsigned) idx)) < 0)
H5_LIBRARY_ERROR(ENVONLY);
done:
if (newPath)
UNPIN_JAVA_STRING(ENVONLY, plugin_path, newPath);
} /* end Java_hdf_hdf5lib_H5_H5PLreplace */
/*
* Class: hdf_hdf5lib_H5
* Method: H5PLinsert
* Signature: (Ljava/lang/String;I)V
*/
JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5PLinsert
(JNIEnv *env, jclass clss, jobjectArray plugin_path, jint idx)
{
const char *newPath = NULL;
herr_t retVal = FAIL;
UNUSED(clss);
if (NULL == plugin_path)
H5_NULL_ARGUMENT_ERROR(ENVONLY, "H5PLinsert: new path is NULL");
if (idx < 0)
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5PLinsert: index < 0");
PIN_JAVA_STRING(ENVONLY, plugin_path, newPath, NULL, "H5PLinsert: new path not pinned");
if ((retVal = H5PLinsert(newPath, (unsigned) idx)) < 0)
H5_LIBRARY_ERROR(ENVONLY);
done:
if (newPath)
UNPIN_JAVA_STRING(ENVONLY, plugin_path, newPath);
} /* end Java_hdf_hdf5lib_H5_H5PLinsert */
/*
* Class: hdf_hdf5lib_H5
* Method: H5PLremove
* Signature: (I)V
*/
JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5PLremove
(JNIEnv *env, jclass clss, jint idx)
{
UNUSED(clss);
if (idx < 0)
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5PLremove: index < 0");
if (H5PLremove((unsigned) idx) < 0)
H5_LIBRARY_ERROR(ENVONLY);
done:
return;
} /* end Java_hdf_hdf5lib_H5_H5PLremove */
/*
* Class: hdf_hdf5lib_H5
* Method: H5PLget
* Signature: (I)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL
Java_hdf_hdf5lib_H5_H5PLget
(JNIEnv *env, jclass clss, jint idx)
{
jstring str = NULL;
ssize_t buf_size;
char *aName = NULL;
UNUSED(clss);
if (idx < 0)
H5_BAD_ARGUMENT_ERROR(ENVONLY, "H5PLget: index < 0");
/* Get the length of the name */
if ((buf_size = H5PLget((unsigned) idx, NULL, 0)) < 0)
H5_LIBRARY_ERROR(ENVONLY);
if (NULL == (aName = (char *) HDmalloc(sizeof(char) * (size_t)buf_size + 1)))
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "H5PLget: failed to allocate plugin name buffer");
if ((H5PLget((unsigned) idx, aName, (size_t)buf_size + 1)) < 0)
H5_LIBRARY_ERROR(ENVONLY);
aName[buf_size] = '\0';
if (NULL == (str = ENVPTR->NewStringUTF(ENVONLY, aName)))
CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
done:
if (aName)
HDfree(aName);
return str;
} /* end Java_hdf_hdf5lib_H5_H5PLget */
/*
* Class: hdf_hdf5lib_H5
* Method: H5PLsize
* Signature: (V)I
*/
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_H5_H5PLsize
(JNIEnv *env, jclass clss)
{
unsigned int listsize = 0;
UNUSED(clss);
if (H5PLsize(&listsize) < 0)
H5_LIBRARY_ERROR(ENVONLY);
done:
return (jint)listsize;
} /* end Java_hdf_hdf5lib_H5_H5PLsize */
#ifdef __cplusplus
} /* end extern "C" */
#endif /* __cplusplus */