diff options
Diffstat (limited to 'fortran/src')
-rw-r--r-- | fortran/src/CMakeLists.txt | 7 | ||||
-rw-r--r-- | fortran/src/H5Ff.c | 92 | ||||
-rw-r--r-- | fortran/src/H5Fff.F90 | 166 | ||||
-rw-r--r-- | fortran/src/H5Pff.F90 | 266 | ||||
-rw-r--r-- | fortran/src/H5Sff.F90 | 144 | ||||
-rw-r--r-- | fortran/src/H5_f.c | 3 | ||||
-rw-r--r-- | fortran/src/H5_ff.F90 | 4 | ||||
-rw-r--r-- | fortran/src/H5config_f.inc.cmake | 8 | ||||
-rw-r--r-- | fortran/src/H5config_f.inc.in | 3 | ||||
-rw-r--r-- | fortran/src/H5f90global.F90 | 5 | ||||
-rw-r--r-- | fortran/src/h5fc.in | 16 | ||||
-rw-r--r-- | fortran/src/hdf5_fortrandll.def.in | 17 |
12 files changed, 547 insertions, 184 deletions
diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index 60c0c3a..4c28046 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -24,6 +24,13 @@ if (WIN32) endif () endif () +if (H5_HAVE_MPI_F08) # MPI-3 module mpi_f08 supported + set (CMAKE_H5_HAVE_MPI_F08 1) +else () + set (H5_NOMPI_F08 ";") + set (CMAKE_H5_HAVE_MPI_F08 0) +endif () + # configure for Fortran preprocessor # Define Parallel variable for passing to H5config_f.inc.cmake diff --git a/fortran/src/H5Ff.c b/fortran/src/H5Ff.c index 9703486..4b56cca 100644 --- a/fortran/src/H5Ff.c +++ b/fortran/src/H5Ff.c @@ -189,98 +189,6 @@ h5funmount_c(hid_t_f *loc_id, _fcd dsetname, int_f *namelen) return ret_value; } -/****if* H5Ff/h5fget_create_plist_c - * NAME - * h5fget_create_plist_c - * PURPOSE - * Call H5Fget_create_plist to get the file creation property list - * INPUTS - * file_id - file identifier - * OUTPUTS - * prop_id - creation property list identifier - * RETURNS - * 0 on success, -1 on failure - * SOURCE - */ -int_f -h5fget_create_plist_c(hid_t_f *file_id, hid_t_f *prop_id) -/******/ -{ - int ret_value = -1; - hid_t c_file_id, c_prop_id; - - c_file_id = (hid_t)*file_id; - c_prop_id = H5Fget_create_plist(c_file_id); - - if (c_prop_id < 0) - return ret_value; - *prop_id = (hid_t_f)c_prop_id; - - ret_value = 0; - return ret_value; -} - -/****if* H5Ff/h5fget_access_plist_c - * NAME - * h5fget_access_plist_c - * PURPOSE - * Call H5Fget_access_plist to get the file access property list - * INPUTS - * file_id - file identifier - * OUTPUTS - * access_id - access property list identifier - * RETURNS - * 0 on success, -1 on failure - * SOURCE - */ -int_f -h5fget_access_plist_c(hid_t_f *file_id, hid_t_f *access_id) -/******/ -{ - int ret_value = -1; - hid_t c_file_id, c_access_id; - - c_file_id = (hid_t)*file_id; - c_access_id = H5Fget_access_plist(c_file_id); - - if (c_access_id < 0) - return ret_value; - *access_id = (hid_t_f)c_access_id; - - ret_value = 0; - return ret_value; -} - -/****if* H5Ff/h5fget_obj_count_c - * NAME - * h5fget_obj_count_c - * PURPOSE - * Call H5Fget_obj_count to get number of open objects within a file - * INPUTS - * file_id - identifier of the file to be closed - * obj_type - type of the object - * RETURNS - * obj_count - number of objects - * 0 on success, -1 on failure - * SOURCE - */ - -int_f -h5fget_obj_count_c(hid_t_f *file_id, int_f *obj_type, size_t_f *obj_count) -/******/ -{ - int ret_value = 0; - hid_t c_file_id; - unsigned c_obj_type; - ssize_t c_obj_count; - - c_file_id = (hid_t)*file_id; - c_obj_type = (unsigned)*obj_type; - if ((c_obj_count = H5Fget_obj_count(c_file_id, c_obj_type)) < 0) - ret_value = -1; - *obj_count = (size_t_f)c_obj_count; - return ret_value; -} /****if* H5Ff/h5fget_obj_ids_c * NAME * h5fget_obj_ids_c diff --git a/fortran/src/H5Fff.F90 b/fortran/src/H5Fff.F90 index 79aa5a7..e8b765b 100644 --- a/fortran/src/H5Fff.F90 +++ b/fortran/src/H5Fff.F90 @@ -639,19 +639,21 @@ CONTAINS !! SUBROUTINE h5fget_create_plist_f(file_id, prop_id, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HID_T), INTENT(IN) :: file_id INTEGER(HID_T), INTENT(OUT) :: prop_id - INTEGER, INTENT(OUT) :: hdferr + INTEGER , INTENT(OUT) :: hdferr INTERFACE - INTEGER FUNCTION h5fget_create_plist_c(file_id, prop_id) BIND(C,NAME='h5fget_create_plist_c') + INTEGER(HID_T) FUNCTION H5Fget_create_plist(file_id) BIND(C,NAME='H5Fget_create_plist') IMPORT :: HID_T IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER(HID_T), INTENT(OUT) :: prop_id - END FUNCTION h5fget_create_plist_c + INTEGER(HID_T), VALUE :: file_id + END FUNCTION H5Fget_create_plist END INTERFACE - hdferr = h5fget_create_plist_c(file_id, prop_id) + prop_id = H5Fget_create_plist(file_id) + + hdferr = 0 + IF(prop_id.LT.0) hdferr = -1 END SUBROUTINE h5fget_create_plist_f !> @@ -667,19 +669,21 @@ CONTAINS !! SUBROUTINE h5fget_access_plist_f(file_id, access_id, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER(HID_T), INTENT(IN) :: file_id INTEGER(HID_T), INTENT(OUT) :: access_id INTEGER, INTENT(OUT) :: hdferr INTERFACE - INTEGER FUNCTION h5fget_access_plist_c(file_id, access_id) BIND(C,NAME='h5fget_access_plist_c') + INTEGER(HID_T) FUNCTION H5Fget_access_plist(file_id) BIND(C,NAME='H5Fget_access_plist') IMPORT :: HID_T IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER(HID_T), INTENT(OUT) :: access_id - END FUNCTION h5fget_access_plist_c + INTEGER(HID_T), VALUE :: file_id + END FUNCTION H5Fget_access_plist END INTERFACE - hdferr = h5fget_access_plist_c(file_id, access_id) + access_id = H5Fget_access_plist(file_id) + + hdferr = 0 + IF(access_id.LT.0) hdferr = -1 END SUBROUTINE h5fget_access_plist_f @@ -835,37 +839,41 @@ CONTAINS !> !! \ingroup FH5F !! -!! \brief Gets number of the objects open within a file +!! \brief Gets number of the objects open within a file. !! -!! \param file_id File identifier. +!! \param file_id File identifier !! \param obj_type Type of the object; possible values are: !! \li H5F_OBJ_FILE_F !! \li H5F_OBJ_DATASET_F !! \li H5F_OBJ_GROUP_F !! \li H5F_OBJ_DATATYPE_F !! \li H5F_OBJ_ALL_F -!! \param obj_count Number of open objects. +!! \param obj_count Number of open objects !! \param hdferr \fortran_error !! !! See C API: @ref H5Fget_obj_count() !! SUBROUTINE h5fget_obj_count_f(file_id, obj_type, obj_count, hdferr) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER, INTENT(IN) :: obj_type + INTEGER(HID_T) , INTENT(IN) :: file_id + INTEGER , INTENT(IN) :: obj_type INTEGER(SIZE_T), INTENT(OUT) :: obj_count - INTEGER, INTENT(OUT) :: hdferr + INTEGER , INTENT(OUT) :: hdferr + INTERFACE - INTEGER FUNCTION h5fget_obj_count_c(file_id, obj_type, obj_count) BIND(C,NAME='h5fget_obj_count_c') + INTEGER(SIZE_T) FUNCTION H5Fget_obj_count(file_id, obj_type) BIND(C,NAME='H5Fget_obj_count') + IMPORT :: C_INT IMPORT :: HID_T, SIZE_T IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER, INTENT(IN) :: obj_type - INTEGER(SIZE_T), INTENT(OUT) :: obj_count - END FUNCTION h5fget_obj_count_c + INTEGER(HID_T), VALUE :: file_id + INTEGER(C_INT), VALUE :: obj_type + END FUNCTION H5Fget_obj_count END INTERFACE - hdferr = h5fget_obj_count_c(file_id, obj_type, obj_count) + obj_count = H5Fget_obj_count(file_id, INT(obj_type, C_INT)) + + hdferr = 0 + IF(obj_count.LT.0) hdferr = -1 ! Don't include objects created by H5open in the H5F_OBJ_ALL_F count IF(file_id.EQ.INT(H5F_OBJ_ALL_F,HID_T))THEN @@ -877,47 +885,51 @@ CONTAINS !> !! \ingroup FH5F !! -!! \brief Get list of open objects identifiers within a file +!! \brief Get list of open objects identifiers within a file. !! -!! \param file_id File identifier. +!! \param file_id File identifier !! \param obj_type Type of the object; possible values are: !! \li H5F_OBJ_FILE_F !! \li H5F_OBJ_DATASET_F !! \li H5F_OBJ_GROUP_F !! \li H5F_OBJ_DATATYPE_F !! \li H5F_OBJ_ALL_F -!! \param max_objs Maximum # of objects to retrieve. -!! \param obj_ids Array of open object identifiers. +!! \param max_objs Maximum # of objects to retrieve +!! \param obj_ids Array of open object identifiers !! \param hdferr \fortran_error -!! \param num_objs Number of open objects. +!! \param num_objs Number of open objects !! !! See C API: @ref H5Fget_obj_ids() !! SUBROUTINE h5fget_obj_ids_f(file_id, obj_type, max_objs, obj_ids, hdferr, num_objs) IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER, INTENT(IN) :: obj_type + INTEGER(HID_T) , INTENT(IN) :: file_id + INTEGER , INTENT(IN) :: obj_type INTEGER(SIZE_T), INTENT(IN) :: max_objs - INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids - INTEGER, INTENT(OUT) :: hdferr + INTEGER(HID_T) , DIMENSION(*), INTENT(INOUT) :: obj_ids + INTEGER , INTENT(OUT) :: hdferr INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: num_objs INTEGER(SIZE_T) :: c_num_objs ! Number of open objects of the specified type INTERFACE - INTEGER FUNCTION h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs) & - BIND(C,NAME='h5fget_obj_ids_c') + INTEGER(SIZE_T) FUNCTION H5Fget_obj_ids(file_id, obj_type, max_objs, obj_ids) & + BIND(C,NAME='H5Fget_obj_ids') + IMPORT :: C_INT IMPORT :: HID_T, SIZE_T IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: file_id - INTEGER, INTENT(IN) :: obj_type - INTEGER(SIZE_T), INTENT(IN) :: max_objs - INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids - INTEGER(SIZE_T), INTENT(OUT) :: c_num_objs - END FUNCTION h5fget_obj_ids_c + INTEGER(HID_T) , VALUE :: file_id + INTEGER(C_INT) , VALUE :: obj_type + INTEGER(SIZE_T), VALUE :: max_objs + INTEGER(HID_T) , DIMENSION(*) :: obj_ids + END FUNCTION H5Fget_obj_ids END INTERFACE - hdferr = h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs) + c_num_objs = H5Fget_obj_ids(file_id, INT(obj_type, C_INT), max_objs, obj_ids) + + hdferr = 0 + IF(c_num_objs.LT.0) hdferr = -1 + IF (PRESENT(num_objs)) num_objs= c_num_objs END SUBROUTINE h5fget_obj_ids_f @@ -926,8 +938,8 @@ CONTAINS !! !! \brief Get amount of free space within a file. !! -!! \param file_id File identifier. -!! \param free_space Amount of free space in file. +!! \param file_id File identifier +!! \param free_space Amount of free space in file !! \param hdferr \fortran_error !! !! See C API: @ref H5Fget_freespace() @@ -955,9 +967,9 @@ CONTAINS !! !! \brief Gets the name of the file from the object identifier. !! -!! \param obj_id Object identifier. -!! \param buf Buffer to store the read name. -!! \param size Actual size of the name. +!! \param obj_id Object identifier +!! \param buf Buffer to store the read name +!! \param size Actual size of the name !! \param hdferr \fortran_error !! !! See C API: @ref H5Fget_name() @@ -990,8 +1002,8 @@ CONTAINS !! !! \brief Retrieves the file size of the HDF5 file. !! -!! \param file_id File identifier. -!! \param size File size. +!! \param file_id File identifier +!! \param size File size !! \param hdferr \fortran_error !! !! See C API: @ref H5Fget_filesize() @@ -1018,8 +1030,8 @@ CONTAINS !! !! \brief Retrieves the file number of the HDF5 file. !! -!! \param file_id File identifier. -!! \param fileno File number. +!! \param file_id File identifier +!! \param fileno File number !! \param hdferr \fortran_error !! !! See C API: @ref H5Fget_fileno() @@ -1046,11 +1058,11 @@ CONTAINS !! !! \brief Retrieves a copy of the image of an existing, open file. !! -!! \param file_id Target file identifier. -!! \param buf_ptr Pointer to the buffer into which the image of the HDF5 file is to be copied. -!! \param buf_len Size of the supplied buffer. +!! \param file_id Target file identifier +!! \param buf_ptr Pointer to the buffer into which the image of the HDF5 file is to be copied +!! \param buf_len Size of the supplied buffer !! \param hdferr \fortran_error -!! \param buf_size Returns the size in bytes of the buffer required to store the file image, no data will be copied. +!! \param buf_size Returns the size in bytes of the buffer required to store the file image, no data will be copied !! !! See C API: @ref H5Fget_file_image() !! @@ -1094,8 +1106,8 @@ CONTAINS !! \brief Gets the value of the "minimize dataset headers" value which creates !! smaller dataset object headers when its set and no attributes are present. !! -!! \param file_id Target file identifier. -!! \param minimize Value of the setting. +!! \param file_id Target file identifier +!! \param minimize Value of the setting !! \param hdferr \fortran_error !! !! See C API: @ref H5Fget_dset_no_attrs_hint() @@ -1129,8 +1141,8 @@ CONTAINS !! \brief Sets the value of the "minimize dataset headers" value which creates !! smaller dataset object headers when its set and no attributes are present. !! -!! \param file_id Target file identifier. -!! \param minimize Value of the setting. +!! \param file_id Target file identifier +!! \param minimize Value of the setting !! \param hdferr \fortran_error !! !! See C API: @ref H5Fset_dset_no_attrs_hint() @@ -1192,5 +1204,39 @@ CONTAINS END SUBROUTINE H5Fget_info_f +!> +!! \ingroup FH5F +!! +!! \brief Determines the read/write or read-only status of a file. +!! +!! \param file_id File identifier +!! \param intent Access mode flag as originally passed with H5Fopen_f() +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Fget_intent() +!! + SUBROUTINE h5fget_intent_f(file_id, intent, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: file_id + INTEGER, INTENT(OUT) :: intent + INTEGER, INTENT(OUT) :: hdferr + + INTEGER(C_INT) :: c_intent + + INTERFACE + INTEGER(C_INT) FUNCTION H5Fget_intent(file_id, intent) BIND(C,NAME='H5Fget_intent') + IMPORT :: C_INT + IMPORT :: HID_T + IMPLICIT NONE + INTEGER(HID_T), VALUE :: file_id + INTEGER(C_INT) :: intent + END FUNCTION H5Fget_intent + END INTERFACE + + hdferr = INT(H5Fget_intent(file_id, c_intent)) + intent = INT(c_intent) + + END SUBROUTINE h5fget_intent_f + END MODULE H5F diff --git a/fortran/src/H5Pff.F90 b/fortran/src/H5Pff.F90 index afd17f3..90a74f7 100644 --- a/fortran/src/H5Pff.F90 +++ b/fortran/src/H5Pff.F90 @@ -49,6 +49,12 @@ MODULE H5P PRIVATE h5pget_integer, h5pget_char, h5pget_ptr PRIVATE h5pregister_integer, h5pregister_ptr PRIVATE h5pinsert_integer, h5pinsert_char, h5pinsert_ptr +#ifdef H5_HAVE_PARALLEL + PRIVATE h5pset_fapl_mpio_f90, h5pget_fapl_mpio_f90 +#ifdef H5_HAVE_MPI_F08 + PRIVATE h5pset_fapl_mpio_f08, h5pget_fapl_mpio_f08 +#endif +#endif #ifndef H5_DOXYGEN @@ -101,7 +107,6 @@ MODULE H5P MODULE PROCEDURE h5pinsert_ptr END INTERFACE - INTERFACE INTEGER(C_INT) FUNCTION H5Pset_fill_value(prp_id, type_id, fillvalue) & BIND(C, NAME='H5Pset_fill_value') @@ -182,6 +187,35 @@ MODULE H5P #endif #ifdef H5_HAVE_PARALLEL + + INTERFACE h5pset_fapl_mpio_f + MODULE PROCEDURE h5pset_fapl_mpio_f90 +#ifdef H5_HAVE_MPI_F08 + MODULE PROCEDURE h5pset_fapl_mpio_f08 +#endif + END INTERFACE + + INTERFACE h5pget_fapl_mpio_f + MODULE PROCEDURE h5pget_fapl_mpio_f90 +#ifdef H5_HAVE_MPI_F08 + MODULE PROCEDURE h5pget_fapl_mpio_f08 +#endif + END INTERFACE + + INTERFACE H5Pset_mpi_params_f + MODULE PROCEDURE H5Pset_mpi_params_f90 +#ifdef H5_HAVE_MPI_F08 + MODULE PROCEDURE H5Pset_mpi_params_f08 +#endif + END INTERFACE + + INTERFACE H5Pget_mpi_params_f + MODULE PROCEDURE H5Pget_mpi_params_f90 +#ifdef H5_HAVE_MPI_F08 + MODULE PROCEDURE H5Pget_mpi_params_f08 +#endif + END INTERFACE + #ifdef H5_HAVE_SUBFILING_VFD !> \addtogroup FH5P !> @{ @@ -5125,6 +5159,8 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) ! ********************************************************************* #ifdef H5_HAVE_PARALLEL + +#ifdef H5_DOXYGEN !> !! \ingroup FH5P !! @@ -5143,21 +5179,69 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) INTEGER, INTENT(IN) :: comm INTEGER, INTENT(IN) :: info INTEGER, INTENT(OUT) :: hdferr + END SUBROUTINE h5pset_fapl_mpio_f +!> +!! \ingroup FH5P +!! +!! \brief Stores MPI IO communicator information to the file access property list. +!! +!! \note Supports MPI Fortran module mpi_f08 +!! +!! \param prp_id File access property list identifier. +!! \param comm MPI-3 communicator. +!! \param info MPI-3 info object. +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Pset_fapl_mpio() +!! + SUBROUTINE h5pset_fapl_mpio_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(IN) :: comm + TYPE(MPI_INFO), INTENT(IN) :: info + INTEGER, INTENT(OUT) :: hdferr + END SUBROUTINE h5pset_fapl_mpio_f + +#else + + SUBROUTINE h5pset_fapl_mpio_f90(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(IN) :: comm + INTEGER, INTENT(IN) :: info + INTEGER, INTENT(OUT) :: hdferr INTERFACE INTEGER FUNCTION h5pset_fapl_mpio_c(prp_id, comm, info) & BIND(C,NAME='h5pset_fapl_mpio_c') IMPORT :: HID_T IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER , INTENT(IN) :: comm - INTEGER , INTENT(IN) :: info + INTEGER(HID_T) :: prp_id + INTEGER :: comm + INTEGER :: info END FUNCTION h5pset_fapl_mpio_c END INTERFACE hdferr = h5pset_fapl_mpio_c(prp_id, comm, info) - END SUBROUTINE h5pset_fapl_mpio_f + END SUBROUTINE h5pset_fapl_mpio_f90 +#ifdef H5_HAVE_MPI_F08 + SUBROUTINE h5pset_fapl_mpio_f08(prp_id, comm, info, hdferr) + USE mpi_f08 + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(IN) :: comm + TYPE(MPI_INFO), INTENT(IN) :: info + INTEGER, INTENT(OUT) :: hdferr + + CALL h5pset_fapl_mpio_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr) + + END SUBROUTINE h5pset_fapl_mpio_f08 +#endif + +#endif + +#ifdef H5_DOXYGEN !> !! \ingroup FH5P !! @@ -5168,9 +5252,44 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) !! \param info MPI-2 info object. !! \param hdferr \fortran_error !! +!! \attention It is the responsibility of the application to free the MPI objects. +!! !! See C API: @ref H5Pget_fapl_mpio() !! - SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr) +SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER, INTENT(OUT) :: comm + INTEGER, INTENT(OUT) :: info + INTEGER, INTENT(OUT) :: hdferr +END SUBROUTINE h5pget_fapl_mpio_f +!> +!! \ingroup FH5P +!! +!! \brief Returns MPI communicator information. +!! +!! \note Supports MPI Fortran module mpi_f08 +!! +!! \param prp_id File access property list identifier. +!! \param comm MPI-3 communicator. +!! \param info MPI-3 info object. +!! \param hdferr \fortran_error +!! +!! \attention It is the responsibility of the application to free the MPI objects. +!! +!! See C API: @ref H5Pget_fapl_mpio() +!! +SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(OUT) :: comm + TYPE(MPI_INFO), INTENT(OUT) :: info + INTEGER , INTENT(OUT) :: hdferr +END SUBROUTINE h5pget_fapl_mpio_f + +#else + + SUBROUTINE h5pget_fapl_mpio_f90(prp_id, comm, info, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: prp_id INTEGER, INTENT(OUT) :: comm @@ -5181,15 +5300,30 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) BIND(C,NAME='h5pget_fapl_mpio_c') IMPORT :: HID_T IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: prp_id - INTEGER , INTENT(OUT) :: comm - INTEGER , INTENT(OUT) :: info + INTEGER(HID_T) :: prp_id + INTEGER :: comm + INTEGER :: info END FUNCTION h5pget_fapl_mpio_c END INTERFACE hdferr = h5pget_fapl_mpio_c(prp_id, comm, info) - END SUBROUTINE h5pget_fapl_mpio_f + END SUBROUTINE h5pget_fapl_mpio_f90 + +#ifdef H5_HAVE_MPI_F08 + SUBROUTINE h5pget_fapl_mpio_f08(prp_id, comm, info, hdferr) + USE mpi_f08 + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(OUT) :: comm + TYPE(MPI_INFO), INTENT(OUT) :: info + INTEGER, INTENT(OUT) :: hdferr + + CALL h5pget_fapl_mpio_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr) + + END SUBROUTINE h5pget_fapl_mpio_f08 +#endif +#endif #ifdef H5_HAVE_SUBFILING_VFD !> @@ -5376,14 +5510,15 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) END SUBROUTINE h5pget_mpio_no_collective_cause_f +#ifdef H5_DOXYGEN !> !! \ingroup FH5P !! -!! \brief Set the MPI communicator and info. +!! \brief Set the MPI communicator and information. !! !! \param prp_id File access property list identifier. -!! \param comm The MPI communicator. -!! \param info The MPI info object. +!! \param comm MPI-2 communicator. +!! \param info MPI-2 info object. !! \param hdferr \fortran_error !! !! See C API: @ref H5Pset_mpi_params() @@ -5394,6 +5529,37 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) INTEGER , INTENT(IN) :: comm INTEGER , INTENT(IN) :: info INTEGER , INTENT(OUT) :: hdferr + END SUBROUTINE H5Pset_mpi_params_f +!> +!! \ingroup FH5P +!! +!! \brief Set the MPI communicator and information. +!! +!! \note Supports MPI Fortran module mpi_f08 +!! +!! \param prp_id File access property list identifier. +!! \param comm MPI-3 communicator. +!! \param info MPI-3 info object. +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Pset_mpi_params() +!! + SUBROUTINE H5Pset_mpi_params_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(IN) :: comm + TYPE(MPI_INFO), INTENT(IN) :: info + INTEGER , INTENT(OUT) :: hdferr + END SUBROUTINE H5Pset_mpi_params_f + +#else + + SUBROUTINE H5Pset_mpi_params_f90(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER , INTENT(IN) :: comm + INTEGER , INTENT(IN) :: info + INTEGER , INTENT(OUT) :: hdferr INTERFACE INTEGER FUNCTION h5pset_mpi_params_c(prp_id, comm, info) & @@ -5408,16 +5574,33 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) hdferr = H5Pset_mpi_params_c(prp_id, comm, info) - END SUBROUTINE H5Pset_mpi_params_f + END SUBROUTINE H5Pset_mpi_params_f90 + +#ifdef H5_HAVE_MPI_F08 + SUBROUTINE H5Pset_mpi_params_f08(prp_id, comm, info, hdferr) + USE mpi_f08 + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(IN) :: comm + TYPE(MPI_INFO), INTENT(IN) :: info + INTEGER , INTENT(OUT) :: hdferr + + CALL H5Pset_mpi_params_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr) + + END SUBROUTINE H5Pset_mpi_params_f08 +#endif + +#endif +#ifdef H5_DOXYGEN !> !! \ingroup FH5P !! !! \brief Get the MPI communicator and info. !! !! \param prp_id File access property list identifier. -!! \param comm The MPI communicator. -!! \param info The MPI info object. +!! \param comm MPI-2 communicator. +!! \param info MPI-2 info object. !! \param hdferr \fortran_error !! !! See C API: @ref H5Pget_mpi_params() @@ -5428,6 +5611,39 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) INTEGER , INTENT(OUT) :: comm INTEGER , INTENT(OUT) :: info INTEGER , INTENT(OUT) :: hdferr + END SUBROUTINE H5Pget_mpi_params_f +!> +!! \ingroup FH5P +!! +!! \brief Get the MPI communicator and information. +!! +!! \note Supports MPI Fortran module mpi_f08 +!! +!! \param prp_id File access property list identifier. +!! \param comm MPI-3 communicator. +!! \param info MPI-3 info object. +!! \param hdferr \fortran_error +!! +!! \attention It is the responsibility of the application to free the MPI objects. +!! +!! See C API: @ref H5Pget_mpi_params() +!! + SUBROUTINE H5Pget_mpi_params_f(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(OUT) :: comm + TYPE(MPI_INFO), INTENT(OUT) :: info + INTEGER , INTENT(OUT) :: hdferr + END SUBROUTINE H5Pget_mpi_params_f + +#else + + SUBROUTINE H5Pget_mpi_params_f90(prp_id, comm, info, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + INTEGER , INTENT(OUT) :: comm + INTEGER , INTENT(OUT) :: info + INTEGER , INTENT(OUT) :: hdferr INTERFACE INTEGER FUNCTION h5pget_mpi_params_c(prp_id, comm, info) & @@ -5442,7 +5658,23 @@ SUBROUTINE h5pset_attr_phase_change_f(ocpl_id, max_compact, min_dense, hdferr) hdferr = H5Pget_mpi_params_c(prp_id, comm, info) - END SUBROUTINE H5Pget_mpi_params_f + END SUBROUTINE H5Pget_mpi_params_f90 + +#ifdef H5_HAVE_MPI_F08 + SUBROUTINE H5Pget_mpi_params_f08(prp_id, comm, info, hdferr) + USE mpi_f08 + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: prp_id + TYPE(MPI_COMM), INTENT(OUT) :: comm + TYPE(MPI_INFO), INTENT(OUT) :: info + INTEGER , INTENT(OUT) :: hdferr + + CALL H5Pget_mpi_params_f90(prp_id, comm%mpi_val, info%mpi_val, hdferr) + + END SUBROUTINE H5Pget_mpi_params_f08 +#endif + +#endif !> !! \ingroup FH5P diff --git a/fortran/src/H5Sff.F90 b/fortran/src/H5Sff.F90 index e734c03..5f2f1d2 100644 --- a/fortran/src/H5Sff.F90 +++ b/fortran/src/H5Sff.F90 @@ -1445,4 +1445,148 @@ CONTAINS END SUBROUTINE H5Sis_regular_hyperslab_f +!> +!! \ingroup FH5S +!! +!! \brief Closes a dataspace selection iterator. +!! +!! \param sel_iter_id Dataspace selection iterator identifier +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Ssel_iter_close() +!! + SUBROUTINE h5ssel_iter_close_f(sel_iter_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: sel_iter_id + INTEGER, INTENT(OUT) :: hdferr + INTERFACE + INTEGER(C_INT) FUNCTION H5Ssel_iter_close(sel_iter_id) & + BIND(C,NAME='H5Ssel_iter_close') + IMPORT :: HID_T, C_INT + IMPLICIT NONE + INTEGER(HID_T), VALUE :: sel_iter_id + END FUNCTION H5Ssel_iter_close + END INTERFACE + + hdferr = INT(h5ssel_iter_close(sel_iter_id), C_INT) + + END SUBROUTINE h5ssel_iter_close_f + +!> +!! \ingroup FH5S +!! +!! \brief Creates a dataspace selection iterator for a dataspace's selection. +!! +!! \param space_id Dataspace identifier +!! \param elmt_size Size of element in the selection +!! \param flags Selection iterator flag, valid values are: +!! \li H5S_SEL_ITER_GET_SEQ_LIST_SORTED_F, ref. @ref H5S_SEL_ITER_GET_SEQ_LIST_SORTED +!! \li H5S_SEL_ITER_SHARE_WITH_DATASPACE_F, ref. @ref H5S_SEL_ITER_SHARE_WITH_DATASPACE +!! \param ds_iter_id Dataspace selection iterator identifier +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Ssel_iter_create() +!! + SUBROUTINE h5ssel_iter_create_f(space_id, elmt_size, flags, ds_iter_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T) , INTENT(IN) :: space_id + INTEGER(SIZE_T), INTENT(IN) :: elmt_size + INTEGER , INTENT(IN) :: flags + INTEGER(HID_T) , INTENT(OUT) :: ds_iter_id + INTEGER , INTENT(OUT) :: hdferr + INTERFACE + INTEGER(HID_T) FUNCTION H5Ssel_iter_create(space_id, elmt_size, flags) & + BIND(C,NAME='H5Ssel_iter_create') + IMPORT :: HID_T, C_INT, SIZE_T + IMPLICIT NONE + INTEGER(HID_T) , VALUE :: space_id + INTEGER(SIZE_T), VALUE :: elmt_size + INTEGER(C_INT) , VALUE :: flags + END FUNCTION H5Ssel_iter_create + END INTERFACE + + ds_iter_id = H5Ssel_iter_create(space_id, elmt_size, INT(flags, C_INT)) + + hdferr = 0 + IF(ds_iter_id.LT.0) hdferr = -1 + + END SUBROUTINE h5ssel_iter_create_f + +!> +!! \ingroup FH5S +!! +!! \brief Retrieves a list of offset / length sequences for the elements in an iterator. +!! +!! \param sel_iter_id Dataspace selection iterator identifier +!! \param maxseq Maximum number of sequences to retrieve +!! \param maxbytes Maximum number of bytes to retrieve in sequences +!! \param nseq Number of sequences retrieved +!! \param nbytes Number of bytes retrieved, in all sequences +!! \param off Array of sequence offsets +!! \param len Array of sequence lengths +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Ssel_iter_get_seq_list() +!! + SUBROUTINE h5ssel_iter_get_seq_list_f(sel_iter_id, maxseq, maxbytes, nseq, nbytes, off, len, hdferr) + IMPLICIT NONE + INTEGER(HID_T) , INTENT(IN) :: sel_iter_id + INTEGER(SIZE_T), INTENT(IN) :: maxseq + INTEGER(SIZE_T), INTENT(IN) :: maxbytes + INTEGER(SIZE_T), INTENT(OUT) :: nseq + INTEGER(SIZE_T), INTENT(OUT) :: nbytes + INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: off + INTEGER(SIZE_T), DIMENSION(*), INTENT(OUT) :: len + INTEGER, INTENT(OUT) :: hdferr + + INTERFACE + INTEGER(C_INT) FUNCTION H5Ssel_iter_get_seq_list(sel_iter_id, maxseq, maxbytes, nseq, nbytes, off, len) & + BIND(C,NAME='H5Ssel_iter_get_seq_list') + IMPORT :: HID_T, C_INT, SIZE_T, HSIZE_T + IMPLICIT NONE + INTEGER(HID_T) , VALUE :: sel_iter_id + INTEGER(SIZE_T), VALUE :: maxseq + INTEGER(SIZE_T), VALUE :: maxbytes + INTEGER(SIZE_T) :: nseq + INTEGER(SIZE_T) :: nbytes + INTEGER(HSIZE_T), DIMENSION(*) :: off + INTEGER(SIZE_T), DIMENSION(*) :: len + END FUNCTION H5Ssel_iter_get_seq_list + END INTERFACE + + hdferr = INT(H5Ssel_iter_get_seq_list(sel_iter_id, maxseq, maxbytes, nseq, nbytes, off, len), C_INT) + + END SUBROUTINE h5ssel_iter_get_seq_list_f + +!> +!! \ingroup FH5S +!! +!! \brief Resets a dataspace selection iterator back to an initial state. +!! +!! \param sel_iter_id Identifier of the dataspace selection iterator to reset +!! \param space_id Identifier of the dataspace with selection to iterate over +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Ssel_iter_reset() +!! + SUBROUTINE h5ssel_iter_reset_f(sel_iter_id, space_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: sel_iter_id + INTEGER(HID_T), INTENT(IN) :: space_id + INTEGER, INTENT(OUT) :: hdferr + INTERFACE + INTEGER(C_INT) FUNCTION H5Ssel_iter_reset(sel_iter_id, space_id) & + BIND(C,NAME='H5Ssel_iter_reset') + IMPORT :: HID_T, C_INT + IMPLICIT NONE + INTEGER(HID_T), VALUE :: sel_iter_id + INTEGER(HID_T), VALUE :: space_id + END FUNCTION H5Ssel_iter_reset + END INTERFACE + + hdferr = INT(h5ssel_iter_reset(sel_iter_id, space_id), C_INT) + + END SUBROUTINE h5ssel_iter_reset_f + + END MODULE H5S diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c index b1dc7db..e6f7b6d 100644 --- a/fortran/src/H5_f.c +++ b/fortran/src/H5_f.c @@ -798,6 +798,9 @@ h5init_flags_c(int_f *h5d_flags, size_t_f *h5d_size_flags, int_f *h5e_flags, hid h5s_flags[16] = (int_f)H5S_SEL_HYPERSLABS; h5s_flags[17] = (int_f)H5S_SEL_ALL; + h5s_flags[18] = (int_f)H5S_SEL_ITER_GET_SEQ_LIST_SORTED; + h5s_flags[19] = (int_f)H5S_SEL_ITER_SHARE_WITH_DATASPACE; + /* * H5T flags */ diff --git a/fortran/src/H5_ff.F90 b/fortran/src/H5_ff.F90 index fe6337a..e83768a 100644 --- a/fortran/src/H5_ff.F90 +++ b/fortran/src/H5_ff.F90 @@ -135,7 +135,7 @@ MODULE H5LIB ! ! H5S flags declaration ! - INTEGER, PARAMETER :: H5S_FLAGS_LEN = 18 + INTEGER, PARAMETER :: H5S_FLAGS_LEN = 20 INTEGER, DIMENSION(1:H5S_FLAGS_LEN) :: H5S_flags INTEGER, PARAMETER :: H5S_HSIZE_FLAGS_LEN = 1 INTEGER(HSIZE_T), DIMENSION(1:H5S_HSIZE_FLAGS_LEN) :: H5S_hsize_flags @@ -656,6 +656,8 @@ CONTAINS H5S_SEL_POINTS_F = H5S_flags(16) H5S_SEL_HYPERSLABS_F = H5S_flags(17) H5S_SEL_ALL_F = H5S_flags(18) + H5S_SEL_ITER_GET_SEQ_LIST_SORTED_F = H5S_flags(19) + H5S_SEL_ITER_SHARE_WITH_DATASPACE_F = H5S_flags(20) ! ! H5T flags declaration ! diff --git a/fortran/src/H5config_f.inc.cmake b/fortran/src/H5config_f.inc.cmake index 77ff707..e6fa7b9 100644 --- a/fortran/src/H5config_f.inc.cmake +++ b/fortran/src/H5config_f.inc.cmake @@ -19,6 +19,14 @@ #define H5_HAVE_PARALLEL #endif +! Define if MPI supports mpi_f08 module +#cmakedefine01 CMAKE_H5_HAVE_MPI_F08 +#if CMAKE_H5_HAVE_MPI_F08 == 0 +#undef H5_HAVE_MPI_F08 +#else +#define H5_HAVE_MPI_F08 +#endif + ! Define if there is subfiling support #cmakedefine01 CMAKE_H5_HAVE_SUBFILING_VFD #if CMAKE_H5_HAVE_SUBFILING_VFD == 0 diff --git a/fortran/src/H5config_f.inc.in b/fortran/src/H5config_f.inc.in index afcfa6e..7f52255 100644 --- a/fortran/src/H5config_f.inc.in +++ b/fortran/src/H5config_f.inc.in @@ -17,6 +17,9 @@ ! Define if we have parallel support #undef HAVE_PARALLEL +! Define if MPI supports mpi_f08 module +#undef HAVE_MPI_F08 + ! Define if we have subfiling support #undef HAVE_SUBFILING_VFD diff --git a/fortran/src/H5f90global.F90 b/fortran/src/H5f90global.F90 index fb25f7e..5b4fc64 100644 --- a/fortran/src/H5f90global.F90 +++ b/fortran/src/H5f90global.F90 @@ -793,6 +793,8 @@ MODULE H5GLOBAL !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_POINTS_F !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_HYPERSLABS_F !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_ALL_F + !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_ITER_GET_SEQ_LIST_SORTED_F + !DEC$ATTRIBUTES DLLEXPORT :: H5S_SEL_ITER_SHARE_WITH_DATASPACE_F !DEC$endif !> \addtogroup FH5S !> @{ @@ -822,6 +824,9 @@ MODULE H5GLOBAL INTEGER :: H5S_SEL_POINTS_F !< H5S_SEL_POINTS INTEGER :: H5S_SEL_HYPERSLABS_F !< H5S_SEL_HYPERSLABS INTEGER :: H5S_SEL_ALL_F !< H5S_SEL_ALL + + INTEGER :: H5S_SEL_ITER_GET_SEQ_LIST_SORTED_F !< H5S_SEL_ITER_GET_SEQ_LIST_SORTED + INTEGER :: H5S_SEL_ITER_SHARE_WITH_DATASPACE_F !< H5S_SEL_ITER_SHARE_WITH_DATASPACE !> @} ! ! H5T flags declaration diff --git a/fortran/src/h5fc.in b/fortran/src/h5fc.in index c5da815..6d7329a 100644 --- a/fortran/src/h5fc.in +++ b/fortran/src/h5fc.in @@ -60,7 +60,7 @@ host_os="@host_os@" prog_name="`basename $0`" -allargs="" +misc_args="" compile_args="" link_args="" link_objs="" @@ -176,7 +176,6 @@ for arg in $@ ; do case "$arg" in -c) - allargs="$allargs $arg" compile_args="$compile_args $arg" if test "x$do_link" = "xyes" -a -n "$output_file"; then @@ -187,7 +186,6 @@ for arg in $@ ; do dash_c="yes" ;; -o) - allargs="$allargs $arg" dash_o="yes" if test "x$dash_c" = "xyes"; then @@ -199,14 +197,12 @@ for arg in $@ ; do fi ;; -E|-M|-MT) - allargs="$allargs $arg" compile_args="$compile_args $arg" dash_c="yes" do_link="no" ;; -l*) link_args="$link_args $arg" - allargs="$allargs $arg" ;; -prefix=*) prefix="`expr "$arg" : '-prefix=\(.*\)'`" @@ -238,14 +234,14 @@ for arg in $@ ; do ;; *\"*) qarg="'"$arg"'" - allargs="$allargs $qarg" + misc_args="$misc_args $qarg" ;; *\'*) - qarg='\"'"$arg"'\"' - allargs="$allargs $qarg" + qarg='"'"$arg"'"' + misc_args="$misc_args $qarg" ;; - *) allargs="$allargs $arg" + *) misc_args="$misc_args $arg" if [ -s "$arg" ] ; then ext=`expr "$arg" : '.*\(\..*\)'` if [ "$ext" = ".f" -o "$ext" = ".F" -o \ @@ -293,7 +289,7 @@ if test "x$do_compile" = "xyes"; then fi - $SHOW $FC $H5BLD_FCFLAGS $FCFLAGS ${F9XSUFFIXFLAG} ${fmodules} $compile_args + $SHOW $FC $H5BLD_FCFLAGS $FCFLAGS ${F9XSUFFIXFLAG} ${fmodules} $misc_args $compile_args status=$? if test "$status" != "0"; then diff --git a/fortran/src/hdf5_fortrandll.def.in b/fortran/src/hdf5_fortrandll.def.in index 119e140..e29488f 100644 --- a/fortran/src/hdf5_fortrandll.def.in +++ b/fortran/src/hdf5_fortrandll.def.in @@ -147,6 +147,7 @@ H5F_mp_H5FGET_FILE_IMAGE_F H5F_mp_H5FGET_DSET_NO_ATTRS_HINT_F H5F_mp_H5FSET_DSET_NO_ATTRS_HINT_F H5F_mp_H5FGET_INFO_F +H5F_mp_H5FGET_INTENT_F ; H5G H5G_mp_H5GOPEN_F H5G_mp_H5GOPEN_ASYNC_F @@ -420,14 +421,18 @@ H5P_mp_H5PSET_FILE_SPACE_PAGE_SIZE_F H5P_mp_H5PGET_FILE_SPACE_PAGE_SIZE_F H5P_mp_H5PGET_ACTUAL_SELECTION_IO_MODE_F ; Parallel -@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_MPIO_F -@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_MPIO_F +@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_MPIO_F90 +@H5_NOPAREXP@@H5_NOMPI_F08@H5P_mp_H5PSET_FAPL_MPIO_F08 +@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_MPIO_F90 +@H5_NOPAREXP@@H5_NOMPI_F08@H5P_mp_H5PGET_FAPL_MPIO_F08 @H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PSET_FAPL_SUBFILING_F @H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PGET_FAPL_SUBFILING_F @H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PSET_FAPL_IOC_F @H5_NOPAREXP@@H5_NOSUBFILING@H5P_mp_H5PGET_FAPL_IOC_F -@H5_NOPAREXP@H5P_mp_H5PSET_MPI_PARAMS_F -@H5_NOPAREXP@H5P_mp_H5PGET_MPI_PARAMS_F +@H5_NOPAREXP@H5P_mp_H5PSET_MPI_PARAMS_F90 +@H5_NOPAREXP@@H5_NOMPI_F08@H5P_mp_H5PSET_MPI_PARAMS_F08 +@H5_NOPAREXP@H5P_mp_H5PGET_MPI_PARAMS_F90 +@H5_NOPAREXP@@H5_NOMPI_F08@H5P_mp_H5PGET_MPI_PARAMS_F08 @H5_NOPAREXP@H5P_mp_H5PSET_DXPL_MPIO_F @H5_NOPAREXP@H5P_mp_H5PGET_DXPL_MPIO_F @H5_NOPAREXP@H5P_mp_H5PGET_MPIO_ACTUAL_IO_MODE_F @@ -483,6 +488,10 @@ H5S_mp_H5SENCODE_F H5S_mp_H5SEXTENT_EQUAL_F H5S_mp_H5SGET_REGULAR_HYPERSLAB_F H5S_mp_H5SIS_REGULAR_HYPERSLAB_F +H5S_mp_H5SSEL_ITER_CREATE_F +H5S_mp_H5SSEL_ITER_GET_SEQ_LIST_F +H5S_mp_H5SSEL_ITER_CLOSE_F +H5S_mp_H5SSEL_ITER_RESET_F ; H5T H5T_mp_H5TOPEN_F H5T_mp_H5TCOMMIT_F |