Merge branch 'develop' of https://bitbucket.hdfgroup.org/scm/hdffv/hdf5 into develop

This commit is contained in:
Quincey Koziol 2018-12-20 10:19:33 -06:00
commit ac5a65bb43
13 changed files with 656 additions and 55 deletions

View File

@ -2884,6 +2884,8 @@
./java/src/jni/h5sImp.h
./java/src/jni/h5tImp.c
./java/src/jni/h5tImp.h
./java/src/jni/h5vlImp.c
./java/src/jni/h5vlImp.h
./java/src/jni/h5zImp.c
./java/src/jni/h5zImp.h
@ -3122,6 +3124,7 @@
./java/test/testfiles/JUnit-TestH5Tparams.txt
./java/test/testfiles/JUnit-TestH5Tbasic.txt
./java/test/testfiles/JUnit-TestH5T.txt
./java/test/testfiles/JUnit-TestH5VL.txt
./java/test/testfiles/JUnit-TestH5Z.txt
./java/test/h5ex_g_iterate.orig
./java/test/TestH5.java
@ -3159,6 +3162,7 @@
./java/test/TestH5Tparams.java
./java/test/TestH5Tbasic.java
./java/test/TestH5T.java
./java/test/TestH5VL.java
./java/test/TestH5Z.java
./java/test/TestAll.java

View File

