summaryrefslogtreecommitdiffstats
path: root/java/src/jni/h5vlImp.c
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/jni/h5vlImp.c')
-rw-r--r--java/src/jni/h5vlImp.c206
1 files changed, 206 insertions, 0 deletions
diff --git a/java/src/jni/h5vlImp.c b/java/src/jni/h5vlImp.c
new file mode 100644
index 0000000..89ea703
--- /dev/null
+++ b/java/src/jni/h5vlImp.c
@@ -0,0 +1,206 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * 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 <jni.h>
+#include <stdlib.h>
+#include "h5jni.h"
+#include "h5vlImp.h"
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5VLregister_connector_by_name
+ * Signature: (Ljava/lang/String;J)J
+ */
+JNIEXPORT jlong JNICALL
+Java_hdf_hdf5lib_H5_H5VLregister_1connector_1by_1name
+ (JNIEnv *env, jclass clss, jobject connector_name, jlong vipl_id)
+{
+ hid_t status = -1;
+ const char *vlName;
+
+ PIN_JAVA_STRING(connector_name, vlName);
+ if (vlName != NULL) {
+ status = H5VLregister_connector_by_name(vlName, (hid_t)vipl_id);
+
+ UNPIN_JAVA_STRING(connector_name, vlName);
+
+ if (status < 0)
+ h5libraryError(env);
+ }
+
+ return (jlong)status;
+} /* end Java_hdf_hdf5lib_H5_H5VLregister_1connector_1by_1name */
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5VLregister_connector_by_value
+ * Signature: (IJ)J
+ */
+JNIEXPORT jlong JNICALL
+Java_hdf_hdf5lib_H5_H5VLregister_1connector_1by_1value
+ (JNIEnv *env, jclass clss, jint connector_value, jlong vipl_id)
+{
+ hid_t status = H5VLregister_connector_by_value((H5VL_class_value_t)connector_value, (hid_t)vipl_id);
+
+ if (status < 0)
+ h5libraryError(env);
+
+ return (jlong)status;
+} /* end Java_hdf_hdf5lib_H5_H5VLregister_1connector_1by_1value */
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5VLis_connector_registered
+ * Signature: (Ljava/lang/String;)Z
+ */
+JNIEXPORT jboolean JNICALL
+Java_hdf_hdf5lib_H5_H5VLis_1connector_1registered
+ (JNIEnv *env, jclass clss, jobject connector_name)
+{
+ htri_t bval = JNI_FALSE;
+ const char *vlName;
+
+ PIN_JAVA_STRING(connector_name, vlName);
+ if (vlName != NULL) {
+ bval = H5VLis_connector_registered(vlName);
+
+ UNPIN_JAVA_STRING(connector_name, vlName);
+
+ if (bval > 0)
+ bval = JNI_TRUE;
+ else if (bval < 0)
+ h5libraryError(env);
+ }
+
+ return (jboolean)bval;
+} /* end Java_hdf_hdf5lib_H5_H5VLis_1connector_1registered */
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5VLget_connector_id
+ * Signature: (Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL
+Java_hdf_hdf5lib_H5_H5VLget_1connector_1id
+ (JNIEnv *env, jclass clss, jobject connector_name)
+{
+ hid_t status = -1;
+ const char *vlName;
+
+ PIN_JAVA_STRING(connector_name, vlName);
+ if (vlName != NULL) {
+ status = H5VLget_connector_id(vlName);
+
+ UNPIN_JAVA_STRING(connector_name, vlName);
+
+ if (status < 0)
+ h5libraryError(env);
+ }
+
+ return (jlong)status;
+} /* end Java_hdf_hdf5lib_H5_H5VLget_1connector_1id */
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5VLget_connector_name
+ * Signature: (J)Ljava/lang/String;
+ */
+
+JNIEXPORT jobject JNICALL
+Java_hdf_hdf5lib_H5_H5VLget_1connector_1name
+ (JNIEnv *env, jclass clss, jlong object_id)
+{
+ char *vlName;
+ ssize_t buf_size;
+ ssize_t status;
+ jstring str = NULL;
+
+ /* get the length of the comment */
+ buf_size = H5VLget_connector_name((hid_t)object_id, NULL, 0);
+ if (buf_size < 0) {
+ H5Eprint2(H5E_DEFAULT, NULL);
+
+ h5badArgument(env, "H5VLget_connector_name: buf_size < 0");
+ } /* end if */
+ else if (buf_size > 0) {
+ buf_size++; /* add extra space for the null terminator */
+ vlName = (char *)HDmalloc(sizeof(char) * (size_t)buf_size);
+ if (vlName == NULL) {
+ /* exception -- out of memory */
+ h5outOfMemory(env, "H5VLget_connector_name: malloc failed");
+ } /* end if */
+ else {
+ status = H5VLget_connector_name((hid_t)object_id, vlName, (size_t)buf_size);
+
+ if (status < 0) {
+ h5libraryError(env);
+ } /* end if */
+ else {
+ /* may throw OutOfMemoryError */
+ str = ENVPTR->NewStringUTF(ENVPAR vlName);
+ if (str == NULL) {
+ h5JNIFatalError(env, "H5VLget_connector_name: return string not allocated");
+ } /* end if */
+ } /* end else */
+ HDfree(vlName);
+ }
+ } /* end else if */
+
+ return (jstring)str;
+} /* end Java_hdf_hdf5lib_H5_H5VLget_1connector_1name */
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5VLclose
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL
+Java_hdf_hdf5lib_H5_H5VLclose
+ (JNIEnv *env, jclass clss, jlong connector_id)
+{
+ herr_t retValue = H5VLclose((hid_t)connector_id);
+
+ if (retValue < 0)
+ h5libraryError(env);
+} /* end Java_hdf_hdf5lib_H5_H5VLclose */
+
+/*
+ * Class: hdf_hdf5lib_H5
+ * Method: H5VLunregister_connector
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL
+Java_hdf_hdf5lib_H5_H5VLunregister_1connector
+ (JNIEnv *env, jclass clss, jlong connector_id)
+{
+ herr_t retValue = H5VLunregister_connector((hid_t)connector_id);
+
+ if (retValue < 0)
+ h5libraryError(env);
+} /* end Java_hdf_hdf5lib_H5_H5VLunregister_1connector */
+
+
+#ifdef __cplusplus
+} /* end extern "C" */
+#endif /* __cplusplus */