diff options
-rw-r--r-- | fortran/src/H5Of.c | 97 | ||||
-rw-r--r-- | fortran/src/H5_f.c | 65 | ||||
-rw-r--r-- | fortran/src/H5_ff.F90 | 153 | ||||
-rw-r--r-- | fortran/src/H5f90global.F90 | 110 | ||||
-rw-r--r-- | fortran/src/H5f90proto.h | 8 | ||||
-rw-r--r-- | fortran/src/hdf5_fortrandll.def.in | 10 | ||||
-rw-r--r-- | fortran/test/tH5G_1_8.F90 | 2 | ||||
-rw-r--r-- | fortran/test/tH5I.F90 | 2 | ||||
-rw-r--r-- | fortran/test/tH5P_F03.F90 | 12 | ||||
-rw-r--r-- | fortran/test/tH5T_F03.F90 | 30 | ||||
-rw-r--r-- | fortran/test/tf.F90 | 8 | ||||
-rw-r--r-- | fortran/testpar/async.F90 | 101 | ||||
-rw-r--r-- | src/H5Fpublic.h | 1 |
13 files changed, 384 insertions, 215 deletions
diff --git a/fortran/src/H5Of.c b/fortran/src/H5Of.c index 186a9a2..54e5187 100644 --- a/fortran/src/H5Of.c +++ b/fortran/src/H5Of.c @@ -132,50 +132,6 @@ done: return ret_value; } -/****if* H5Of/h5ovisit_c - * NAME - * h5ovisit_c - * PURPOSE - * Calls H5Ovisit - * INPUTS - * object_id - Identifier specifying subject group - * index_type - Type of index which determines the order - * order - Order within index - * idx - Iteration position at which to start - * op - Callback function passing data regarding the link to the calling application - * op_data - User-defined pointer to data required by the application for its processing of the link - * fields - Flags specifying the fields to include in object_info. - * - * OUTPUTS - * idx - Position at which an interrupted iteration may be restarted - * - * RETURNS - * >0 on success, 0< on failure - * AUTHOR - * M. Scot Breitenfeld - * November 19, 2008 - * SOURCE - */ -int_f -h5ovisit_c(hid_t_f *group_id, int_f *index_type, int_f *order, H5O_iterate2_t op, void *op_data, - int_f *fields) -/******/ -{ - int_f ret_value = -1; /* Return value */ - herr_t func_ret_value; /* H5Linterate return value */ - - /* - * Call H5Ovisit - */ - - func_ret_value = H5Ovisit3((hid_t)*group_id, (H5_index_t)*index_type, (H5_iter_order_t)*order, op, - op_data, (unsigned)*fields); - - ret_value = (int_f)func_ret_value; - - return ret_value; -} - /****if* H5Of/h5oopen_by_token_c * NAME * h5oopen_by_token_c @@ -358,59 +314,6 @@ done: return ret_value; } -/****if* H5Of/h5ovisit_by_name_c - * NAME - * h5ovisit_by_name_c - * PURPOSE - * Calls H5Ovisit_by_name - * INPUTS - * object_id - Identifier specifying subject group. - * index_type - Type of index which determines the order. - * order - Order within index. - * idx - Iteration position at which to start. - * op - Callback function passing data regarding the link to the calling application. - * op_data - User-defined pointer to data required by the application for its processing of the link. - * fields - Flags specifying the fields to include in object_info. - * - * OUTPUTS - * idx - Position at which an interrupted iteration may be restarted. - * - * RETURNS - * >0 on success, 0< on failure - * AUTHOR - * M. Scot Breitenfeld - * May 16, 2012 - * SOURCE - */ -int_f -h5ovisit_by_name_c(hid_t_f *loc_id, _fcd object_name, size_t_f *namelen, int_f *index_type, int_f *order, - H5O_iterate2_t op, void *op_data, hid_t_f *lapl_id, int_f *fields) -/******/ -{ - int_f ret_value = -1; /* Return value */ - herr_t func_ret_value; /* H5Linterate return value */ - char *c_object_name = NULL; /* Buffer to hold C string */ - - /* - * Convert FORTRAN name to C name - */ - if ((c_object_name = HD5f2cstring(object_name, (size_t)*namelen)) == NULL) - HGOTO_DONE(FAIL); - - /* - * Call H5Ovisit_by_name - */ - func_ret_value = - H5Ovisit_by_name3((hid_t)*loc_id, c_object_name, (H5_index_t)*index_type, (H5_iter_order_t)*order, op, - op_data, (unsigned)*fields, (hid_t)*lapl_id); - ret_value = (int_f)func_ret_value; - -done: - if (c_object_name) - HDfree(c_object_name); - return ret_value; -} - /****if* H5Of/h5odecr_refcount_c * NAME * h5odecr_refcount_c diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index a9f2d96..396acf9 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -428,8 +428,9 @@ h5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid H5ES_status_t *h5es_flags, hid_t_f *h5es_hid_flags, int_f *h5f_flags, int_f *h5fd_flags, hid_t_f *h5fd_hid_flags, int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags, - hid_t_f *h5s_hid_flags, hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, int_f *h5z_flags, - int_f *h5_generic_flags, haddr_t_f *h5_haddr_generic_flags) + hid_t_f *h5s_hid_flags, hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, int_f *h5vl_flags, + uint64_t *h5vl_int64_flags, int_f *h5z_flags, int_f *h5_generic_flags, + haddr_t_f *h5_haddr_generic_flags) /******/ { /* @@ -821,6 +822,66 @@ h5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid h5t_flags[34] = (int_f)H5T_DIR_DESCEND; /* + * H5VL flags + */ + + /* + * Capability flags for VOL connectors + */ + + h5vl_flags[0] = (int_f)H5VL_VERSION; + h5vl_flags[1] = (int_f)H5_VOL_INVALID; + h5vl_flags[2] = (int_f)H5_VOL_NATIVE; + + h5vl_int64_flags[0] = H5VL_CAP_FLAG_NONE; + h5vl_int64_flags[1] = H5VL_CAP_FLAG_THREADSAFE; + h5vl_int64_flags[2] = H5VL_CAP_FLAG_ASYNC; + h5vl_int64_flags[3] = H5VL_CAP_FLAG_NATIVE_FILES; + h5vl_int64_flags[4] = H5VL_CAP_FLAG_ATTR_BASIC; + h5vl_int64_flags[5] = H5VL_CAP_FLAG_ATTR_MORE; + h5vl_int64_flags[6] = H5VL_CAP_FLAG_DATASET_BASIC; + h5vl_int64_flags[7] = H5VL_CAP_FLAG_DATASET_MORE; + h5vl_int64_flags[8] = H5VL_CAP_FLAG_FILE_BASIC; + h5vl_int64_flags[9] = H5VL_CAP_FLAG_FILE_MORE; + h5vl_int64_flags[10] = H5VL_CAP_FLAG_GROUP_BASIC; + h5vl_int64_flags[11] = H5VL_CAP_FLAG_GROUP_MORE; + h5vl_int64_flags[12] = H5VL_CAP_FLAG_LINK_BASIC; + h5vl_int64_flags[13] = H5VL_CAP_FLAG_LINK_MORE; + h5vl_int64_flags[14] = H5VL_CAP_FLAG_MAP_BASIC; + h5vl_int64_flags[15] = H5VL_CAP_FLAG_MAP_MORE; + h5vl_int64_flags[16] = H5VL_CAP_FLAG_OBJECT_BASIC; + h5vl_int64_flags[17] = H5VL_CAP_FLAG_OBJECT_MORE; + h5vl_int64_flags[18] = H5VL_CAP_FLAG_REF_BASIC; + h5vl_int64_flags[19] = H5VL_CAP_FLAG_REF_MORE; + h5vl_int64_flags[20] = H5VL_CAP_FLAG_OBJ_REF; + h5vl_int64_flags[21] = H5VL_CAP_FLAG_REG_REF; + h5vl_int64_flags[22] = H5VL_CAP_FLAG_ATTR_REF; + h5vl_int64_flags[23] = H5VL_CAP_FLAG_STORED_DATATYPES; + h5vl_int64_flags[24] = H5VL_CAP_FLAG_CREATION_ORDER; + h5vl_int64_flags[25] = H5VL_CAP_FLAG_ITERATE; + h5vl_int64_flags[26] = H5VL_CAP_FLAG_STORAGE_SIZE; + h5vl_int64_flags[27] = H5VL_CAP_FLAG_BY_IDX; + h5vl_int64_flags[28] = H5VL_CAP_FLAG_GET_PLIST; + h5vl_int64_flags[29] = H5VL_CAP_FLAG_FLUSH_REFRESH; + h5vl_int64_flags[30] = H5VL_CAP_FLAG_EXTERNAL_LINKS; + h5vl_int64_flags[31] = H5VL_CAP_FLAG_HARD_LINKS; + h5vl_int64_flags[32] = H5VL_CAP_FLAG_SOFT_LINKS; + h5vl_int64_flags[33] = H5VL_CAP_FLAG_UD_LINKS; + h5vl_int64_flags[34] = H5VL_CAP_FLAG_TRACK_TIMES; + h5vl_int64_flags[35] = H5VL_CAP_FLAG_MOUNT; + h5vl_int64_flags[36] = H5VL_CAP_FLAG_FILTERS; + h5vl_int64_flags[37] = H5VL_CAP_FLAG_FILL_VALUES; + + h5vl_int64_flags[38] = H5VL_OPT_QUERY_SUPPORTED; + h5vl_int64_flags[39] = H5VL_OPT_QUERY_READ_DATA; + h5vl_int64_flags[40] = H5VL_OPT_QUERY_WRITE_DATA; + h5vl_int64_flags[41] = H5VL_OPT_QUERY_QUERY_METADATA; + h5vl_int64_flags[42] = H5VL_OPT_QUERY_MODIFY_METADATA; + h5vl_int64_flags[43] = H5VL_OPT_QUERY_COLLECTIVE; + h5vl_int64_flags[44] = H5VL_OPT_QUERY_NO_ASYNC; + h5vl_int64_flags[45] = H5VL_OPT_QUERY_MULTI_OBJ; + + /* * H5Z flags */ h5z_flags[0] = (int_f)H5Z_FILTER_ERROR; diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90 index 651c96d..ecea23d 100644 --- a/fortran/src/H5_ff.F90 +++ b/fortran/src/H5_ff.F90 @@ -51,7 +51,7 @@ MODULE H5LIB - USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR, C_INTPTR_T + USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR, C_INTPTR_T, C_INT64_T USE H5GLOBAL IMPLICIT NONE @@ -149,6 +149,13 @@ MODULE H5LIB ! INTEGER, PARAMETER :: H5T_FLAGS_LEN = 35 INTEGER, DIMENSION(1:H5T_FLAGS_LEN) :: H5T_flags + ! + ! H5VL flags declaration + ! + INTEGER, PARAMETER :: H5VL_FLAGS_LEN = 3 + INTEGER, DIMENSION(1:H5VL_FLAGS_LEN) :: H5VL_flags + INTEGER, PARAMETER :: H5VL_INT64_FLAGS_LEN = 46 + INTEGER(C_INT64_T), DIMENSION(1:H5VL_INT64_FLAGS_LEN) :: H5VL_int64_flags ! ! H5Z flags declaration @@ -209,11 +216,13 @@ CONTAINS i_H5S_hid_flags, & i_H5S_hsize_flags, & i_H5T_flags, & + i_H5VL_flags, & + i_H5VL_int64_flags, & i_H5Z_flags, & i_H5generic_flags, & i_H5generic_haddr_flags) & BIND(C,NAME='h5init_flags_c') - IMPORT :: HID_T, SIZE_T, HSIZE_T, HADDR_T + IMPORT :: HID_T, SIZE_T, HSIZE_T, HADDR_T, C_INT64_T IMPORT :: H5D_FLAGS_LEN, H5D_SIZE_FLAGS_LEN, & H5E_FLAGS_LEN, H5E_HID_FLAGS_LEN, & H5ES_FLAGS_LEN, H5ES_HID_FLAGS_LEN, & @@ -221,31 +230,34 @@ CONTAINS H5FD_HID_FLAGS_LEN, H5I_FLAGS_LEN, H5L_FLAGS_LEN, & H5O_FLAGS_LEN, H5P_FLAGS_LEN, H5P_FLAGS_INT_LEN, & H5R_FLAGS_LEN, H5S_FLAGS_LEN, H5S_HID_FLAGS_LEN, H5S_HSIZE_FLAGS_LEN, & - H5T_FLAGS_LEN, H5Z_FLAGS_LEN, H5generic_FLAGS_LEN, H5generic_haddr_FLAGS_LEN + H5T_FLAGS_LEN, H5VL_FLAGS_LEN, H5VL_INT64_FLAGS_LEN, & + H5Z_FLAGS_LEN, H5generic_FLAGS_LEN, H5generic_haddr_FLAGS_LEN IMPLICIT NONE - INTEGER , DIMENSION(1:H5D_FLAGS_LEN) :: i_H5D_flags - INTEGER(SIZE_T) , DIMENSION(1:H5D_SIZE_FLAGS_LEN) :: i_H5D_size_flags - INTEGER , DIMENSION(1:H5E_FLAGS_LEN) :: i_H5E_flags - INTEGER(HID_T) , DIMENSION(1:H5E_HID_FLAGS_LEN) :: i_H5E_hid_flags - INTEGER , DIMENSION(1:H5ES_FLAGS_LEN) :: i_H5ES_flags - INTEGER(HID_T) , DIMENSION(1:H5ES_HID_FLAGS_LEN) :: i_H5ES_hid_flags - INTEGER , DIMENSION(1:H5F_FLAGS_LEN) :: i_H5F_flags - INTEGER , DIMENSION(1:H5G_FLAGS_LEN) :: i_H5G_flags - INTEGER , DIMENSION(1:H5FD_FLAGS_LEN) :: i_H5FD_flags - INTEGER(HID_T) , DIMENSION(1:H5FD_HID_FLAGS_LEN) :: i_H5FD_hid_flags - INTEGER , DIMENSION(1:H5I_FLAGS_LEN) :: i_H5I_flags - INTEGER , DIMENSION(1:H5L_FLAGS_LEN) :: i_H5L_flags - INTEGER , DIMENSION(1:H5O_FLAGS_LEN) :: i_H5O_flags - INTEGER(HID_T) , DIMENSION(1:H5P_FLAGS_LEN) :: i_H5P_flags - INTEGER , DIMENSION(1:H5P_FLAGS_INT_LEN) :: i_H5P_flags_int - INTEGER , DIMENSION(1:H5R_FLAGS_LEN) :: i_H5R_flags - INTEGER , DIMENSION(1:H5S_FLAGS_LEN) :: i_H5S_flags - INTEGER(HID_T) , DIMENSION(1:H5S_HID_FLAGS_LEN) :: i_H5S_hid_flags - INTEGER(HSIZE_T), DIMENSION(1:H5S_HSIZE_FLAGS_LEN) :: i_H5S_hsize_flags - INTEGER , DIMENSION(1:H5T_FLAGS_LEN) :: i_H5T_flags - INTEGER , DIMENSION(1:H5Z_FLAGS_LEN) :: i_H5Z_flags - INTEGER , DIMENSION(1:H5generic_FLAGS_LEN) :: i_H5generic_flags - INTEGER(HADDR_T), DIMENSION(1:H5generic_haddr_FLAGS_LEN) :: i_H5generic_haddr_flags + INTEGER , DIMENSION(1:H5D_FLAGS_LEN) :: i_H5D_flags + INTEGER(SIZE_T) , DIMENSION(1:H5D_SIZE_FLAGS_LEN) :: i_H5D_size_flags + INTEGER , DIMENSION(1:H5E_FLAGS_LEN) :: i_H5E_flags + INTEGER(HID_T) , DIMENSION(1:H5E_HID_FLAGS_LEN) :: i_H5E_hid_flags + INTEGER , DIMENSION(1:H5ES_FLAGS_LEN) :: i_H5ES_flags + INTEGER(HID_T) , DIMENSION(1:H5ES_HID_FLAGS_LEN) :: i_H5ES_hid_flags + INTEGER , DIMENSION(1:H5F_FLAGS_LEN) :: i_H5F_flags + INTEGER , DIMENSION(1:H5G_FLAGS_LEN) :: i_H5G_flags + INTEGER , DIMENSION(1:H5FD_FLAGS_LEN) :: i_H5FD_flags + INTEGER(HID_T) , DIMENSION(1:H5FD_HID_FLAGS_LEN) :: i_H5FD_hid_flags + INTEGER , DIMENSION(1:H5I_FLAGS_LEN) :: i_H5I_flags + INTEGER , DIMENSION(1:H5L_FLAGS_LEN) :: i_H5L_flags + INTEGER , DIMENSION(1:H5O_FLAGS_LEN) :: i_H5O_flags + INTEGER(HID_T) , DIMENSION(1:H5P_FLAGS_LEN) :: i_H5P_flags + INTEGER , DIMENSION(1:H5P_FLAGS_INT_LEN) :: i_H5P_flags_int + INTEGER , DIMENSION(1:H5R_FLAGS_LEN) :: i_H5R_flags + INTEGER , DIMENSION(1:H5S_FLAGS_LEN) :: i_H5S_flags + INTEGER(HID_T) , DIMENSION(1:H5S_HID_FLAGS_LEN) :: i_H5S_hid_flags + INTEGER(HSIZE_T) , DIMENSION(1:H5S_HSIZE_FLAGS_LEN) :: i_H5S_hsize_flags + INTEGER , DIMENSION(1:H5T_FLAGS_LEN) :: i_H5T_flags + INTEGER , DIMENSION(1:H5VL_FLAGS_LEN) :: i_H5VL_flags + INTEGER(C_INT64_T), DIMENSION(1:H5VL_INT64_FLAGS_LEN) :: i_H5VL_int64_flags + INTEGER , DIMENSION(1:H5Z_FLAGS_LEN) :: i_H5Z_flags + INTEGER , DIMENSION(1:H5generic_FLAGS_LEN) :: i_H5generic_flags + INTEGER(HADDR_T) , DIMENSION(1:H5generic_haddr_FLAGS_LEN) :: i_H5generic_haddr_flags END FUNCTION h5init_flags_c INTEGER FUNCTION h5init1_flags_c( i_H5LIB_flags ) & @@ -331,6 +343,8 @@ CONTAINS H5S_hid_flags, & H5S_hsize_flags, & H5T_flags, & + H5VL_flags, & + H5VL_int64_flags, & H5Z_flags, & H5generic_flags,& H5generic_haddr_flags) @@ -454,28 +468,28 @@ CONTAINS ! ! H5FD flags ! - H5FD_MPIO_INDEPENDENT_F = H5FD_flags(1) - H5FD_MPIO_COLLECTIVE_F = H5FD_flags(2) - H5FD_MEM_NOLIST_F = H5FD_flags(3) - H5FD_MEM_DEFAULT_F = H5FD_flags(4) - H5FD_MEM_SUPER_F = H5FD_flags(5) - H5FD_MEM_BTREE_F = H5FD_flags(6) - H5FD_MEM_DRAW_F = H5FD_flags(7) - H5FD_MEM_GHEAP_F = H5FD_flags(8) - H5FD_MEM_LHEAP_F = H5FD_flags(9) - H5FD_MEM_OHDR_F = H5FD_flags(10) - H5FD_MEM_NTYPES_F = H5FD_flags(11) + H5FD_MPIO_INDEPENDENT_F = H5FD_flags(1) + H5FD_MPIO_COLLECTIVE_F = H5FD_flags(2) + H5FD_MEM_NOLIST_F = H5FD_flags(3) + H5FD_MEM_DEFAULT_F = H5FD_flags(4) + H5FD_MEM_SUPER_F = H5FD_flags(5) + H5FD_MEM_BTREE_F = H5FD_flags(6) + H5FD_MEM_DRAW_F = H5FD_flags(7) + H5FD_MEM_GHEAP_F = H5FD_flags(8) + H5FD_MEM_LHEAP_F = H5FD_flags(9) + H5FD_MEM_OHDR_F = H5FD_flags(10) + H5FD_MEM_NTYPES_F = H5FD_flags(11) H5FD_SUBFILING_CURR_FAPL_VERSION_F = H5FD_flags(12) H5FD_SUBFILING_FAPL_MAGIC_F = H5FD_flags(13) H5FD_SUBFILING_DEFAULT_STRIPE_COUNT_F = H5FD_flags(14) H5FD_IOC_FAPL_MAGIC_F = H5FD_flags(15) H5FD_IOC_CURR_FAPL_VERSION_F = H5FD_flags(16) H5FD_IOC_DEFAULT_THREAD_POOL_SIZE_F = H5FD_flags(17) - SELECT_IOC_ONE_PER_NODE_F = H5FD_flags(18) - SELECT_IOC_EVERY_NTH_RANK_F = H5FD_flags(19) - SELECT_IOC_WITH_CONFIG_F = H5FD_flags(20) - SELECT_IOC_TOTAL_F = H5FD_flags(21) - IOC_SELECTION_OPTIONS_F = H5FD_flags(22) + SELECT_IOC_ONE_PER_NODE_F = H5FD_flags(18) + SELECT_IOC_EVERY_NTH_RANK_F = H5FD_flags(19) + SELECT_IOC_WITH_CONFIG_F = H5FD_flags(20) + SELECT_IOC_TOTAL_F = H5FD_flags(21) + IOC_SELECTION_OPTIONS_F = H5FD_flags(22) ! ! H5FD file driver flags @@ -649,6 +663,61 @@ CONTAINS H5T_DIR_ASCEND_F = H5T_flags(34) H5T_DIR_DESCEND_F = H5T_flags(35) ! + ! H5VL flags + ! + H5VL_VERSION_F = H5VL_flags(1) + H5_VOL_INVALID_F = H5VL_flags(2) + H5_VOL_NATIVE_F = H5VL_flags(3) + + H5VL_CAP_FLAG_NONE_F = H5VL_int64_flags(1) + H5VL_CAP_FLAG_THREADSAFE_F = H5VL_int64_flags(2) + H5VL_CAP_FLAG_ASYNC_F = H5VL_int64_flags(3) + H5VL_CAP_FLAG_NATIVE_FILES_F = H5VL_int64_flags(4) + H5VL_CAP_FLAG_ATTR_BASIC_F = H5VL_int64_flags(5) + H5VL_CAP_FLAG_ATTR_MORE_F = H5VL_int64_flags(6) + H5VL_CAP_FLAG_DATASET_BASIC_F = H5VL_int64_flags(7) + H5VL_CAP_FLAG_DATASET_MORE_F = H5VL_int64_flags(8) + H5VL_CAP_FLAG_FILE_BASIC_F = H5VL_int64_flags(9) + H5VL_CAP_FLAG_FILE_MORE_F = H5VL_int64_flags(10) + H5VL_CAP_FLAG_GROUP_BASIC_F = H5VL_int64_flags(11) + H5VL_CAP_FLAG_GROUP_MORE_F = H5VL_int64_flags(12) + H5VL_CAP_FLAG_LINK_BASIC_F = H5VL_int64_flags(13) + H5VL_CAP_FLAG_LINK_MORE_F = H5VL_int64_flags(14) + H5VL_CAP_FLAG_MAP_BASIC_F = H5VL_int64_flags(15) + H5VL_CAP_FLAG_MAP_MORE_F = H5VL_int64_flags(16) + H5VL_CAP_FLAG_OBJECT_BASIC_F = H5VL_int64_flags(17) + H5VL_CAP_FLAG_OBJECT_MORE_F = H5VL_int64_flags(18) + H5VL_CAP_FLAG_REF_BASIC_F = H5VL_int64_flags(19) + H5VL_CAP_FLAG_REF_MORE_F = H5VL_int64_flags(20) + H5VL_CAP_FLAG_OBJ_REF_F = H5VL_int64_flags(21) + H5VL_CAP_FLAG_REG_REF_F = H5VL_int64_flags(22) + H5VL_CAP_FLAG_ATTR_REF_F = H5VL_int64_flags(23) + H5VL_CAP_FLAG_STORED_DATATYPES_F = H5VL_int64_flags(24) + H5VL_CAP_FLAG_CREATION_ORDER_F = H5VL_int64_flags(25) + H5VL_CAP_FLAG_ITERATE_F = H5VL_int64_flags(26) + H5VL_CAP_FLAG_STORAGE_SIZE_F = H5VL_int64_flags(27) + H5VL_CAP_FLAG_BY_IDX_F = H5VL_int64_flags(28) + H5VL_CAP_FLAG_GET_PLIST_F = H5VL_int64_flags(29) + H5VL_CAP_FLAG_FLUSH_REFRESH_F = H5VL_int64_flags(30) + H5VL_CAP_FLAG_EXTERNAL_LINKS_F = H5VL_int64_flags(31) + H5VL_CAP_FLAG_HARD_LINKS_F = H5VL_int64_flags(32) + H5VL_CAP_FLAG_SOFT_LINKS_F = H5VL_int64_flags(33) + H5VL_CAP_FLAG_UD_LINKS_F = H5VL_int64_flags(34) + H5VL_CAP_FLAG_TRACK_TIMES_F = H5VL_int64_flags(35) + H5VL_CAP_FLAG_MOUNT_F = H5VL_int64_flags(36) + H5VL_CAP_FLAG_FILTERS_F = H5VL_int64_flags(37) + H5VL_CAP_FLAG_FILL_VALUES_F = H5VL_int64_flags(38) + + H5VL_OPT_QUERY_SUPPORTED_F = H5VL_int64_flags(39) + H5VL_OPT_QUERY_READ_DATA_F = H5VL_int64_flags(40) + H5VL_OPT_QUERY_WRITE_DATA_F = H5VL_int64_flags(41) + H5VL_OPT_QUERY_QUERY_METADATA_F = H5VL_int64_flags(42) + H5VL_OPT_QUERY_MODIFY_METADATA_F = H5VL_int64_flags(43) + H5VL_OPT_QUERY_COLLECTIVE_F = H5VL_int64_flags(44) + H5VL_OPT_QUERY_NO_ASYNC_F = H5VL_int64_flags(45) + H5VL_OPT_QUERY_MULTI_OBJ_F = H5VL_int64_flags(46) + + ! ! H5Z flags ! H5Z_FILTER_ERROR_F = H5Z_flags(1) diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90 index c37e22d..049bf26 100644 --- a/fortran/src/H5f90global.F90 +++ b/fortran/src/H5f90global.F90 @@ -819,6 +819,116 @@ MODULE H5GLOBAL INTEGER :: H5T_DIR_DESCEND_F !< H5T_DIR_DESCEND !> @} ! + ! H5VL flags declaration + ! + !DEC$if defined(BUILD_HDF5_DLL) + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_VERSION_F + !DEC$ATTRIBUTES DLLEXPORT :: H5_VOL_INVALID_F + !DEC$ATTRIBUTES DLLEXPORT :: H5_VOL_NATIVE_F + + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_NONE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_THREADSAFE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_ASYNC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_NATIVE_FILES_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_ATTR_BASIC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_ATTR_MORE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_DATASET_BASIC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_DATASET_MORE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_FILE_BASIC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_FILE_MORE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_GROUP_BASIC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_GROUP_MORE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_LINK_BASIC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_LINK_MORE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_MAP_BASIC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_MAP_MORE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_OBJECT_BASIC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_OBJECT_MORE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_REF_BASIC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_REF_MORE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_OBJ_REF_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_REG_REF_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_ATTR_REF_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_STORED_DATATYPES_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_CREATION_ORDER_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_ITERATE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_STORAGE_SIZE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_BY_IDX_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_GET_PLIST_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_FLUSH_REFRESH_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_EXTERNAL_LINKS_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_HARD_LINKS_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_SOFT_LINKS_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_UD_LINKS_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_TRACK_TIMES_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_MOUNT_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_FILTERS_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_CAP_FLAG_FILL_VALUES_F + + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_OPT_QUERY_SUPPORTED_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_OPT_QUERY_READ_DATA_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_OPT_QUERY_WRITE_DATA_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_OPT_QUERY_QUERY_METADATA_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_OPT_QUERY_MODIFY_METADATA_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_OPT_QUERY_COLLECTIVE_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_OPT_QUERY_NO_ASYNC_F + !DEC$ATTRIBUTES DLLEXPORT :: H5VL_OPT_QUERY_MULTI_OBJ_F + !DEC$endif +!> \addtogroup FH5VL +!> @{ + INTEGER :: H5VL_VERSION_F !< H5VL_VERSION + INTEGER :: H5_VOL_INVALID_F !< H5_VOL_INVALID + INTEGER :: H5_VOL_NATIVE_F !< H5_VOL_NATIVE + + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_NONE_F !< H5VL_CAP_FLAG_NONE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_THREADSAFE_F !< H5VL_CAP_FLAG_THREADSAFE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_ASYNC_F !< H5VL_CAP_FLAG_ASYNC + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_NATIVE_FILES_F !< H5VL_CAP_FLAG_NATIVE_FILES + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_ATTR_BASIC_F !< H5VL_CAP_FLAG_ATTR_BASIC + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_ATTR_MORE_F !< H5VL_CAP_FLAG_ATTR_MORE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_DATASET_BASIC_F !< H5VL_CAP_FLAG_DATASET_BASIC + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_DATASET_MORE_F !< H5VL_CAP_FLAG_DATASET_MORE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_FILE_BASIC_F !< H5VL_CAP_FLAG_FILE_BASIC + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_FILE_MORE_F !< H5VL_CAP_FLAG_FILE_MORE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_GROUP_BASIC_F !< H5VL_CAP_FLAG_GROUP_BASIC + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_GROUP_MORE_F !< H5VL_CAP_FLAG_GROUP_MORE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_LINK_BASIC_F !< H5VL_CAP_FLAG_LINK_BASIC + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_LINK_MORE_F !< H5VL_CAP_FLAG_LINK_MORE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_MAP_BASIC_F !< H5VL_CAP_FLAG_MAP_BASIC + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_MAP_MORE_F !< H5VL_CAP_FLAG_MAP_MORE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_OBJECT_BASIC_F !< H5VL_CAP_FLAG_OBJECT_BASIC + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_OBJECT_MORE_F !< H5VL_CAP_FLAG_OBJECT_MORE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_REF_BASIC_F !< H5VL_CAP_FLAG_REF_BASIC + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_REF_MORE_F !< H5VL_CAP_FLAG_REF_MORE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_OBJ_REF_F !< H5VL_CAP_FLAG_OBJ_REF + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_REG_REF_F !< H5VL_CAP_FLAG_REG_REF + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_ATTR_REF_F !< H5VL_CAP_FLAG_ATTR_REF + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_STORED_DATATYPES_F !< H5VL_CAP_FLAG_STORED_DATATYPES + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_CREATION_ORDER_F !< H5VL_CAP_FLAG_CREATION_ORDER + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_ITERATE_F !< H5VL_CAP_FLAG_ITERATE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_STORAGE_SIZE_F !< H5VL_CAP_FLAG_STORAGE_SIZE + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_BY_IDX_F !< H5VL_CAP_FLAG_BY_IDX + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_GET_PLIST_F !< H5VL_CAP_FLAG_GET_PLIST + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_FLUSH_REFRESH_F !< H5VL_CAP_FLAG_FLUSH_REFRESH + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_EXTERNAL_LINKS_F !< H5VL_CAP_FLAG_EXTERNAL_LINKS + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_HARD_LINKS_F !< H5VL_CAP_FLAG_HARD_LINKS + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_SOFT_LINKS_F !< H5VL_CAP_FLAG_SOFT_LINKS + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_UD_LINKS_F !< H5VL_CAP_FLAG_UD_LINKS + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_TRACK_TIMES_F !< H5VL_CAP_FLAG_TRACK_TIMES + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_MOUNT_F !< H5VL_CAP_FLAG_MOUNT + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_FILTERS_F !< H5VL_CAP_FLAG_FILTERS + INTEGER(C_INT64_T) :: H5VL_CAP_FLAG_FILL_VALUES_F !< H5VL_CAP_FLAG_FILL_VALUES + + INTEGER(C_INT64_T) :: H5VL_OPT_QUERY_SUPPORTED_F !< H5VL_OPT_QUERY_SUPPORTED + INTEGER(C_INT64_T) :: H5VL_OPT_QUERY_READ_DATA_F !< H5VL_OPT_QUERY_READ_DATA + INTEGER(C_INT64_T) :: H5VL_OPT_QUERY_WRITE_DATA_F !< H5VL_OPT_QUERY_WRITE_DATA + INTEGER(C_INT64_T) :: H5VL_OPT_QUERY_QUERY_METADATA_F !< H5VL_OPT_QUERY_QUERY_METADATA + INTEGER(C_INT64_T) :: H5VL_OPT_QUERY_MODIFY_METADATA_F !< H5VL_OPT_QUERY_MODIFY_METADATA + INTEGER(C_INT64_T) :: H5VL_OPT_QUERY_COLLECTIVE_F !< H5VL_OPT_QUERY_COLLECTIVE + INTEGER(C_INT64_T) :: H5VL_OPT_QUERY_NO_ASYNC_F !< H5VL_OPT_QUERY_NO_ASYNC + INTEGER(C_INT64_T) :: H5VL_OPT_QUERY_MULTI_OBJ_F !< H5VL_OPT_QUERY_MULTI_OBJ +!> @} + ! ! H5Z flags declaration ! !DEC$if defined(BUILD_HDF5_DLL) diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h index 11addfa..5b34dd6 100644 --- a/fortran/src/H5f90proto.h +++ b/fortran/src/H5f90proto.h @@ -344,11 +344,6 @@ H5_FCDLL int_f h5oclose_c(hid_t_f *object_id); H5_FCDLL int_f h5oopen_by_token_c(hid_t_f *loc_id, H5O_token_t *token, hid_t_f *obj_id); H5_FCDLL int_f h5olink_c(hid_t_f *object_id, hid_t_f *new_loc_id, _fcd name, size_t_f *namelen, hid_t_f *lcpl_id, hid_t_f *lapl_id); -H5_FCDLL int_f h5ovisit_c(hid_t_f *group_id, int_f *index_type, int_f *order, H5O_iterate2_t op, - void *op_data, int_f *fields); -H5_FCDLL int_f h5ovisit_by_name_c(hid_t_f *loc_id, _fcd object_name, size_t_f *namelen, int_f *index_type, - int_f *order, H5O_iterate2_t op, void *op_data, hid_t_f *lapl_id, - int_f *fields); H5_FCDLL int_f h5oget_info_c(hid_t_f *object_id, H5O_info_t_f *object_info, int_f *fields); H5_FCDLL int_f h5oget_info_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *namelen, int_f *index_field, int_f *order, hsize_t_f *n, hid_t_f *lapl_id, H5O_info_t_f *object_info, @@ -585,7 +580,8 @@ H5_FCDLL int_f h5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags, hid_t_f *h5p_flags, int_f *h5p_flags_int, int_f *h5r_flags, int_f *h5s_flags, hid_t_f *h5s_hid_flags, hsize_t_f *h5s_hsize_flags, int_f *h5t_flags, - int_f *h5z_flags, int_f *h5_generic_flags, haddr_t_f *h5_haddr_generic_flags); + int_f *h5vl_flags, uint64_t *h5vl_int64_flags, int_f *h5z_flags, + int_f *h5_generic_flags, haddr_t_f *h5_haddr_generic_flags); H5_FCDLL int_f h5init1_flags_c(int_f *h5lib_flags); H5_FCDLL int_f h5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum); H5_FCDLL int_f h5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum); diff --git a/fortran/src/hdf5_fortrandll.def.in b/fortran/src/hdf5_fortrandll.def.in index 4719633..9e1bb2e 100644 --- a/fortran/src/hdf5_fortrandll.def.in +++ b/fortran/src/hdf5_fortrandll.def.in @@ -107,6 +107,15 @@ H5E_mp_H5EPRINT_F H5E_mp_H5EGET_MAJOR_F H5E_mp_H5EGET_MINOR_F H5E_mp_H5ESET_AUTO_F +; H5ES +H5ES_mp_H5ESCREATE_F +H5ES_mp_H5ESGET_COUNT_F +H5ES_mp_H5ESGET_OP_COUNTER_F +H5ES_mp_H5ESWAIT_F +H5ES_mp_H5ESCANCEL_F +H5ES_mp_H5ESGET_ERR_STATUS_F +H5ES_mp_H5ESGET_ERR_COUNT_F +H5ES_mp_H5ESCLOSE_F ; H5F H5F_mp_H5FCREATE_F H5F_mp_H5FCREATE_ASYNC_F @@ -388,6 +397,7 @@ H5P_mp_H5PGET_VIRTUAL_DSETNAME_F H5P_mp_H5PGET_DSET_NO_ATTRS_HINT_F H5P_mp_H5PSET_DSET_NO_ATTRS_HINT_F H5P_mp_H5PSET_VOL_F +H5P_mp_H5PGET_VOL_CAP_FLAGS_F H5P_mp_H5PGET_VOL_ID_F H5P_mp_H5PSET_FILE_LOCKING_F H5P_mp_H5PGET_FILE_LOCKING_F diff --git a/fortran/test/tH5G_1_8.F90 b/fortran/test/tH5G_1_8.F90 index c820d78..9444619 100644 --- a/fortran/test/tH5G_1_8.F90 +++ b/fortran/test/tH5G_1_8.F90 @@ -1220,7 +1220,7 @@ SUBROUTINE lifecycle(cleanup, fapl2, total_error) !!$ printf(" %d: Unexpected object type should have been a dataset\n", __LINE__); !!$ TEST_ERROR !!$ } end if -!!$ if(H5F_addr_ne(oinfo1.addr, oinfo2.addr)) { +!!$ if(H5_addr_ne(oinfo1.addr, oinfo2.addr)) { !!$ H5_FAILED(); !!$ puts(" Hard link test failed. Link seems not to point to the "); !!$ puts(" expected file location."); diff --git a/fortran/test/tH5I.F90 b/fortran/test/tH5I.F90 index 7f9b3ab..a5fedb9 100644 --- a/fortran/test/tH5I.F90 +++ b/fortran/test/tH5I.F90 @@ -245,7 +245,7 @@ CONTAINS CALL h5sclose_f(dspace_id, error) CALL check("h5sclose_f",error,total_error) ! - ! Close the dataype. + ! Close the datatype. ! CALL h5tclose_f(atype_id, error) CALL check("h5tclose_f",error,total_error) diff --git a/fortran/test/tH5P_F03.F90 b/fortran/test/tH5P_F03.F90 index 0875b81..f15a471 100644 --- a/fortran/test/tH5P_F03.F90 +++ b/fortran/test/tH5P_F03.F90 @@ -532,6 +532,7 @@ SUBROUTINE external_test_offset(cleanup,total_error) INTEGER(hid_t) :: dset=-1 ! dataset INTEGER(hid_t) :: grp=-1 ! group to emit diagnostics INTEGER(size_t) :: i, j ! miscellaneous counters + INTEGER :: k CHARACTER(LEN=180) :: filename ! file names INTEGER, DIMENSION(1:25) :: part INTEGER, DIMENSION(1:100), TARGET :: whole ! raw data buffers @@ -598,8 +599,9 @@ SUBROUTINE external_test_offset(cleanup,total_error) CALL h5dread_f(dset, H5T_NATIVE_INTEGER, f_ptr, error, mem_space_id=space, file_space_id=space) CALL check("h5dread_f", error, total_error) - DO i = 1, 100 - IF(whole(i) .NE. i-1)THEN + DO k = 1, 100 + CALL verify("h5dread_f", whole(k), k-1, error) + IF(error .NE. 0)THEN WRITE(*,*) "Incorrect value(s) read." total_error = total_error + 1 EXIT @@ -619,8 +621,10 @@ SUBROUTINE external_test_offset(cleanup,total_error) CALL h5sclose_f(hs_space, error) CALL check("h5sclose_f", error, total_error) - DO i = INT(hs_start(1))+1, INT(hs_start(1)+hs_count(1)) - IF(whole(i) .NE. i-1)THEN + + DO k = INT(hs_start(1))+1, INT(hs_start(1)+hs_count(1)) + CALL verify("h5dread_f", whole(k), k-1, error) + IF(error .NE. 0)THEN WRITE(*,*) "Incorrect value(s) read." total_error = total_error + 1 EXIT diff --git a/fortran/test/tH5T_F03.F90 b/fortran/test/tH5T_F03.F90 index 86e49b6..0f56806 100644 --- a/fortran/test/tH5T_F03.F90 +++ b/fortran/test/tH5T_F03.F90 @@ -3598,32 +3598,26 @@ SUBROUTINE multiple_dset_rw(total_error) CALL check("h5dread_multi_f", error, total_error) ! check the written and read in values + error = 0 DO i = 1, rdim - IF(rbuf_real(i).NE.wbuf_real(i))THEN - total_error = total_error + 1 - END IF + CALL VERIFY("h5dread_multi_f",rbuf_real(i), wbuf_real(i), error) END DO + total_error = total_error + error DO i = 1, idim - IF(rbuf_int(i).NE.wbuf_int(i))THEN - total_error = total_error + 1 - END IF + CALL VERIFY("h5dread_multi_f",rbuf_int(i),wbuf_int(i), error) END DO + total_error = total_error + error DO i = 1, cdim - IF(rbuf_chr(i).NE.wbuf_chr(i))THEN - total_error = total_error + 1 - END IF + CALL VERIFY("h5dread_multi_f",rbuf_chr(i),wbuf_chr(i), error) END DO + total_error = total_error + error + error = 0 DO i = 1, ddim - IF(rbuf_derived(i)%r.NE.wbuf_derived(i)%r)THEN - total_error = total_error + 1 - END IF - IF(rbuf_derived(i)%i.NE.wbuf_derived(i)%i)THEN - total_error = total_error + 1 - END IF - IF(rbuf_derived(i)%c.NE.wbuf_derived(i)%c)THEN - total_error = total_error + 1 - END IF + CALL VERIFY("h5dread_multi_f",rbuf_derived(i)%r,wbuf_derived(i)%r,error) + CALL VERIFY("h5dread_multi_f",rbuf_derived(i)%i,wbuf_derived(i)%i,error) + CALL VERIFY("h5dread_multi_f",rbuf_derived(i)%c,wbuf_derived(i)%c,error) END DO + total_error = total_error + error DO i = 1, idim DO j = 1, idim2 DO k = 1, idim3 diff --git a/fortran/test/tf.F90 b/fortran/test/tf.F90 index 73f43bc..501d243 100644 --- a/fortran/test/tf.F90 +++ b/fortran/test/tf.F90 @@ -69,9 +69,11 @@ CONTAINS CHARACTER(LEN=*), INTENT(IN) :: title_header ! test name INTEGER, PARAMETER :: width = TAB_SPACE+10 - CHARACTER(LEN=2*width) ::title_centered =" " + CHARACTER(LEN=2*width) ::title_centered INTEGER :: len, i + title_centered(:) = " " + len=LEN_TRIM(title_header) title_centered(1:3) ="| |" title_centered((width-len)/2:(width-len)/2+len) = TRIM(title_header) @@ -94,8 +96,8 @@ CONTAINS ENDDO WRITE(*,'("| |")') - WRITE(*,'(A)') title_centered - + WRITE(*,'(A)') TRIM(title_centered) + WRITE(*,'("| |")', ADVANCE="NO") DO i = 1, width-5 WRITE(*,'(1X)', ADVANCE="NO") diff --git a/fortran/testpar/async.F90 b/fortran/testpar/async.F90 index e3a80ad..2235ecf 100644 --- a/fortran/testpar/async.F90 +++ b/fortran/testpar/async.F90 @@ -26,6 +26,10 @@ MODULE test_async_APIs LOGICAL :: async_enabled = .TRUE. LOGICAL :: mpi_thread_mult = .TRUE. + INTEGER(C_INT), PARAMETER :: logical_true = 1 + INTEGER(C_INT), PARAMETER :: logical_false = 0 + + ! Custom group iteration callback data TYPE, bind(c) :: iter_info CHARACTER(KIND=C_CHAR), DIMENSION(1:12) :: name ! The name of the object @@ -174,7 +178,7 @@ CONTAINS INTEGER(HID_T) :: space_id INTEGER(HID_T) :: attr_id0, attr_id1, attr_id2 LOGICAL :: exists - LOGICAL(C_BOOL), TARGET :: exists0 = .FALSE., exists1 = .FALSE., exists2 = .FALSE., exists3 = .FALSE. + INTEGER(C_INT), TARGET :: exists0=logical_false, exists1=logical_false, exists2=logical_false, exists3=logical_false TYPE(C_PTR) :: f_ptr, f_ptr1, f_ptr2 CALL H5EScreate_f(es_id, hdferror) @@ -194,8 +198,8 @@ CONTAINS CALL H5Screate_f(H5S_SCALAR_F, space_id, hdferror) CALL check("H5Screate_f", hdferror, total_error) - f_ptr1 = C_LOC(app_file) - f_ptr2 = C_LOC(app_func) + f_ptr1 = C_LOC(app_file(1:1)) + f_ptr2 = C_LOC(app_func(1:1)) CALL h5acreate_async_f(file_id, attr_name, H5T_NATIVE_INTEGER, space_id, attr_id0, es_id, hdferror, & file=f_ptr1, func=f_ptr2, line=app_line) CALL check("h5acreate_f",hdferror,total_error) @@ -300,10 +304,10 @@ CONTAINS CALL check("H5ESwait_f", hdferror, total_error) CALL VERIFY("H5ESwait_f", err_occurred, .FALSE., total_error) - CALL VERIFY("H5Aexists_async_f", LOGICAL(exists0), .TRUE., total_error) - CALL VERIFY("H5Aexists_async_f", LOGICAL(exists1), .TRUE., total_error) - CALL VERIFY("H5Aexists_by_name_async_f", LOGICAL(exists2), .TRUE., total_error) - CALL VERIFY("H5Aexists_by_name_async_f", LOGICAL(exists3), .TRUE., total_error) + CALL VERIFY("H5Aexists_async_f", exists0, logical_true, total_error) + CALL VERIFY("H5Aexists_async_f", exists1, logical_true, total_error) + CALL VERIFY("H5Aexists_by_name_async_f", exists2, logical_true, total_error) + CALL VERIFY("H5Aexists_by_name_async_f", exists3, logical_true, total_error) CALL VERIFY("H5Aread_async_f", attr_rdata0, attr_data0, total_error) CALL VERIFY("H5Aread_async_f", attr_rdata1, attr_data1, total_error) @@ -784,7 +788,7 @@ CONTAINS INTEGER(hid_t) :: sid = -1 ! Dataspace ID CHARACTER(LEN=12), PARAMETER :: CORDER_GROUP_NAME = "corder_group" CHARACTER(LEN=12), PARAMETER :: CORDER_GROUP_NAME2 = "corder_grp00" - LOGICAL(C_BOOL), TARGET :: exists1, exists2 + INTEGER(C_INT), TARGET :: exists1, exists2 LOGICAL :: exists TYPE(C_PTR) :: f_ptr @@ -911,12 +915,12 @@ CONTAINS CALL H5Fopen_async_f(filename, H5F_ACC_RDWR_F, file_id, es_id, hdferror, access_prp = fapl_id ) CALL check("h5fopen_async_f",hdferror,total_error) - exists1 = .FALSE. + exists1 = logical_false f_ptr = C_LOC(exists1) CALL H5Lexists_async_f(file_id, "hard_zero", f_ptr, es_id, hdferror) CALL check("H5Lexists_async_f",hdferror,total_error) - exists2 = .FALSE. + exists2 = logical_false f_ptr = C_LOC(exists2) CALL H5Lexists_async_f(file_id, "hard_two", f_ptr, es_id, hdferror) CALL check("H5Lexists_async_f",hdferror,total_error) @@ -931,8 +935,8 @@ CONTAINS CALL check("H5ESwait_f", hdferror, total_error) CALL VERIFY("H5ESwait_f", err_occurred, .FALSE., total_error) - CALL VERIFY("H5Lexists_async_f", LOGICAL(exists1), .TRUE., total_error) - CALL VERIFY("H5Lexists_async_f", LOGICAL(exists2), .TRUE., total_error) + CALL VERIFY("H5Lexists_async_f", exists1, logical_true, total_error) + CALL VERIFY("H5Lexists_async_f", exists2, logical_true, total_error) CALL h5fopen_f(filename, H5F_ACC_RDWR_F, file_id, hdferror, access_prp = fapl_id ) CALL check("h5fopen_f",hdferror, total_error) @@ -1255,7 +1259,11 @@ PROGRAM async_test LOGICAL :: registered INTEGER :: sum INTEGER :: nerrors = 0 + INTEGER :: len, idx + CHARACTER(LEN=255) :: vol_connector_string, vol_connector_name + INTEGER(C_INT64_T) :: cap_flags + INTEGER(HID_T) :: plist_id LOGICAL :: cleanup INTEGER :: ret_total_error = 0 @@ -1297,47 +1305,60 @@ PROGRAM async_test ! CALL h5open_f(hdferror) - ! CHECK ASYNC VOLS AVAILABILITY ! - ! (1) Check if ASYNC VOL is available - CALL H5VLis_connector_registered_by_name_f("async", registered, hdferror) - CALL check("H5VLis_connector_registered_by_name_f", hdferror, total_error) - IF(.NOT.registered)THEN + IF(mpi_rank==0) WRITE(*,'(A)', ADVANCE="NO") "VOL CONNECTOR TESTED: " + + CALL get_environment_variable("HDF5_VOL_CONNECTOR", VALUE=vol_connector_string, LENGTH=len) + IF(len .EQ. 0)THEN + + ! No VOL connector set; using native VOL connector + async_enabled = .FALSE. + IF(mpi_rank==0) WRITE(*,'(A,/)') "NATIVE" + + ELSE + + idx = INDEX(vol_connector_string, " ") + vol_connector_name = vol_connector_string(1:idx-1) - ! (2) check if the DAOS VOL is available - CALL H5VLis_connector_registered_by_name_f("daos", registered, hdferror) + ! (1) Check if the VOL is available + CALL H5VLis_connector_registered_by_name_f(TRIM(vol_connector_name), registered, hdferror) CALL check("H5VLis_connector_registered_by_name_f", hdferror, total_error) IF(.NOT.registered)THEN - ! No async compatible VOL found + ! No VOL found registered async_enabled = .FALSE. + IF(mpi_rank==0) WRITE(*,'(A,/)') "NATIVE" ELSE - CALL H5Vlregister_connector_by_name_f("daos", vol_id, hdferror) - CALL check("H5Vlregister_connector_by_name_f", hdferror, total_error) + ! (2) Check if the VOL is async compatible + CALL h5pcreate_f(H5P_FILE_ACCESS_F, plist_id, hdferror) + CALL check("h5pcreate_f", hdferror, total_error) + CALL h5pget_vol_cap_flags_f(plist_id, cap_flags, hdferror) + CALL check("h5pget_vol_cap_flags_f", hdferror, total_error) + CALL h5pclose_f(plist_id, hdferror) + CALL check("h5pcreate_f", hdferror, total_error) + IF(H5VL_CAP_FLAG_ASYNC_F.EQ.1_C_INT64_T) async_enabled = .TRUE. + IF(async_enabled .EQV. .FALSE.)THEN + ! No async compatible VOL found + IF(mpi_rank==0) WRITE(*,'(A,/)') "NATIVE" + ELSE + IF(mpi_rank==0) WRITE(*,'(A,/)') TRIM(vol_connector_name) + CALL H5Vlregister_connector_by_name_f(TRIM(vol_connector_name), vol_id, hdferror) + CALL check("H5Vlregister_connector_by_name_f", hdferror, total_error) + ENDIF ENDIF - ELSE - CALL H5Vlregister_connector_by_name_f("async", vol_id, hdferror) - CALL check("H5Vlregister_connector_by_name_f", hdferror, total_error) - ENDIF - - IF ( (async_enabled .EQV. .TRUE.) .AND. (mpi_thread_mult .EQV. .FALSE.) ) THEN - total_error = -1 ! Skip test - IF(mpi_rank==0) CALL write_test_status(total_error, & - "No MPI_Init_thread support for MPI_THREAD_MULTIPLE", total_error) - CALL MPI_Barrier(MPI_COMM_WORLD, mpierror) - CALL MPI_Finalize(mpierror) - STOP + IF ( (async_enabled .EQV. .TRUE.) .AND. (mpi_thread_mult .EQV. .FALSE.) ) THEN + total_error = -1 ! Skip test + IF(mpi_rank==0) CALL write_test_status(total_error, & + "No MPI_Init_thread support for MPI_THREAD_MULTIPLE", total_error) + CALL MPI_Barrier(MPI_COMM_WORLD, mpierror) + CALL MPI_Finalize(mpierror) + STOP + ENDIF ENDIF -! IF(total_error.LT.0)THEN -! IF(mpi_rank==0) CALL write_test_status(total_error, & -! 'Testing async APIs', total_error) -! STOP -! ENDIF - ! H5ES API TESTING ret_total_error = 0 CALL H5ES_tests(cleanup, ret_total_error) diff --git a/src/H5Fpublic.h b/src/H5Fpublic.h index 97bf22a..191f5cd 100644 --- a/src/H5Fpublic.h +++ b/src/H5Fpublic.h @@ -1915,7 +1915,6 @@ H5_DLL herr_t H5Fset_latest_format(hid_t file_id, hbool_t latest_format); * \details H5Fis_hdf5() determines whether a file is in the HDF5 format. * * \todo In which version was this function deprecated? - * \todo In which version was this function introduced? * */ H5_DLL htri_t H5Fis_hdf5(const char *file_name); |