diff options
-rw-r--r-- | java/src/hdf/hdf5lib/H5.java | 32 | ||||
-rw-r--r-- | java/src/jni/CMakeLists.txt | 6 | ||||
-rw-r--r-- | java/src/jni/h5pDXPLImp.c | 45 | ||||
-rw-r--r-- | java/src/jni/h5pDXPLImp.h | 14 |
4 files changed, 95 insertions, 2 deletions
diff --git a/java/src/hdf/hdf5lib/H5.java b/java/src/hdf/hdf5lib/H5.java index 63547df..2c89f3a 100644 --- a/java/src/hdf/hdf5lib/H5.java +++ b/java/src/hdf/hdf5lib/H5.java @@ -9622,6 +9622,38 @@ public class H5 implements java.io.Serializable { public synchronized static native int H5Pset_hyper_vector_size(long dxpl_id, long vector_size) throws HDF5LibraryException, NullPointerException; + /** + * + * Set flag to indicate that an API wrapper for a plugin's + * public wrapper API call (e.g. H5VLfile_create, H5FDopen, etc) + * should open a new API context for the API call. + * + * @param dxpl_id + * IN: Dataset transfer property list identifier. + * @param new_api_ctx + * IN: Indicate that API wrapper should create new API context + * + * @exception HDF5LibraryException + * - Error from the HDF-5 Library. + **/ + public synchronized static native void H5Pset_plugin_new_api_context(long dxpl_id, boolean new_api_ctx) + throws HDF5LibraryException; + + /** + * Retrieve "new API context" flag for plugin wrapper API calls. + * + * @param dxpl_id + * IN: Dataset transfer property list identifier. + * + * @return true if the given dxpl indicates API wrapper should create new API context + * + * @exception HDF5LibraryException + * - Error from the HDF-5 Library. + * + **/ + public synchronized static native boolean H5Pget_plugin_new_api_context(long dxpl_id) + throws HDF5LibraryException; + // /////// Link creation property list (LCPL) routines /////// /** diff --git a/java/src/jni/CMakeLists.txt b/java/src/jni/CMakeLists.txt index dff0a88..8e8d9d6 100644 --- a/java/src/jni/CMakeLists.txt +++ b/java/src/jni/CMakeLists.txt @@ -74,10 +74,13 @@ set (HDF5_JAVA_JNI_CHDRS ) set (HDF5_JAVA_TEST_CSRCS + ${HDF5_JAVA_JNI_SOURCE_DIR}/exceptionImp.c ${HDF5_JAVA_JNI_SOURCE_DIR}/h5jni_test.c ) set (HDF5_JAVA_TEST_CHDRS + ${HDF5_JAVA_JNI_SOURCE_DIR}/exceptionImp.h + ${HDF5_JAVA_JNI_SOURCE_DIR}/h5jni.h ${HDF5_JAVA_JNI_SOURCE_DIR}/h5jni_test.h ) @@ -102,9 +105,8 @@ target_include_directories (${HDF5_JAVA_JNI_TEST_LIB_TARGET} ) target_compile_options(${HDF5_JAVA_JNI_TEST_LIB_TARGET} PRIVATE "${HDF5_CMAKE_C_FLAGS}") TARGET_C_PROPERTIES (${HDF5_JAVA_JNI_TEST_LIB_TARGET} SHARED) -target_link_libraries (${HDF5_JAVA_JNI_TEST_LIB_TARGET} PUBLIC ${HDF5_LIBSH_TARGET} ${HDF5_JAVA_JNI_LIB_TARGET}) +target_link_libraries (${HDF5_JAVA_JNI_TEST_LIB_TARGET} PUBLIC ${HDF5_LIBSH_TARGET}) set_target_properties (${HDF5_JAVA_JNI_TEST_LIB_TARGET} PROPERTIES FOLDER libraries/jni) -#SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_JAVA_JNI_TEST_LIB_TARGET}") H5_SET_LIB_OPTIONS (${HDF5_JAVA_JNI_TEST_LIB_TARGET} ${HDF5_JAVA_JNI_TEST_LIB_NAME} SHARED "JAVA") #----------------------------------------------------------------------------- diff --git a/java/src/jni/h5pDXPLImp.c b/java/src/jni/h5pDXPLImp.c index c555d53..69b32c1 100644 --- a/java/src/jni/h5pDXPLImp.c +++ b/java/src/jni/h5pDXPLImp.c @@ -448,6 +448,51 @@ done: } /* end Java_hdf_hdf5lib_H5_H5Pget_1btree_1ratios */ /* + * Class: hdf_hdf5lib_H5 + * Method: H5Pset_plugin_new_api_context + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL +Java_hdf_hdf5lib_H5_H5Pset_1plugin_1new_1api_1context(JNIEnv *env, jclass clss, jlong dcpl_id, jboolean new_api_ctx) +{ + hbool_t new_api_ctx_val; + herr_t retVal = FAIL; + + UNUSED(clss); + + new_api_ctx_val = (JNI_TRUE == new_api_ctx) ? TRUE : FALSE; + + if ((retVal = H5Pset_plugin_new_api_context((hid_t)dcpl_id, (hbool_t)new_api_ctx_val)) < 0) + H5_LIBRARY_ERROR(ENVONLY); + +done: + return; +} /* end Java_hdf_hdf5lib_H5_H5Pset_1plugin_1new_1api_1context */ + +/* + * Class: hdf_hdf5lib_H5 + * Method: H5Pget_plugin_new_api_context + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL +Java_hdf_hdf5lib_H5_H5Pget_1plugin_1new_1api_1context(JNIEnv *env, jclass clss, jlong dcpl_id) +{ + hbool_t new_api_ctx = FALSE; + jboolean bval = JNI_FALSE; + + UNUSED(clss); + + if (H5Pget_plugin_new_api_context((hid_t)dcpl_id, (hbool_t *)&new_api_ctx) < 0) + H5_LIBRARY_ERROR(ENVONLY); + + if (new_api_ctx == TRUE) + bval = JNI_TRUE; + +done: + return bval; +} /* end Java_hdf_hdf5lib_H5_H5Pget_1plugin_1new_1api_1context */ + +/* * TODO: H5Pset_vlen_mem_manager */ diff --git a/java/src/jni/h5pDXPLImp.h b/java/src/jni/h5pDXPLImp.h index 21c40c4..b1dbafd 100644 --- a/java/src/jni/h5pDXPLImp.h +++ b/java/src/jni/h5pDXPLImp.h @@ -134,6 +134,20 @@ JNIEXPORT jint JNICALL Java_hdf_hdf5lib_H5_H5Pget_1btree_1ratios(JNIEnv *, jclas jdoubleArray, jdoubleArray); /* + * Class: hdf_hdf5lib_H5 + * Method: H5Pset_plugin_new_api_context + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_hdf_hdf5lib_H5_H5Pset_1plugin_1new_1api_1context(JNIEnv *, jclass, jlong, jboolean); + +/* + * Class: hdf_hdf5lib_H5 + * Method: H5Pget_plugin_new_api_context + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_hdf_hdf5lib_H5_H5Pget_1plugin_1new_1api_1context(JNIEnv *, jclass, jlong); + +/* * TODO: H5Pset_vlen_mem_manager */ |