@ -499,9 +499,9 @@ public class H5 implements java.io.Serializable {
private synchronized static native boolean H5is_library_threadsafe();
// /////// unimplemented ////////
// H5_DLL herr_t H5free_memory(void *mem);
// H5_DLL void *H5allocate_memory(size_t size, hbool_t clear);
// H5_DLL void *H5resize_memory(void *mem, size_t size);
// herr_t H5free_memory(void *mem);
// void *H5allocate_memory(size_t size, hbool_t clear);
// void *H5resize_memory(void *mem, size_t size);
// ////////////////////////////////////////////////////////////
// //
@ -2402,10 +2402,10 @@ public class H5 implements java.io.Serializable {
public synchronized static native void H5Drefresh(long dset_id) throws HDF5LibraryException;
// /////// unimplemented ////////
// H5_DLL herr_t H5Ddebug(hid_t dset_id);
// H5_DLL herr_t H5Dget_chunk_storage_size(hid_t dset_id, const hsize_t *offset, hsize_t *chunk_bytes);
// H5_DLL herr_t H5Dformat_convert(hid_t dset_id);
// H5_DLL herr_t H5Dget_chunk_index_type(hid_t did, H5D_chunk_index_t *idx_type);
// herr_t H5Ddebug(hid_t dset_id);
// herr_t H5Dget_chunk_storage_size(hid_t dset_id, const hsize_t *offset, hsize_t *chunk_bytes);
// herr_t H5Dformat_convert(hid_t dset_id);
// herr_t H5Dget_chunk_index_type(hid_t did, H5D_chunk_index_t *idx_type);
// herr_t H5Dgather(hid_t src_space_id, const void *src_buf, hid_t type_id,
// size_t dst_buf_size, void *dst_buf, H5D_gather_func_t op, void *op_data);
@ -3230,20 +3230,20 @@ public class H5 implements java.io.Serializable {
throws HDF5LibraryException, NullPointerException;
// /////// unimplemented ////////
// H5_DLL herr_t H5Fget_eoa(hid_t file_id, haddr_t *eoa);
// H5_DLL herr_t H5Fincrement_filesize(hid_t file_id, hsize_t increment);
// herr_t H5Fget_eoa(hid_t file_id, haddr_t *eoa);
// herr_t H5Fincrement_filesize(hid_t file_id, hsize_t increment);
// ssize_t H5Fget_file_image(hid_t file_id, void * buf_ptr, size_t buf_len);
// herr_t H5Fget_metadata_read_retry_info(hid_t file_id, H5F_retry_info_t *info);
// ssize_t H5Fget_free_sections(hid_t file_id, H5F_mem_t type, size_t nsects, H5F_sect_info_t *sect_info/*out*/);
// H5_DLL herr_t H5Fset_libver_bounds(hid_t file_id, H5F_libver_t low, H5F_libver_t high);
// H5_DLL herr_t H5Fformat_convert(hid_t fid);
// H5_DLL herr_t H5Freset_page_buffering_stats(hid_t file_id);
// H5_DLL herr_t H5Fget_page_buffering_stats(hid_t file_id, unsigned accesses[2],
// herr_t H5Fset_libver_bounds(hid_t file_id, H5F_libver_t low, H5F_libver_t high);
// herr_t H5Fformat_convert(hid_t fid);
// herr_t H5Freset_page_buffering_stats(hid_t file_id);
// herr_t H5Fget_page_buffering_stats(hid_t file_id, unsigned accesses[2],
// unsigned hits[2], unsigned misses[2], unsigned evictions[2], unsigned bypasses[2]);
// H5_DLL herr_t H5Fget_mdc_image_info(hid_t file_id, haddr_t *image_addr, hsize_t *image_size);
// herr_t H5Fget_mdc_image_info(hid_t file_id, haddr_t *image_addr, hsize_t *image_size);
// #ifdef H5_HAVE_PARALLEL
// H5_DLL herr_t H5Fset_mpi_atomicity(hid_t file_id, hbool_t flag);
// H5_DLL herr_t H5Fget_mpi_atomicity(hid_t file_id, hbool_t *flag);
// herr_t H5Fset_mpi_atomicity(hid_t file_id, hbool_t flag);
// herr_t H5Fget_mpi_atomicity(hid_t file_id, hbool_t *flag);
// #endif /* H5_HAVE_PARALLEL */
// /**
@ -3303,25 +3303,25 @@ public class H5 implements java.io.Serializable {
// ////////////////////////////////////////////////////////////
// /////// unimplemented ////////
// H5_DLL hid_t H5FDregister(const H5FD_class_t *cls);
// H5_DLL herr_t H5FDunregister(hid_t driver_id);
// H5_DLL H5FD_t *H5FDopen(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr);
// H5_DLL herr_t H5FDclose(H5FD_t *file);
// H5_DLL int H5FDcmp(const H5FD_t *f1, const H5FD_t *f2);
// H5_DLL int H5FDquery(const H5FD_t *f, unsigned long *flags);
// H5_DLL haddr_t H5FDalloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size);
// H5_DLL herr_t H5FDfree(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size);
// H5_DLL haddr_t H5FDget_eoa(H5FD_t *file, H5FD_mem_t type);
// H5_DLL herr_t H5FDset_eoa(H5FD_t *file, H5FD_mem_t type, haddr_t eoa);
// H5_DLL haddr_t H5FDget_eof(H5FD_t *file, H5FD_mem_t type);
// H5_DLL herr_t H5FDget_vfd_handle(H5FD_t *file, hid_t fapl, void**file_handle);
// H5_DLL herr_t H5FDread(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size, void *buf/*out*/);
// H5_DLL herr_t H5FDwrite(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size, const void *buf);
// H5_DLL herr_t H5FDflush(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
// H5_DLL herr_t H5FDtruncate(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
// H5_DLL herr_t H5FDlock(H5FD_t *file, hbool_t rw);
// H5_DLL herr_t H5FDunlock(H5FD_t *file);
// H5_DLL herr_t H5FDdriver_query(hid_t driver_id, unsigned long *flags/*out*/);
// hid_t H5FDregister(const H5FD_class_t *cls);
// herr_t H5FDunregister(hid_t driver_id);
// H5FD_t *H5FDopen(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr);
// herr_t H5FDclose(H5FD_t *file);
// int H5FDcmp(const H5FD_t *f1, const H5FD_t *f2);
// int H5FDquery(const H5FD_t *f, unsigned long *flags);
// haddr_t H5FDalloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size);
// herr_t H5FDfree(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size);
// haddr_t H5FDget_eoa(H5FD_t *file, H5FD_mem_t type);
// herr_t H5FDset_eoa(H5FD_t *file, H5FD_mem_t type, haddr_t eoa);
// haddr_t H5FDget_eof(H5FD_t *file, H5FD_mem_t type);
// herr_t H5FDget_vfd_handle(H5FD_t *file, hid_t fapl, void**file_handle);
// herr_t H5FDread(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size, void *buf/*out*/);
// herr_t H5FDwrite(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size, const void *buf);
// herr_t H5FDflush(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
// herr_t H5FDtruncate(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
// herr_t H5FDlock(H5FD_t *file, hbool_t rw);
// herr_t H5FDunlock(H5FD_t *file);
// herr_t H5FDdriver_query(hid_t driver_id, unsigned long *flags/*out*/);
// ////////////////////////////////////////////////////////////
// //
@ -3794,7 +3794,7 @@ public class H5 implements java.io.Serializable {
// ////////////////////////////////////////////////////////////
// //
// H5I: HDF5 1.8 Identifier Interface API Functions //
// H5I: HDF5 Identifier Interface API Functions //
// //
// ////////////////////////////////////////////////////////////
@ -3950,12 +3950,20 @@ public class H5 implements java.io.Serializable {
// hid_t H5Iregister(H5I_type_t type, const void *object);
// typedef herr_t (*H5I_free_t)(void *);
// H5I_type_t H5Iregister_type(size_t hash_size, unsigned reserved, H5I_free_t free_func);
// void *H5Iremove_verify(hid_t id, H5I_type_t id_type);
// Type of the function to compare objects & keys
// typedef int (*H5I_search_func_t)(void *obj, hid_t id, void *key);
// void *H5Isearch(H5I_type_t type, H5I_search_func_t func, void *key);
// Type of the H5Iiterate callback function
// typedef herr_t (*H5I_iterate_func_t)(hid_t id, void *udata);
// herr_t H5Iiterate(H5I_type_t type, H5I_iterate_func_t op, void *op_data);
// //////////////////////////////////////////////////////////////////
// H5L: Link Interface Functions //
// //////////////////////////////////////////////////////////////////
@ -4983,9 +4991,9 @@ public class H5 implements java.io.Serializable {
public synchronized static native void H5Orefresh(long object_id) throws HDF5LibraryException;
// /////// unimplemented ////////
// H5_DLL herr_t H5Odisable_mdc_flushes(hid_t object_id);
// H5_DLL herr_t H5Oenable_mdc_flushes(hid_t object_id);
// H5_DLL herr_t H5Oare_mdc_flushes_disabled(hid_t object_id, hbool_t *are_disabled);
// herr_t H5Odisable_mdc_flushes(hid_t object_id);
// herr_t H5Oenable_mdc_flushes(hid_t object_id);
// herr_t H5Oare_mdc_flushes_disabled(hid_t object_id, hbool_t *are_disabled);
// ////////////////////////////////////////////////////////////
// //
@ -5270,6 +5278,27 @@ public class H5 implements java.io.Serializable {
private synchronized static native long _H5Pcopy(long plist) throws HDF5LibraryException;
// Define property list class callback function pointer types
// typedef herr_t (*H5P_cls_create_func_t)(hid_t prop_id, void *create_data);
// typedef herr_t (*H5P_cls_copy_func_t)(hid_t new_prop_id, hid_t old_prop_id, void *copy_data);
// typedef herr_t (*H5P_cls_close_func_t)(hid_t prop_id, void *close_data);
// Define property list callback function pointer types
// typedef herr_t (*H5P_prp_cb1_t)(const char *name, size_t size, void *value);
// typedef herr_t (*H5P_prp_cb2_t)(hid_t prop_id, const char *name, size_t size, void *value);
// typedef H5P_prp_cb1_t H5P_prp_create_func_t;
// typedef H5P_prp_cb2_t H5P_prp_set_func_t;
// typedef H5P_prp_cb2_t H5P_prp_get_func_t;
// typedef herr_t (*H5P_prp_encode_func_t)(const void *value, void **buf, size_t *size);
// typedef herr_t (*H5P_prp_decode_func_t)(const void **buf, void *value);
// typedef H5P_prp_cb2_t H5P_prp_delete_func_t;
// typedef H5P_prp_cb1_t H5P_prp_copy_func_t;
// typedef int (*H5P_prp_compare_func_t)(const void *value1, const void *value2, size_t size);
// typedef H5P_prp_cb1_t H5P_prp_close_func_t;
// Define property list iteration function type
// typedef herr_t (*H5P_iterate_t)(hid_t id, const char *name, void *iter_data);
public static long H5Pcreate_class_nocb(long parent_class, String name) throws HDF5LibraryException {
long id = _H5Pcreate_class_nocb(parent_class, name);
if (id > 0) {
@ -6433,6 +6462,11 @@ public class H5 implements java.io.Serializable {
public synchronized static native void H5Pset_evict_on_close(long fapl_id, boolean evict_on_close)
throws HDF5LibraryException;
// ///// unimplemented /////
// herr_t H5Pset_vol(hid_t plist_id, hid_t new_vol_id, const void *new_vol_info);
// herr_t H5Pget_vol_id(hid_t plist_id, hid_t *vol_id);
// herr_t H5Pget_vol_info(hid_t plist_id, void **vol_info);
// Dataset creation property list (DCPL) routines //
/**
@ -7811,13 +7845,13 @@ public class H5 implements java.io.Serializable {
// herr_t H5Pget_core_write_tracking(hid_t fapl_id, hbool_t *is_enabled, size_t *page_size);
// #ifdef H5_HAVE_PARALLEL
// herr_t H5Pset_all_coll_metadata_ops(hid_t accpl_id, hbool_t is_collective);
// H5_DLL herr_t H5Pget_all_coll_metadata_ops(hid_t plist_id, hbool_t *is_collective);
// herr_t H5Pget_all_coll_metadata_ops(hid_t plist_id, hbool_t *is_collective);
// herr_t H5Pset_coll_metadata_write(hid_t fapl_id, hbool_t is_collective);
// herr_t H5Pget_coll_metadata_write(hid_t fapl_id, hbool_t *is_collective);
// #endif /* H5_HAVE_PARALLEL */
// H5_DLL herr_t H5Pset_mdc_image_config(hid_t plist_id, H5AC_cache_image_config_t *config_ptr);
// H5_DLL herr_t H5Pget_mdc_image_config(hid_t plist_id, H5AC_cache_image_config_t *config_ptr /*out*/);
// H5_DLL herr_t H5Pset_page_buffer_size(hid_t plist_id, size_t buf_size, unsigned min_meta_per, unsigned min_raw_per);
// herr_t H5Pset_mdc_image_config(hid_t plist_id, H5AC_cache_image_config_t *config_ptr);
// herr_t H5Pget_mdc_image_config(hid_t plist_id, H5AC_cache_image_config_t *config_ptr /*out*/);
// herr_t H5Pset_page_buffer_size(hid_t plist_id, size_t buf_size, unsigned min_meta_per, unsigned min_raw_per);
// herr_t H5Pget_page_buffer_size(hid_t fapl_id, size_t *buf_size, unsigned *min_meta_perc, unsigned *min_raw_perc);
// herr_t H5Pset_object_flush_cb (hid_t fapl_id, H5F_flush_cb_t func, void *user_data);
// herr_t H5Pget_object_flush_cb (hid_t fapl_id, H5F_flush_cb_t *func, void **user_data);
@ -7840,9 +7874,9 @@ public class H5 implements java.io.Serializable {
// herr_t H5Pget_type_conv_cb(hid_t plist, H5T_conv_except_func_t *func, void **op_data)
// herr_t H5Pset_type_conv_cb( hid_t plist, H5T_conv_except_func_t func, void *op_data)
// #ifdef H5_HAVE_PARALLEL
// H5_DLL herr_t H5Pget_mpio_actual_chunk_opt_mode(hid_t plist_id, H5D_mpio_actual_chunk_opt_mode_t *actual_chunk_opt_mode);
// H5_DLL herr_t H5Pget_mpio_actual_io_mode(hid_t plist_id, H5D_mpio_actual_io_mode_t *actual_io_mode);
// H5_DLL herr_t H5Pget_mpio_no_collective_cause(hid_t plist_id, uint32_t *local_no_collective_cause, uint32_t *global_no_collective_cause);
// herr_t H5Pget_mpio_actual_chunk_opt_mode(hid_t plist_id, H5D_mpio_actual_chunk_opt_mode_t *actual_chunk_opt_mode);
// herr_t H5Pget_mpio_actual_io_mode(hid_t plist_id, H5D_mpio_actual_io_mode_t *actual_io_mode);
// herr_t H5Pget_mpio_no_collective_cause(hid_t plist_id, uint32_t *local_no_collective_cause, uint32_t *global_no_collective_cause);
// #endif /* H5_HAVE_PARALLEL */
// Link creation property list (LCPL) routines //
@ -8785,16 +8819,17 @@ public class H5 implements java.io.Serializable {
// /////// unimplemented ////////
// #ifdef NEW_HYPERSLAB_API
// H5_DLL hid_t H5Scombine_hyperslab(hid_t space_id, H5S_seloper_t op,
// hid_t H5Scombine_hyperslab(hid_t space_id, H5S_seloper_t op,
// const hsize_t start[],
// const hsize_t _stride[],
// const hsize_t count[],
// const hsize_t _block[]);
// H5_DLL herr_t H5Sselect_select(hid_t space1_id, H5S_seloper_t op,
// herr_t H5Sselect_select(hid_t space1_id, H5S_seloper_t op,
// hid_t space2_id);
// H5_DLL hid_t H5Scombine_select(hid_t space1_id, H5S_seloper_t op,
// hid_t H5Scombine_select(hid_t space1_id, H5S_seloper_t op,
// hid_t space2_id);
// #endif /* NEW_HYPERSLAB_API */
// herr_t H5Sselect_copy(hid_t dst_id, hid_t src_id);
@ -10271,6 +10306,25 @@ public class H5 implements java.io.Serializable {
// H5T_conv_t func)
// throws HDF5LibraryException, NullPointerException;
// ////////////////////////////////////////////////////////////
// //
// H5VL: VOL Interface Functions //
// //
// ////////////////////////////////////////////////////////////
/// VOL Connector Functionality
public synchronized static native long H5VLregister_connector_by_name(String connector_name, long vipl_id);
public synchronized static native long H5VLregister_connector_by_value(int connector_value, long vipl_id);
public synchronized static native boolean H5VLis_connector_registered(String name);
public synchronized static native long H5VLget_connector_id(String name);
public synchronized static native String H5VLget_connector_name(long object_id);
public synchronized static native void H5VLclose(long connector_id);
public synchronized static native void H5VLunregister_connector(long connector_id);
// /////// unimplemented ////////
// hid_t H5VLregister_connector(const H5VL_class_t *cls, hid_t vipl_id);
// ////////////////////////////////////////////////////////////
// //
// H5Z: Filter Interface Functions //
@ -10283,9 +10337,9 @@ public class H5 implements java.io.Serializable {
public synchronized static native int H5Zunregister(int filter) throws HDF5LibraryException, NullPointerException;
// /////// unimplemented ////////
// herr_t H5Zregister(const void *cls);
}
// /////// unimplemented ////////
// herr_t H5Zregister(const void *cls);

View File

@ -195,6 +195,11 @@ public class HDF5Constants {
public static final long H5E_WALK_UPWARD = H5E_WALK_UPWARD();
public static final long H5E_WRITEERROR = H5E_WRITEERROR();
private static final int H5ES_STATUS_IN_PROGRESS = H5ES_STATUS_IN_PROGRESS();
private static final int H5ES_STATUS_SUCCEED = H5ES_STATUS_SUCCEED();
private static final int H5ES_STATUS_FAIL = H5ES_STATUS_FAIL();
private static final int H5ES_STATUS_CANCELED = H5ES_STATUS_CANCELED();
public static final int H5F_ACC_CREAT = H5F_ACC_CREAT();
public static final int H5F_ACC_EXCL = H5F_ACC_EXCL();
public static final int H5F_ACC_RDONLY = H5F_ACC_RDONLY();
@ -389,7 +394,10 @@ public class HDF5Constants {
public static final int H5PL_TYPE_ERROR = H5PL_TYPE_ERROR();
public static final int H5PL_TYPE_FILTER = H5PL_TYPE_FILTER();
public static final int H5PL_TYPE_VOL = H5PL_TYPE_VOL();
public static final int H5PL_TYPE_NONE = H5PL_TYPE_NONE();
public static final int H5PL_FILTER_PLUGIN = H5PL_FILTER_PLUGIN();
public static final int H5PL_VOL_PLUGIN = H5PL_VOL_PLUGIN();
public static final int H5PL_ALL_PLUGIN = H5PL_ALL_PLUGIN();
public static final int H5R_BADTYPE = H5R_BADTYPE();
@ -625,6 +633,18 @@ public class HDF5Constants {
public static final long H5T_VARIABLE = H5T_VARIABLE();
public static final int H5T_VLEN = H5T_VLEN();
public static final int H5T_VL_T = H5T_VL_T();
public static final int H5VL_CAP_FLAG_NONE = H5VL_CAP_FLAG_NONE();
public static final int H5VL_CAP_FLAG_THREADSAFE = H5VL_CAP_FLAG_THREADSAFE();
public static final long H5VL_NATIVE = H5VL_NATIVE();
public static final String H5VL_NATIVE_NAME = H5VL_NATIVE_NAME();
public static final int H5VL_NATIVE_VALUE = H5VL_NATIVE_VALUE();
public static final int H5VL_NATIVE_VERSION = H5VL_NATIVE_VERSION();
public static final int H5_VOL_INVALID = H5_VOL_INVALID();
public static final int H5_VOL_NATIVE = H5_VOL_NATIVE();
public static final int H5_VOL_RESERVED = H5_VOL_RESERVED();
public static final int H5_VOL_MAX = H5_VOL_MAX();
public static final int H5Z_CB_CONT = H5Z_CB_CONT();
public static final int H5Z_CB_ERROR = H5Z_CB_ERROR();
public static final int H5Z_CB_FAIL = H5Z_CB_FAIL();
@ -989,6 +1009,14 @@ public class HDF5Constants {
private static native final long H5E_WRITEERROR();
private static native final int H5ES_STATUS_IN_PROGRESS();
private static native final int H5ES_STATUS_SUCCEED();
private static native final int H5ES_STATUS_FAIL();
private static native final int H5ES_STATUS_CANCELED();
private static native final int H5F_ACC_CREAT();
private static native final int H5F_ACC_EXCL();
@ -1361,10 +1389,16 @@ public class HDF5Constants {
private static native final int H5PL_TYPE_FILTER();
private static native final int H5PL_TYPE_VOL();
private static native final int H5PL_TYPE_NONE();
private static native final int H5PL_FILTER_PLUGIN();
private static native final int H5PL_ALL_PLUGIN();
private static native final int H5PL_VOL_PLUGIN();
private static native final int H5R_BADTYPE();
private static native final int H5R_DATASET_REGION();
@ -1831,6 +1865,26 @@ public class HDF5Constants {
private static native final int H5T_VL_T();
private static native final int H5VL_CAP_FLAG_NONE();
private static native final int H5VL_CAP_FLAG_THREADSAFE();
private static native final long H5VL_NATIVE();
private static native final String H5VL_NATIVE_NAME();
private static native final int H5VL_NATIVE_VALUE();
private static native final int H5VL_NATIVE_VERSION();
private static native final int H5_VOL_INVALID();
private static native final int H5_VOL_NATIVE();
private static native final int H5_VOL_RESERVED();
private static native final int H5_VOL_MAX();
private static native final int H5Z_CB_CONT();
private static native final int H5Z_CB_ERROR();

View File

@ -19,6 +19,7 @@ set (HDF5_JAVA_JNI_CSRCS
${HDF5_JAVA_JNI_SOURCE_DIR}/h5sImp.c
${HDF5_JAVA_JNI_SOURCE_DIR}/h5tImp.c
${HDF5_JAVA_JNI_SOURCE_DIR}/h5util.c
${HDF5_JAVA_JNI_SOURCE_DIR}/h5vlImp.c
${HDF5_JAVA_JNI_SOURCE_DIR}/h5zImp.c
${HDF5_JAVA_JNI_SOURCE_DIR}/nativeData.c
)
@ -40,6 +41,7 @@ set (HDF5_JAVA_JNI_CHDRS
${HDF5_JAVA_JNI_SOURCE_DIR}/h5sImp.h
${HDF5_JAVA_JNI_SOURCE_DIR}/h5tImp.h
${HDF5_JAVA_JNI_SOURCE_DIR}/h5util.h
${HDF5_JAVA_JNI_SOURCE_DIR}/h5vlImp.h
${HDF5_JAVA_JNI_SOURCE_DIR}/h5zImp.h
${HDF5_JAVA_JNI_SOURCE_DIR}/nativeData.h
)

View File

@ -34,7 +34,7 @@ libhdf5_java_la_LDFLAGS = -avoid-version -shared -export-dynamic -version-info $
# Source files for the library
libhdf5_java_la_SOURCES=exceptionImp.c h5Constants.c nativeData.c h5util.c h5Imp.c \
h5aImp.c h5dImp.c h5eImp.c h5fImp.c h5gImp.c h5iImp.c h5lImp.c h5oImp.c \
h5pImp.c h5plImp.c h5rImp.c h5sImp.c h5tImp.c h5zImp.c
h5pImp.c h5plImp.c h5rImp.c h5sImp.c h5tImp.c h5vlImp.c h5zImp.c
# HDF5 Java (JNI) library depends on HDF5 Library.
libhdf5_java_la_LIBADD=$(LIBHDF5)

View File

@ -21,8 +21,10 @@
extern "C" {
#endif /* __cplusplus */
#include <jni.h>
#include "hdf5.h"
#include <jni.h>
#include <stdlib.h>
#include "h5jni.h"
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
@ -352,6 +354,15 @@ Java_hdf_hdf5lib_HDF5Constants_H5E_1WALK_1UPWARD(JNIEnv *env, jclass cls) { retu
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5E_1WRITEERROR(JNIEnv *env, jclass cls) { return H5E_WRITEERROR; }
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5ES_1STATUS_1IN_1PROGRESS(JNIEnv *env, jclass cls) { return H5ES_STATUS_IN_PROGRESS; }
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5ES_1STATUS_1SUCCEED(JNIEnv *env, jclass cls) { return H5ES_STATUS_SUCCEED; }
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5ES_1STATUS_1FAIL(JNIEnv *env, jclass cls) { return H5ES_STATUS_FAIL; }
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5ES_1STATUS_1CANCELED(JNIEnv *env, jclass cls) { return H5ES_STATUS_CANCELED; }
/* Java does not have unsigned native types */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wsign-conversion"
@ -761,8 +772,14 @@ Java_hdf_hdf5lib_HDF5Constants_H5PL_1TYPE_1ERROR(JNIEnv *env, jclass cls) { retu
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5PL_1TYPE_1FILTER(JNIEnv *env, jclass cls) { return H5PL_TYPE_FILTER; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5PL_1TYPE_1VOL(JNIEnv *env, jclass cls) { return H5PL_TYPE_VOL; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5PL_1TYPE_1NONE(JNIEnv *env, jclass cls) { return H5PL_TYPE_NONE; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5PL_1FILTER_1PLUGIN(JNIEnv *env, jclass cls) { return H5PL_FILTER_PLUGIN; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5PL_1VOL_1PLUGIN(JNIEnv *env, jclass cls) { return H5PL_VOL_PLUGIN; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5PL_1ALL_1PLUGIN(JNIEnv *env, jclass cls) { return H5PL_ALL_PLUGIN; }
JNIEXPORT jint JNICALL
@ -1236,6 +1253,28 @@ Java_hdf_hdf5lib_HDF5Constants_H5T_1VLEN(JNIEnv *env, jclass cls) { return H5T_V
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5T_1VL_1T(JNIEnv *env, jclass cls) { return sizeof(hvl_t); }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5VL_1CAP_1FLAG_1NONE(JNIEnv *env, jclass cls) { return H5VL_CAP_FLAG_NONE; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5VL_1CAP_1FLAG_1THREADSAFE(JNIEnv *env, jclass cls) { return H5VL_CAP_FLAG_THREADSAFE; }
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5VL_1NATIVE(JNIEnv *env, jclass cls) { return H5VL_NATIVE; }
JNIEXPORT jobject JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5VL_1NATIVE_1NAME(JNIEnv *env, jclass cls) { return (jstring)ENVPTR->NewStringUTF(ENVPAR H5VL_NATIVE_NAME); }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5VL_1NATIVE_1VALUE(JNIEnv *env, jclass cls) { return H5VL_NATIVE_VALUE; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5VL_1NATIVE_1VERSION(JNIEnv *env, jclass cls) { return H5VL_NATIVE_VERSION; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5_1VOL_1INVALID(JNIEnv *env, jclass cls) { return H5_VOL_INVALID; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5_1VOL_1NATIVE(JNIEnv *env, jclass cls) { return H5_VOL_NATIVE; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5_1VOL_1RESERVED(JNIEnv *env, jclass cls) { return H5_VOL_RESERVED; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5_1VOL_1MAX(JNIEnv *env, jclass cls) { return H5_VOL_MAX; }
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5Z_1CB_1CONT(JNIEnv *env, jclass cls) { return H5Z_CB_CONT; }
JNIEXPORT jint JNICALL

206
java/src/jni/h5vlImp.c Normal file
View File

@ -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 */

91
java/src/jni/h5vlImp.h Normal file
View File

@ -0,0 +1,91 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 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. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <jni.h>
/* Header for class hdf_hdf5lib_H5_H5VL */
#ifndef _Included_hdf_hdf5lib_H5_H5VL
#define _Included_hdf_hdf5lib_H5_H5VL
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*
* 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 *, jclass, jobject, jlong);
/*
* Class: hdf_hdf5lib_H5
* Method: H5VLregister_connector_by_value
* Signature: (IJ)J
*/
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5VLregister_1connector_1by_1value
(JNIEnv *, jclass, jint, jlong);
/*
* Class: hdf_hdf5lib_H5
* Method: H5VLis_connector_registered
* Signature: (Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL
Java_hdf_hdf5lib_H5_H5VLis_connector_registered
(JNIEnv *, jclass, jobject);
/*
* Class: hdf_hdf5lib_H5
* Method: H5VLget_connector_id
* Signature: (Ljava/lang/String;)J
*/
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_H5_H5VLget_1connector_1id
(JNIEnv *, jclass, jobject);
/*
* Class: hdf_hdf5lib_H5
* Method: H5VLget_connector_name
* Signature: (J)Ljava/lang/String;
*/
JNIEXPORT jobject JNICALL
Java_hdf_hdf5lib_H5_H5VLget_1connector_1name
(JNIEnv *, jclass, jlong);
/*
* Class: hdf_hdf5lib_H5
* Method: H5VLclose
* Signature: (J)V
*/
JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5VLclose
(JNIEnv *, jclass, jlong);
/*
* Class: hdf_hdf5lib_H5
* Method: H5VLunregister_connector
* Signature: (J)V
*/
JNIEXPORT void JNICALL
Java_hdf_hdf5lib_H5_H5VLunregister_1connector
(JNIEnv *, jclass, jlong);
#ifdef __cplusplus
} /* end extern "C" */
#endif /* __cplusplus */
#endif /* _Included_hdf_hdf5lib_H5_H5VL */

View File

@ -38,6 +38,7 @@ set (HDF5_JAVA_TEST_SOURCES
TestH5Ocreate
TestH5Ocopy
TestH5PL
TestH5VL
TestH5Z
)

View File

@ -69,6 +69,7 @@ noinst_JAVA = \
TestH5Ocreate.java \
TestH5Ocopy.java \
TestH5PL.java \
TestH5VL.java \
TestH5Z.java \
TestH5E.java \
TestH5Edefault.java \

117
java/test/TestH5VL.java Normal file
View File

@ -0,0 +1,117 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 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. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import hdf.hdf5lib.H5;
import hdf.hdf5lib.HDF5Constants;
import hdf.hdf5lib.exceptions.HDF5LibraryException;
import java.io.File;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
public class TestH5VL {
@Rule public TestName testname = new TestName();
private final void _deleteFile(String filename) {
File file = new File(filename);
if (file.exists()) {
try {file.delete();} catch (SecurityException e) {}
}
}
@Before
public void checkOpenIDs() {
assertTrue("H5 open ids is 0",H5.getOpenIDCount()==0);
System.out.print(testname.getMethodName());
}
@After
public void nextTestName() {
System.out.println();
}
@Test
public void testH5VLnative_init() {
try {
boolean is_registered;
is_registered = H5.H5VLis_connector_registered(HDF5Constants.H5VL_NATIVE_NAME);
assertTrue("H5.H5VLis_connector_registered H5VL_NATIVE_NAME", is_registered);
is_registered = H5.H5VLis_connector_registered("FAKE_VOL_NAME");
assertFalse("H5.H5VLis_connector_registered FAKE_VOL_NAME", is_registered);
}
catch (Throwable err) {
err.printStackTrace();
fail("H5.H5VLis_connector_registered " + err);
}
}
@Test
public void testH5VLget_connector_id() {
try {
long native_id = H5.H5VLget_connector_id(HDF5Constants.H5VL_NATIVE_NAME);
assertTrue("H5.H5VLget_connector_id H5VL_NATIVE_NAME", native_id >= 0);
assertEquals(HDF5Constants.H5VL_NATIVE, native_id);
}
catch (Throwable err) {
err.printStackTrace();
fail("H5.H5VLget_connector_id " + err);
}
}
@Test
public void testH5VLget_connector_name() {
String H5_FILE = "testFvl.h5";
long H5fid = H5.H5Fcreate(H5_FILE, HDF5Constants.H5F_ACC_TRUNC,
HDF5Constants.H5P_DEFAULT, HDF5Constants.H5P_DEFAULT);
H5.H5Fflush(H5fid, HDF5Constants.H5F_SCOPE_LOCAL);
try {
String native_name = H5.H5VLget_connector_name(H5fid);
assertTrue("H5.H5VLget_connector_name H5VL_NATIVE", native_name.compareToIgnoreCase(HDF5Constants.H5VL_NATIVE_NAME)==0);
}
catch (Throwable err) {
err.printStackTrace();
fail("H5.H5VLget_connector_name " + err);
}
finally {
if (H5fid > 0) {
try {H5.H5Fclose(H5fid);} catch (Exception ex) {}
}
_deleteFile(H5_FILE);
}
}
@Test(expected = HDF5LibraryException.class)
public void testH5VLclose_NegativeID() throws Throwable {
H5.H5VLclose(-1);
}
@Test(expected = HDF5LibraryException.class)
public void testH5VLunregister_connector_NegativeID() throws Throwable {
H5.H5VLunregister_connector(-1);
}
}

View File

@ -989,6 +989,27 @@ else
test yes = "$verbose" && $DIFF JUnit-TestH5PL.txt JUnit-TestH5PL.out |sed 's/^/ /'
fi
echo "$JAVAEXE $JAVAEXEFLAGS -Xmx1024M -Dorg.slf4j.simpleLogger.defaultLog=trace -Djava.library.path=$BLDLIBDIR -cp $CLASSPATH -ea org.junit.runner.JUnitCore test.TestH5VL"
TESTING JUnit-TestH5VL
($RUNSERIAL $JAVAEXE $JAVAEXEFLAGS -Xmx1024M -Dorg.slf4j.simpleLogger.defaultLog=trace -Djava.library.path=$BLDLIBDIR -cp $CLASSPATH -ea org.junit.runner.JUnitCore test.TestH5VL > JUnit-TestH5VL.ext)
# Extract file name, line number, version and thread IDs because they may be different
sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \
-e 's/line [0-9]*/line (number)/' \
-e 's/Time: [0-9]*\.[0-9]*/Time: XXXX/' \
-e 's/v[1-9]*\.[0-9]*\./version (number)\./' \
-e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \
JUnit-TestH5VL.ext > JUnit-TestH5VL.out
if diff JUnit-TestH5VL.out JUnit-TestH5VL.txt > /dev/null; then
echo " PASSED JUnit-TestH5VL"
else
echo "**FAILED** JUnit-TestH5VL"
echo " Expected result differs from actual result"
nerrors="`expr $nerrors + 1`"
test yes = "$verbose" && $DIFF JUnit-TestH5VL.txt JUnit-TestH5VL.out |sed 's/^/ /'
fi
echo "$JAVAEXE $JAVAEXEFLAGS -Xmx1024M -Dorg.slf4j.simpleLogger.defaultLog=trace -Djava.library.path=$BLDLIBDIR -cp $CLASSPATH -ea org.junit.runner.JUnitCore test.TestH5Z"
TESTING JUnit-TestH5Z
($RUNSERIAL $JAVAEXE $JAVAEXEFLAGS -Xmx1024M -Dorg.slf4j.simpleLogger.defaultLog=trace -Djava.library.path=$BLDLIBDIR -cp $CLASSPATH -ea org.junit.runner.JUnitCore test.TestH5Z > JUnit-TestH5Z.ext)

View File

@ -0,0 +1,11 @@
JUnit version 4.11
.testH5VLget_connector_id
.testH5VLnative_init
.testH5VLget_connector_name
.testH5VLclose_NegativeID
.testH5VLunregister_connector_NegativeID
Time: XXXX
OK (5 tests)