diff options
author | Scot Breitenfeld <brtnfld@hdfgroup.org> | 2023-04-21 16:07:48 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-21 16:07:48 (GMT) |
commit | def21b1e33f2499ed4d51af0708d12242d63fa63 (patch) | |
tree | 50c816935eb0672962b68c8e702ad28d291637c5 /fortran/src/H5Gff.F90 | |
parent | 07c4360b4d4f8459571815d624522eb7e01b02f6 (diff) | |
download | hdf5-def21b1e33f2499ed4d51af0708d12242d63fa63.zip hdf5-def21b1e33f2499ed4d51af0708d12242d63fa63.tar.gz hdf5-def21b1e33f2499ed4d51af0708d12242d63fa63.tar.bz2 |
Added Fortran Async APIs (#2715)
H5A, H5D, H5ES, H5G, H5F, H5L and H5O async APIs were added.
Diffstat (limited to 'fortran/src/H5Gff.F90')
-rw-r--r-- | fortran/src/H5Gff.F90 | 936 |
1 files changed, 801 insertions, 135 deletions
diff --git a/fortran/src/H5Gff.F90 b/fortran/src/H5Gff.F90 index 436eece..655c226 100644 --- a/fortran/src/H5Gff.F90 +++ b/fortran/src/H5Gff.F90 @@ -36,8 +36,127 @@ ! MODULE H5G - USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_CHAR + USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_CHAR, C_INT USE H5GLOBAL + USE H5P, ONLY : H5Pcreate_f, H5Pset_local_heap_size_hint_f, H5Pclose_f + + +! +! @brief Fortran2003 Derived Type for @ref H5G_info_t +! + TYPE, BIND(C) :: H5G_info_t + INTEGER(C_INT ) :: storage_type !< Type of storage for links in group: + !< \li H5G_STORAGE_TYPE_COMPACT_F: Compact storage + !< \li H5G_STORAGE_TYPE_DENSE_F: Indexed storage + !< \li H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure + INTEGER(HSIZE_T) :: nlinks !< Number of links in group + INTEGER(C_INT64_T) :: max_corder !< Current maximum creation order value for group + LOGICAL(C_BOOL) :: mounted !< Whether group has a file mounted on it + END TYPE H5G_info_t + +#ifndef H5_DOXYGEN + INTERFACE H5Gget_info_f + MODULE PROCEDURE h5Gget_info_f90 + MODULE PROCEDURE h5Gget_info_f03 + END INTERFACE + + INTERFACE H5Gget_info_by_idx_f + MODULE PROCEDURE H5Gget_info_by_idx_f90 + MODULE PROCEDURE H5Gget_info_by_idx_f03 + END INTERFACE + + INTERFACE H5Gget_info_by_name_f + MODULE PROCEDURE H5Gget_info_by_name_f90 + MODULE PROCEDURE H5Gget_info_by_name_f03 + END INTERFACE + + INTERFACE + INTEGER(C_INT) FUNCTION H5Gget_info(loc_id, ginfo) BIND(C,NAME='H5Gget_info') + IMPORT :: C_INT, C_PTR + IMPORT :: HID_T + INTEGER(HID_T), VALUE :: loc_id + TYPE(C_PTR), VALUE :: ginfo + END FUNCTION H5Gget_info + END INTERFACE + + INTERFACE + INTEGER(C_INT) FUNCTION H5Gget_info_async(file, func, line, loc_id, ginfo, es_id) & + BIND(C,NAME='H5Gget_info_async') + IMPORT :: C_CHAR, C_INT, C_PTR + IMPORT :: HID_T + TYPE(C_PTR), VALUE :: file + TYPE(C_PTR), VALUE :: func + INTEGER(C_INT), VALUE :: line + INTEGER(HID_T), VALUE :: loc_id + TYPE(C_PTR) , VALUE :: ginfo + INTEGER(HID_T), VALUE :: es_id + END FUNCTION H5Gget_info_async + END INTERFACE + + INTERFACE + INTEGER(C_INT) FUNCTION H5Gget_info_by_idx(loc_id, group_name, idx_type, order, n, ginfo, lapl_id) & + BIND(C,NAME='H5Gget_info_by_idx') + IMPORT :: C_CHAR, C_INT, C_PTR + IMPORT :: HID_T, HSIZE_T + INTEGER(HID_T), VALUE :: loc_id + CHARACTER(KIND=C_CHAR), DIMENSION(*) :: group_name + INTEGER(C_INT) , VALUE :: idx_type + INTEGER(C_INT) , VALUE :: order + INTEGER(HSIZE_T), VALUE :: n + TYPE(C_PTR) , VALUE :: ginfo + INTEGER(HID_T) , VALUE :: lapl_id + END FUNCTION H5Gget_info_by_idx + END INTERFACE + + INTERFACE + INTEGER(C_INT) FUNCTION H5Gget_info_by_idx_async(file, func, line, loc_id, & + group_name, idx_type, order, n, ginfo, lapl_id, es_id) & + BIND(C,NAME='H5Gget_info_by_idx_async') + IMPORT :: C_CHAR, C_INT, C_PTR + IMPORT :: HID_T, HSIZE_T + TYPE(C_PTR), VALUE :: file + TYPE(C_PTR), VALUE :: func + INTEGER(C_INT), VALUE :: line + INTEGER(HID_T), VALUE :: loc_id + CHARACTER(KIND=C_CHAR), DIMENSION(*) :: group_name + INTEGER(C_INT) , VALUE :: idx_type + INTEGER(C_INT) , VALUE :: order + INTEGER(HSIZE_T), VALUE :: n + TYPE(C_PTR) , VALUE :: ginfo + INTEGER(HID_T) , VALUE :: lapl_id + INTEGER(HID_T) , VALUE :: es_id + END FUNCTION H5Gget_info_by_idx_async + END INTERFACE + + INTERFACE + INTEGER(C_INT) FUNCTION H5Gget_info_by_name(loc_id, name, ginfo, lapl_id) & + BIND(C,NAME='H5Gget_info_by_name') + IMPORT :: C_CHAR, C_INT, C_PTR + IMPORT :: HID_T + INTEGER(HID_T), VALUE :: loc_id + CHARACTER(KIND=C_CHAR), DIMENSION(*) :: name + TYPE(C_PTR), VALUE :: ginfo + INTEGER(HID_T), VALUE :: lapl_id + END FUNCTION H5Gget_info_by_name + END INTERFACE + + INTERFACE + INTEGER(C_INT) FUNCTION H5Gget_info_by_name_async(file, func, line,loc_id, name, ginfo, lapl_id, es_id) & + BIND(C,NAME='H5Gget_info_by_name_async') + IMPORT :: C_CHAR, C_INT, C_PTR + IMPORT :: HID_T + TYPE(C_PTR), VALUE :: file + TYPE(C_PTR), VALUE :: func + INTEGER(C_INT), VALUE :: line + INTEGER(HID_T), VALUE :: loc_id + CHARACTER(KIND=C_CHAR), DIMENSION(*) :: name + TYPE(C_PTR), VALUE :: ginfo + INTEGER(HID_T), VALUE :: lapl_id + INTEGER(HID_T), VALUE :: es_id + END FUNCTION H5Gget_info_by_name_async + END INTERFACE + +#endif CONTAINS @@ -52,7 +171,7 @@ CONTAINS !! \param hdferr \fortran_error !! \param size_hint A parameter indicating the number of bytes to reserve for the names that will appear in the group. !! Set to OBJECT_NAMELEN_DEFAULT_F if using any of the optional parameters lcpl_id, gcpl_id, -!! and/or gapl_id when not using keywords in specifying the optional parameters. +!! and/or gapl_id when not using keywords in specifying the optional parameters. See @ref H5Gcreate1(). !! \param lcpl_id Property list for link creation. !! \param gcpl_id Property list for group creation. !! \param gapl_id Property list for group access. @@ -65,50 +184,187 @@ CONTAINS CHARACTER(LEN=*), INTENT(IN) :: name INTEGER(HID_T), INTENT(OUT) :: grp_id INTEGER, INTENT(OUT) :: hdferr - INTEGER(SIZE_T), OPTIONAL, INTENT(IN) :: size_hint - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id + INTEGER(SIZE_T), INTENT(IN), OPTIONAL :: size_hint + INTEGER(HID_T) , INTENT(IN), OPTIONAL :: lcpl_id + INTEGER(HID_T) , INTENT(IN), OPTIONAL :: gcpl_id + INTEGER(HID_T) , INTENT(IN), OPTIONAL :: gapl_id INTEGER(HID_T) :: lcpl_id_default INTEGER(HID_T) :: gcpl_id_default INTEGER(HID_T) :: gapl_id_default - INTEGER :: namelen ! Length of the name character string INTEGER(SIZE_T) :: size_hint_default + CHARACTER(LEN=LEN_TRIM(name)+1,KIND=C_CHAR) :: c_name INTERFACE - INTEGER FUNCTION h5gcreate_c(loc_id, name, namelen, & - size_hint_default, grp_id, lcpl_id_default, gcpl_id_default, gapl_id_default) & - BIND(C,NAME='h5gcreate_c') + INTEGER(HID_T) FUNCTION H5Gcreate2(loc_id, name, & + lcpl_id_default, gcpl_id_default, gapl_id_default) & + BIND(C,NAME='H5Gcreate2') IMPORT :: C_CHAR - IMPORT :: HID_T, SIZE_T - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER(SIZE_T) :: size_hint_default - INTEGER(HID_T), INTENT(OUT) :: grp_id - INTEGER(HID_T) :: lcpl_id_default - INTEGER(HID_T) :: gcpl_id_default - INTEGER(HID_T) :: gapl_id_default - END FUNCTION h5gcreate_c + IMPORT :: HID_T + INTEGER(HID_T), VALUE :: loc_id + CHARACTER(KIND=C_CHAR), DIMENSION(*) :: name + INTEGER(HID_T), VALUE :: lcpl_id_default + INTEGER(HID_T), VALUE :: gcpl_id_default + INTEGER(HID_T), VALUE :: gapl_id_default + END FUNCTION H5Gcreate2 END INTERFACE - size_hint_default = OBJECT_NAMELEN_DEFAULT_F - IF (PRESENT(size_hint)) size_hint_default = size_hint + hdferr = 0 + c_name = TRIM(name)//C_NULL_CHAR + lcpl_id_default = H5P_DEFAULT_F - IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id gcpl_id_default = H5P_DEFAULT_F - IF(PRESENT(gcpl_id)) gcpl_id_default = gcpl_id gapl_id_default = H5P_DEFAULT_F - IF(PRESENT(gapl_id)) gapl_id_default = gapl_id + size_hint_default = OBJECT_NAMELEN_DEFAULT_F - namelen = LEN(name) + IF(PRESENT(size_hint)) size_hint_default = size_hint + IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id + IF(PRESENT(gcpl_id)) gcpl_id_default = gcpl_id + IF(PRESENT(gapl_id)) gapl_id_default = gapl_id + ! + ! size_hint was introduced as an overload option for H5Gcreate1, + ! it was removed in H5Gcreate2. + ! + IF(size_hint_default .EQ. OBJECT_NAMELEN_DEFAULT_F)THEN + grp_id = H5Gcreate2(loc_id, c_name, & + lcpl_id_default, gcpl_id_default, gapl_id_default) + ELSE + ! Create the group creation property list + CALL H5Pcreate_f(H5P_GROUP_CREATE_F, gcpl_id_default, hdferr) + IF(hdferr.LT.0) RETURN + + ! Set the local heap size hint + CALL H5Pset_local_heap_size_hint_f(gcpl_id_default, size_hint, hdferr) + IF(hdferr.LT.0)THEN + CALL H5Pclose_f(gcpl_id_default, hdferr) + hdferr = -1 + RETURN + END IF + + grp_id = H5Gcreate2(loc_id, c_name, & + H5P_DEFAULT_F, gcpl_id_default, H5P_DEFAULT_F) + + CALL H5Pclose_f(gcpl_id_default, hdferr) + IF(hdferr.LT.0) RETURN + ENDIF - hdferr = h5gcreate_c(loc_id, name, namelen, size_hint_default, grp_id, & - lcpl_id_default, gcpl_id_default, gapl_id_default) + IF(grp_id.LT.0) hdferr = -1 END SUBROUTINE h5gcreate_f + +!> +!! \ingroup FH5G +!! +!! \brief Asynchronously creates a new group. +!! +!! \param loc_id Location identifier. +!! \param name Group name at the specified location. +!! \param grp_id Group identifier. +!! \param es_id \es_id +!! \param hdferr \fortran_error +!! \param size_hint A parameter indicating the number of bytes to reserve for the names that will appear in the group. +!! Set to OBJECT_NAMELEN_DEFAULT_F if using any of the optional parameters lcpl_id, gcpl_id, +!! and/or gapl_id when not using keywords in specifying the optional parameters. See @ref H5Gcreate1(). +!! \param lcpl_id Property list for link creation. +!! \param gcpl_id Property list for group creation. +!! \param gapl_id Property list for group access. +!! \param file \fortran_file +!! \param func \fortran_func +!! \param line \fortran_line +!! +!! See C API: @ref H5Gcreate_async() +!! + SUBROUTINE h5gcreate_async_f(loc_id, name, grp_id, es_id, hdferr, & + size_hint, lcpl_id, gcpl_id, gapl_id, file, func, line) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(HID_T), INTENT(OUT) :: grp_id + INTEGER(HID_T), INTENT(IN) :: es_id + INTEGER, INTENT(OUT) :: hdferr + INTEGER(SIZE_T), INTENT(IN), OPTIONAL :: size_hint + INTEGER(HID_T) , INTENT(IN), OPTIONAL :: lcpl_id + INTEGER(HID_T) , INTENT(IN), OPTIONAL :: gcpl_id + INTEGER(HID_T) , INTENT(IN), OPTIONAL :: gapl_id + TYPE(C_PTR), OPTIONAL :: file + TYPE(C_PTR), OPTIONAL :: func + INTEGER , INTENT(IN), OPTIONAL :: line + + INTEGER(HID_T) :: lcpl_id_default + INTEGER(HID_T) :: gcpl_id_default + INTEGER(HID_T) :: gapl_id_default + INTEGER(SIZE_T) :: size_hint_default + CHARACTER(LEN=LEN_TRIM(name)+1,KIND=C_CHAR) :: c_name + TYPE(C_PTR) :: file_default = C_NULL_PTR + TYPE(C_PTR) :: func_default = C_NULL_PTR + INTEGER(KIND=C_INT) :: line_default = 0 + + INTERFACE + INTEGER(HID_T) FUNCTION H5Gcreate_async(file, func, line, loc_id, name, & + lcpl_id_default, gcpl_id_default, gapl_id_default, es_id) & + BIND(C,NAME='H5Gcreate_async') + IMPORT :: C_CHAR, C_INT, C_PTR + IMPORT :: HID_T + IMPLICIT NONE + TYPE(C_PTR), VALUE :: file + TYPE(C_PTR), VALUE :: func + INTEGER(C_INT), VALUE :: line + INTEGER(HID_T), VALUE :: loc_id + CHARACTER(KIND=C_CHAR), DIMENSION(*) :: name + INTEGER(HID_T), VALUE :: lcpl_id_default + INTEGER(HID_T), VALUE :: gcpl_id_default + INTEGER(HID_T), VALUE :: gapl_id_default + INTEGER(HID_T), VALUE :: es_id + END FUNCTION H5Gcreate_async + END INTERFACE + + hdferr = 0 + c_name = TRIM(name)//C_NULL_CHAR + + lcpl_id_default = H5P_DEFAULT_F + gcpl_id_default = H5P_DEFAULT_F + gapl_id_default = H5P_DEFAULT_F + size_hint_default = OBJECT_NAMELEN_DEFAULT_F + + IF(PRESENT(size_hint)) size_hint_default = size_hint + IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id + IF(PRESENT(gcpl_id)) gcpl_id_default = gcpl_id + IF(PRESENT(gapl_id)) gapl_id_default = gapl_id + IF(PRESENT(file)) file_default = file + IF(PRESENT(func)) func_default = func + IF(PRESENT(line)) line_default = INT(line, C_INT) + ! + ! size_hint was introduced as an overload option for H5Gcreate1, + ! it was removed in H5Gcreate2. + ! + IF(size_hint_default .EQ. OBJECT_NAMELEN_DEFAULT_F)THEN + grp_id = H5Gcreate_async(file_default, func_default, line_default, loc_id, c_name, & + lcpl_id_default, gcpl_id_default, gapl_id_default, es_id) + ELSE + ! Create the group creation property list + CALL H5Pcreate_f(H5P_GROUP_CREATE_F, gcpl_id_default, hdferr) + IF(hdferr.LT.0) RETURN + + ! Set the local heap size hint + CALL H5Pset_local_heap_size_hint_f(gcpl_id_default, size_hint, hdferr) + IF(hdferr.LT.0)THEN + CALL H5Pclose_f(gcpl_id_default, hdferr) + hdferr = -1 + RETURN + END IF + + grp_id = H5Gcreate_async(file_default, func_default, line_default, loc_id, c_name, & + H5P_DEFAULT_F, gcpl_id_default, H5P_DEFAULT_F, es_id) + + CALL H5Pclose_f(gcpl_id_default, hdferr) + IF(hdferr.LT.0) RETURN + ENDIF + + IF(grp_id.LT.0) hdferr = -1 + + END SUBROUTINE h5gcreate_async_f + !> !! \ingroup FH5G !! @@ -128,30 +384,100 @@ CONTAINS CHARACTER(LEN=*), INTENT(IN) :: name INTEGER(HID_T), INTENT(OUT) :: grp_id INTEGER, INTENT(OUT) :: hdferr - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id + INTEGER(HID_T), INTENT(IN), OPTIONAL :: gapl_id + + CHARACTER(LEN=LEN_TRIM(name)+1,KIND=C_CHAR) :: c_name INTEGER(HID_T) :: gapl_id_default - INTEGER :: namelen ! Length of the name character string INTERFACE - INTEGER FUNCTION h5gopen_c(loc_id, name, namelen, gapl_id_default, grp_id) & - BIND(C,NAME='h5gopen_c') + INTEGER(HID_T) FUNCTION H5Gopen2(loc_id, name, gapl_id_default) & + BIND(C,NAME='H5Gopen2') IMPORT :: C_CHAR IMPORT :: HID_T - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name - INTEGER :: namelen - INTEGER(HID_T), INTENT(IN) :: gapl_id_default - INTEGER(HID_T), INTENT(OUT) :: grp_id - END FUNCTION h5gopen_c + INTEGER(HID_T), VALUE :: loc_id + CHARACTER(KIND=C_CHAR), DIMENSION(*) :: name + INTEGER(HID_T), VALUE :: gapl_id_default + END FUNCTION H5Gopen2 END INTERFACE + c_name = TRIM(name)//C_NULL_CHAR + gapl_id_default = H5P_DEFAULT_F IF(PRESENT(gapl_id)) gapl_id_default = gapl_id - namelen = LEN(name) - hdferr = h5gopen_c(loc_id, name, namelen, gapl_id_default, grp_id) + grp_id = H5Gopen2(loc_id, c_name, gapl_id_default) + + hdferr = 0 + IF(grp_id.LT.0) hdferr = -1 END SUBROUTINE h5gopen_f + +!> +!! \ingroup FH5G +!! +!! \brief Asynchronously opens an existing group. +!! +!! \param loc_id Location identifier. +!! \param name Name of the group to open. +!! \param grp_id Group identifier. +!! \param es_id \es_id +!! \param hdferr \fortran_error +!! \param gapl_id Group access property list identifier. +!! \param file \fortran_file +!! \param func \fortran_func +!! \param line \fortran_line +!! +!! See C API: @ref H5Gopen_async() +!! + SUBROUTINE h5gopen_async_f(loc_id, name, grp_id, es_id, hdferr, & + gapl_id, file, func, line) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + INTEGER(HID_T), INTENT(OUT) :: grp_id + INTEGER(HID_T), INTENT(IN) :: es_id + INTEGER, INTENT(OUT) :: hdferr + INTEGER(HID_T), INTENT(IN), OPTIONAL :: gapl_id + TYPE(C_PTR), OPTIONAL :: file + TYPE(C_PTR), OPTIONAL :: func + INTEGER , INTENT(IN), OPTIONAL :: line + + INTEGER(HID_T) :: gapl_id_default + CHARACTER(LEN=LEN_TRIM(name)+1,KIND=C_CHAR) :: c_name + TYPE(C_PTR) :: file_default = C_NULL_PTR + TYPE(C_PTR) :: func_default = C_NULL_PTR + INTEGER(KIND=C_INT) :: line_default = 0 + + INTERFACE + INTEGER(HID_T) FUNCTION H5Gopen_async(file, func, line, loc_id, name, gapl_id_default, es_id) & + BIND(C,NAME='H5Gopen_async') + IMPORT :: C_CHAR, C_INT, C_PTR + IMPORT :: HID_T + TYPE(C_PTR), VALUE :: file + TYPE(C_PTR), VALUE :: func + INTEGER(C_INT), VALUE :: line + INTEGER(HID_T), VALUE :: loc_id + CHARACTER(KIND=C_CHAR), DIMENSION(*) :: name + INTEGER(HID_T), VALUE :: gapl_id_default + INTEGER(HID_T), VALUE :: es_id + END FUNCTION H5Gopen_async + END INTERFACE + + c_name = TRIM(name)//C_NULL_CHAR + + gapl_id_default = H5P_DEFAULT_F + IF(PRESENT(gapl_id)) gapl_id_default = gapl_id + IF(PRESENT(file)) file_default = file + IF(PRESENT(func)) func_default = func + IF(PRESENT(line)) line_default = INT(line, C_INT) + + grp_id = H5Gopen_async(file_default, func_default, line_default, & + loc_id, c_name, gapl_id_default, es_id) + + hdferr = 0 + IF(grp_id.LT.0) hdferr = -1 + + END SUBROUTINE h5gopen_async_f !> !! \ingroup FH5G !! @@ -167,18 +493,66 @@ CONTAINS INTEGER(HID_T), INTENT(IN) :: grp_id INTEGER, INTENT(OUT) :: hdferr INTERFACE - INTEGER FUNCTION h5gclose_c(grp_id) BIND(C,NAME='h5gclose_c') + INTEGER(C_INT) FUNCTION H5Gclose(grp_id) BIND(C,NAME='H5Gclose') + IMPORT :: C_INT IMPORT :: HID_T - INTEGER(HID_T), INTENT(IN) :: grp_id - END FUNCTION h5gclose_c + INTEGER(HID_T), VALUE :: grp_id + END FUNCTION H5Gclose END INTERFACE - hdferr = h5gclose_c(grp_id) + hdferr = INT(H5Gclose(grp_id)) END SUBROUTINE h5gclose_f !> !! \ingroup FH5G !! +!! \brief Asynchronously closes the specified group. +!! +!! \param grp_id Group identifier. +!! \param es_id \es_id +!! \param hdferr \fortran_error +!! \param file \fortran_file +!! \param func \fortran_func +!! \param line \fortran_line +!! +!! See C API: @ref H5Gclose_async() +!! + SUBROUTINE h5gclose_async_f(grp_id, es_id, hdferr, file, func, line) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: grp_id + INTEGER(HID_T), INTENT(IN) :: es_id + INTEGER, INTENT(OUT) :: hdferr + TYPE(C_PTR), OPTIONAL :: file + TYPE(C_PTR), OPTIONAL :: func + INTEGER , INTENT(IN), OPTIONAL :: line + + TYPE(C_PTR) :: file_default = C_NULL_PTR + TYPE(C_PTR) :: func_default = C_NULL_PTR + INTEGER(KIND=C_INT) :: line_default = 0 + + INTERFACE + INTEGER(C_INT) FUNCTION H5Gclose_async(file, func, line, grp_id, es_id) & + BIND(C,NAME='H5Gclose_async') + IMPORT :: C_CHAR, C_INT, C_PTR + IMPORT :: HID_T + TYPE(C_PTR), VALUE :: file + TYPE(C_PTR), VALUE :: func + INTEGER(C_INT), VALUE :: line + INTEGER(HID_T), VALUE :: grp_id + INTEGER(HID_T), VALUE :: es_id + END FUNCTION H5Gclose_async + END INTERFACE + + IF(PRESENT(file)) file_default = file + IF(PRESENT(func)) func_default = func + IF(PRESENT(line)) line_default = INT(line, C_INT) + + hdferr = INT(H5Gclose_async(file_default, func_default, line_default, grp_id, es_id)) + + END SUBROUTINE h5gclose_async_f +!> +!! \ingroup FH5G +!! !! \brief Returns name and type of the group member identified by its index. !! !! \param loc_id Location identifier. @@ -604,8 +978,8 @@ CONTAINS INTEGER(HID_T), INTENT(IN) :: loc_id INTEGER(HID_T), INTENT(OUT) :: grp_id INTEGER, INTENT(OUT) :: hdferr - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id + INTEGER(HID_T), INTENT(IN), OPTIONAL :: gcpl_id + INTEGER(HID_T), INTENT(IN), OPTIONAL :: gapl_id INTEGER(HID_T) :: gcpl_id_default INTEGER(HID_T) :: gapl_id_default @@ -657,15 +1031,96 @@ CONTAINS END SUBROUTINE h5gget_create_plist_f +#ifdef H5_DOXYGEN !> !! \ingroup FH5G !! !! \brief Retrieves information about a group !! -!! \param group_id Group identifier. +!! \attention \fortran_approved +!! +!! \param loc_id Location identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute. +!! \param ginfo Derived type in which group information is returned. +!! \param hdferr \fortran_error +!! +!! See C API: @ref H5Gget_info() +!! + SUBROUTINE h5gget_info_f(& +#else + SUBROUTINE h5gget_info_f03(& +#endif + loc_id, ginfo, hdferr) + + IMPLICIT NONE + + INTEGER(HID_T) , INTENT(IN) :: loc_id + TYPE(H5G_info_t), INTENT(OUT), TARGET :: ginfo + INTEGER , INTENT(OUT) :: hdferr + + TYPE(C_PTR) :: ptr + + ptr = C_LOC(ginfo) + + hdferr = INT(H5Gget_info(loc_id, ptr)) + +#ifdef H5_DOXYGEN + END SUBROUTINE h5gget_info_f +#else + END SUBROUTINE h5gget_info_f03 +#endif + +!> +!! \ingroup FH5G +!! +!! \brief Asynchronously retrieves information about a group +!! +!! \param loc_id Location identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute. +!! \param ginfo Derived type in which group information is returned. +!! \param es_id \es_id +!! \param hdferr \fortran_error +!! \param file \fortran_file +!! \param func \fortran_func +!! \param line \fortran_line +!! +!! See C API: @ref H5Gget_info_async() +!! + SUBROUTINE h5gget_info_async_f(loc_id, ginfo, es_id, hdferr, file, func, line) + + IMPLICIT NONE + + INTEGER(HID_T) , INTENT(IN) :: loc_id + TYPE(H5G_info_t), INTENT(OUT), TARGET :: ginfo + INTEGER(HID_T) , INTENT(IN) :: es_id + INTEGER , INTENT(OUT) :: hdferr + TYPE(C_PTR), OPTIONAL :: file + TYPE(C_PTR), OPTIONAL :: func + INTEGER , INTENT(IN), OPTIONAL :: line + + TYPE(C_PTR) :: ptr + TYPE(C_PTR) :: file_default = C_NULL_PTR + TYPE(C_PTR) :: func_default = C_NULL_PTR + INTEGER(KIND=C_INT) :: line_default = 0 + + IF(PRESENT(file)) file_default = file + IF(PRESENT(func)) func_default = func + IF(PRESENT(line)) line_default = INT(line, C_INT) + ptr = C_LOC(ginfo) + + hdferr = INT(H5Gget_info_async(file_default, func_default, line_default, loc_id, ptr, es_id)) + + END SUBROUTINE h5gget_info_async_f + +!> +!! \ingroup FH5G +!! +!! \brief Retrieves information about a group. +!! +!! \attention \fortran_obsolete. Both nlinks and max_corder can overflow. +!! +!! \param loc_id Location identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute. !! \param storage_type Type of storage for links in group: !! \li H5G_STORAGE_TYPE_COMPACT_F: Compact storage -!! \li H5G_STORAGE_TYPE_DENS_FE: Indexed storage +!! \li H5G_STORAGE_TYPE_DENSE_F: Indexed storage !! \li H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure !! \param nlinks Number of links in group. !! \param max_corder Current maximum creation order value for group. @@ -674,48 +1129,169 @@ CONTAINS !! !! See C API: @ref H5Gget_info() !! - SUBROUTINE h5gget_info_f(group_id, storage_type, nlinks, max_corder, hdferr, mounted) +#ifdef H5_DOXYGEN + SUBROUTINE h5gget_info_f(& +#else + SUBROUTINE h5gget_info_f90(& +#endif + loc_id, storage_type, nlinks, max_corder, hdferr, mounted) + IMPLICIT NONE - INTEGER(HID_T), INTENT(IN) :: group_id + INTEGER(HID_T), INTENT(IN) :: loc_id INTEGER, INTENT(OUT) :: storage_type INTEGER, INTENT(OUT) :: nlinks INTEGER, INTENT(OUT) :: max_corder INTEGER, INTENT(OUT) :: hdferr LOGICAL, INTENT(OUT), OPTIONAL :: mounted - INTEGER :: mounted_c - INTERFACE - INTEGER FUNCTION h5gget_info_c(group_id, storage_type, nlinks, max_corder, mounted_c) & - BIND(C,NAME='h5gget_info_c') - IMPORT :: HID_T - INTEGER(HID_T), INTENT(IN) :: group_id - INTEGER, INTENT(OUT) :: storage_type - INTEGER, INTENT(OUT) :: nlinks - INTEGER, INTENT(OUT) :: max_corder - INTEGER :: mounted_c - END FUNCTION h5gget_info_c - END INTERFACE + TYPE(H5G_info_t), TARGET :: ginfo + TYPE(C_PTR) :: ptr + + ptr = C_LOC(ginfo) + hdferr = INT(H5Gget_info(loc_id, ptr)) - hdferr = h5gget_info_c(group_id, storage_type, nlinks, max_corder, mounted_c) + storage_type = INT(ginfo%storage_type) + nlinks = INT(ginfo%nlinks) + max_corder = INT(ginfo%max_corder) IF(PRESENT(mounted))THEN - IF(mounted_c.EQ.0) THEN - mounted = .FALSE. - ELSE + IF(ginfo%mounted) THEN mounted = .TRUE. + ELSE + mounted = .FALSE. ENDIF ENDIF - +#ifdef H5_DOXYGEN END SUBROUTINE h5gget_info_f +#else + END SUBROUTINE h5gget_info_f90 +#endif + +!> +!! \ingroup FH5G +!! +!! \brief Retrieves information about a group, according to the group’s position within an index. +!! +!! \attention \fortran_approved +!! +!! \param loc_id Location identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute. +!! \param group_name Name of group containing group for which information is to be retrieved. +!! \param idx_type Index type. +!! \param order Order of the count in the index. +!! \param n Position in the index of the group for which information is retrieved. +!! \param ginfo Derived type in which group information is returned. +!! \param hdferr \fortran_error +!! \param lapl_id Link access property list. +!! +!! See C API: @ref H5Gget_info_by_idx() +!! +#ifdef H5_DOXYGEN + SUBROUTINE h5gget_info_by_idx_f(& +#else + SUBROUTINE h5gget_info_by_idx_f03(& +#endif + loc_id, group_name, idx_type, order, n, ginfo, hdferr, lapl_id) + + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: group_name + INTEGER, INTENT(IN) :: idx_type + INTEGER, INTENT(IN) :: order + INTEGER(HSIZE_T), INTENT(IN) :: n + TYPE(H5G_info_t), INTENT(OUT), TARGET :: ginfo + INTEGER, INTENT(OUT) :: hdferr + INTEGER(HID_T), INTENT(IN), OPTIONAL :: lapl_id + + INTEGER(HID_T) :: lapl_id_default + CHARACTER(LEN=LEN_TRIM(group_name)+1,KIND=C_CHAR) :: c_group_name + TYPE(C_PTR) :: ptr + + c_group_name = TRIM(group_name)//C_NULL_CHAR + + lapl_id_default = H5P_DEFAULT_F + IF(PRESENT(lapl_id)) lapl_id_default = lapl_id + + ptr = C_LOC(ginfo) + + hdferr = H5Gget_info_by_idx(loc_id, c_group_name, & + INT(idx_type,C_INT), INT(order, C_INT), n, ptr, lapl_id_default ) + +#ifdef H5_DOXYGEN + END SUBROUTINE h5gget_info_by_idx_f +#else + END SUBROUTINE h5gget_info_by_idx_f03 +#endif + +!> +!! \ingroup FH5G +!! +!! \brief Asynchronously retrieves information about a group, according to the group’s position within an index. +!! +!! \param loc_id Location identifier. The identifier may be that of a file, group, dataset, named datatype, or attribute. +!! \param group_name Name of group containing group for which information is to be retrieved. +!! \param idx_type Index type. +!! \param order Order of the count in the index. +!! \param n Position in the index of the group for which information is retrieved. +!! \param ginfo Derived type in which group information is returned. +!! \param es_id \es_id +!! \param hdferr \fortran_error +!! \param lapl_id Link access property list. +!! \param file \fortran_file +!! \param func \fortran_func +!! \param line \fortran_line +!! +!! See C API: @ref H5Gget_info_by_idx_async() +!! + SUBROUTINE h5gget_info_by_idx_async_f(loc_id, group_name, idx_type, order, n, ginfo, es_id, hdferr, & + lapl_id, file, func, line) + + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: group_name + INTEGER, INTENT(IN) :: idx_type + INTEGER, INTENT(IN) :: order + INTEGER(HSIZE_T), INTENT(IN) :: n + TYPE(H5G_info_t), INTENT(OUT), TARGET :: ginfo + INTEGER(HID_T), INTENT(IN) :: es_id + INTEGER, INTENT(OUT) :: hdferr + INTEGER(HID_T), INTENT(IN), OPTIONAL :: lapl_id + TYPE(C_PTR), OPTIONAL :: file + TYPE(C_PTR), OPTIONAL :: func + INTEGER , INTENT(IN), OPTIONAL :: line + + INTEGER(HID_T) :: lapl_id_default + CHARACTER(LEN=LEN_TRIM(group_name)+1,KIND=C_CHAR) :: c_group_name + TYPE(C_PTR) :: ptr + TYPE(C_PTR) :: file_default = C_NULL_PTR + TYPE(C_PTR) :: func_default = C_NULL_PTR + INTEGER(KIND=C_INT) :: line_default = 0 + + c_group_name = TRIM(group_name)//C_NULL_CHAR + + lapl_id_default = H5P_DEFAULT_F + IF(PRESENT(lapl_id)) lapl_id_default = lapl_id + IF(PRESENT(file)) file_default = file + IF(PRESENT(func)) func_default = func + IF(PRESENT(line)) line_default = INT(line, C_INT) + + ptr = C_LOC(ginfo) + + hdferr = H5Gget_info_by_idx_async(file_default, func_default, line_default, loc_id, c_group_name, & + INT(idx_type,C_INT), INT(order, C_INT), n, ptr, lapl_id_default, es_id ) + + END SUBROUTINE h5gget_info_by_idx_async_f + !> !! \ingroup FH5G !! !! \brief Retrieves information about a group, according to the group’s position within an index. !! +!! \attention \fortran_obsolete. Both nlinks and max_corder can overflow. +!! !! \param loc_id File or group identifier. !! \param group_name Name of group containing group for which information is to be retrieved. -!! \param index_type Index type. +!! \param idx_type Index type. !! \param order Order of the count in the index. !! \param n Position in the index of the group for which information is retrieved. !! \param storage_type Type of storage for links in group: @@ -730,71 +1306,164 @@ CONTAINS !! !! See C API: @ref H5Gget_info_by_idx() !! - SUBROUTINE h5gget_info_by_idx_f(loc_id, group_name, index_type, order, n, & +#ifdef H5_DOXYGEN + SUBROUTINE h5gget_info_by_idx_f(& +#else + SUBROUTINE h5gget_info_by_idx_f90(& +#endif + loc_id, group_name, idx_type, order, n, & storage_type, nlinks, max_corder, hdferr, lapl_id, mounted) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id CHARACTER(LEN=*), INTENT(IN) :: group_name - INTEGER, INTENT(IN) :: index_type + INTEGER, INTENT(IN) :: idx_type INTEGER, INTENT(IN) :: order INTEGER(HSIZE_T), INTENT(IN) :: n - INTEGER, INTENT(OUT) :: storage_type INTEGER, INTENT(OUT) :: nlinks INTEGER, INTENT(OUT) :: max_corder INTEGER, INTENT(OUT) :: hdferr - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id + INTEGER(HID_T), INTENT(IN), OPTIONAL :: lapl_id LOGICAL, INTENT(OUT), OPTIONAL :: mounted - INTEGER :: mounted_c - INTEGER(HID_T) :: lapl_id_default - INTEGER(SIZE_T) :: group_name_len ! length of group name - INTERFACE - INTEGER FUNCTION h5gget_info_by_idx_c(loc_id, group_name, group_name_len, index_type, order, n, lapl_id_default, & - storage_type, nlinks, max_corder, mounted_c) BIND(C,NAME='h5gget_info_by_idx_c') - IMPORT :: C_CHAR - IMPORT :: HID_T, SIZE_T, HSIZE_T - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: group_name - INTEGER, INTENT(IN) :: index_type - INTEGER, INTENT(IN) :: order - INTEGER(HSIZE_T), INTENT(IN) :: n - INTEGER(HID_T) :: lapl_id_default - INTEGER, INTENT(OUT) :: storage_type - INTEGER, INTENT(OUT) :: nlinks - INTEGER, INTENT(OUT) :: max_corder - - INTEGER(SIZE_T) :: group_name_len - INTEGER :: mounted_c - - END FUNCTION h5gget_info_by_idx_c - END INTERFACE + INTEGER(HID_T) :: lapl_id_default + CHARACTER(LEN=LEN_TRIM(group_name)+1,KIND=C_CHAR) :: c_group_name + TYPE(H5G_info_t), TARGET :: ginfo + TYPE(C_PTR) :: ptr - group_name_len = LEN(group_name) + c_group_name = TRIM(group_name)//C_NULL_CHAR + ptr = C_LOC(ginfo) lapl_id_default = H5P_DEFAULT_F IF(PRESENT(lapl_id)) lapl_id_default = lapl_id - hdferr = h5gget_info_by_idx_c(loc_id, group_name, group_name_len, & - index_type, order, n, lapl_id_default, & - storage_type, nlinks, max_corder, mounted_c) + + hdferr = H5Gget_info_by_idx(loc_id, c_group_name, & + INT(idx_type,C_INT), INT(order, C_INT), n, ptr, lapl_id_default ) + + storage_type = INT(ginfo%storage_type) + nlinks = INT(ginfo%nlinks) + max_corder = INT(ginfo%max_corder) IF(PRESENT(mounted))THEN - IF(mounted_c.EQ.0) THEN - mounted = .FALSE. - ELSE + IF(ginfo%mounted) THEN mounted = .TRUE. + ELSE + mounted = .FALSE. ENDIF ENDIF - +#ifdef H5_DOXYGEN END SUBROUTINE h5gget_info_by_idx_f +#else + END SUBROUTINE h5gget_info_by_idx_f90 +#endif !> !! \ingroup FH5G !! -!! \brief Retrieves information about a group. +!! \brief Retrieves information about a group by its name. +!! +!! \attention \fortran_approved +!! +!! \param loc_id File or group identifier. +!! \param name Name of group containing group for which information is to be retrieved. +!! \param ginfo Derived type in which group information is returned. +!! \param hdferr \fortran_error +!! \param lapl_id Link access property list. +!! +!! See C API: @ref H5Gget_info_by_name() +!! +#ifdef H5_DOXYGEN + SUBROUTINE h5gget_info_by_name_f( & +#else + SUBROUTINE h5gget_info_by_name_f03( & +#endif + loc_id, name, ginfo, hdferr, lapl_id) + + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + TYPE(H5G_info_t), INTENT(OUT), TARGET :: ginfo + INTEGER, INTENT(OUT) :: hdferr + INTEGER(HID_T), INTENT(IN), OPTIONAL :: lapl_id + + INTEGER(HID_T) :: lapl_id_default + CHARACTER(LEN=LEN_TRIM(name)+1,KIND=C_CHAR) :: c_name + TYPE(C_PTR) :: ptr + + c_name = TRIM(name)//C_NULL_CHAR + ptr = C_LOC(ginfo) + + lapl_id_default = H5P_DEFAULT_F + IF(PRESENT(lapl_id)) lapl_id_default = lapl_id + + hdferr = INT(h5gget_info_by_name(loc_id, c_name, ptr, lapl_id_default)) + +#ifdef H5_DOXYGEN + END SUBROUTINE h5gget_info_by_name_f +#else + END SUBROUTINE h5gget_info_by_name_f03 +#endif + +!> +!! \ingroup FH5G +!! +!! \brief Asynchronously retrieves information about a group by its name. +!! +!! \param loc_id File or group identifier. +!! \param name Name of group containing group for which information is to be retrieved. +!! \param ginfo Derived type in which group information is returned. +!! \param es_id \es_id +!! \param hdferr \fortran_error +!! \param lapl_id Link access property list. +!! +!! See C API: @ref H5Gget_info_by_name_async() +!! + SUBROUTINE h5gget_info_by_name_async_f(loc_id, name, ginfo, es_id, hdferr, & + lapl_id, file, func, line) + + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id + CHARACTER(LEN=*), INTENT(IN) :: name + TYPE(H5G_info_t), INTENT(OUT), TARGET :: ginfo + INTEGER(HID_T), INTENT(IN) :: es_id + INTEGER, INTENT(OUT) :: hdferr + INTEGER(HID_T), INTENT(IN), OPTIONAL :: lapl_id + TYPE(C_PTR), OPTIONAL :: file + TYPE(C_PTR), OPTIONAL :: func + INTEGER , INTENT(IN), OPTIONAL :: line + + INTEGER(HID_T) :: lapl_id_default + CHARACTER(LEN=LEN_TRIM(name)+1,KIND=C_CHAR) :: c_name + TYPE(C_PTR) :: ptr + TYPE(C_PTR) :: file_default = C_NULL_PTR + TYPE(C_PTR) :: func_default = C_NULL_PTR + INTEGER(KIND=C_INT) :: line_default = 0 + + c_name = TRIM(name)//C_NULL_CHAR + ptr = C_LOC(ginfo) + + lapl_id_default = H5P_DEFAULT_F + IF(PRESENT(lapl_id)) lapl_id_default = lapl_id + IF(PRESENT(file)) file_default = file + IF(PRESENT(func)) func_default = func + IF(PRESENT(line)) line_default = INT(line, C_INT) + + hdferr = INT(h5gget_info_by_name_async(file_default, func_default, line_default, & + loc_id, c_name, ptr, lapl_id_default, es_id)) + + END SUBROUTINE h5gget_info_by_name_async_f + +!> +!! \ingroup FH5G +!! +!! \brief Retrieves information about a group by its name. +!! +!! \attention \fortran_obsolete. Both nlinks and max_corder can overflow. !! !! \param loc_id File or group identifier. -!! \param group_name Name of group containing group for which information is to be retrieved. +!! \param name Name of group containing group for which information is to be retrieved. !! \param storage_type Type of storage for links in group: !! \li H5G_STORAGE_TYPE_COMPACT_F: Compact storage !! \li H5G_STORAGE_TYPE_DENSE_F: Indexed storage @@ -807,56 +1476,53 @@ CONTAINS !! !! See C API: @ref H5Gget_info_by_name() !! - SUBROUTINE h5gget_info_by_name_f(loc_id, group_name, & - storage_type, nlinks, max_corder, hdferr, lapl_id, mounted) +#ifdef H5_DOXYGEN + SUBROUTINE h5gget_info_by_name_f( & +#else + SUBROUTINE h5gget_info_by_name_f90( & +#endif + loc_id, name, storage_type, nlinks, max_corder, hdferr, lapl_id, mounted) + IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(LEN=*), INTENT(IN) :: group_name + CHARACTER(LEN=*), INTENT(IN) :: name INTEGER, INTENT(OUT) :: storage_type INTEGER, INTENT(OUT) :: nlinks INTEGER, INTENT(OUT) :: max_corder INTEGER, INTENT(OUT) :: hdferr - INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id + INTEGER(HID_T), INTENT(IN), OPTIONAL :: lapl_id LOGICAL, INTENT(OUT), OPTIONAL :: mounted - INTEGER :: mounted_c - INTEGER(HID_T) :: lapl_id_default - INTEGER(SIZE_T) :: group_name_len ! length of group name - - INTERFACE - INTEGER FUNCTION h5gget_info_by_name_c(loc_id, group_name, group_name_len, lapl_id_default, & - storage_type, nlinks, max_corder, mounted_c) BIND(C,NAME='h5gget_info_by_name_c') - IMPORT :: C_CHAR - IMPORT :: HID_T, SIZE_T - INTEGER(HID_T), INTENT(IN) :: loc_id - CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: group_name - INTEGER(HID_T), INTENT(IN) :: lapl_id_default - INTEGER, INTENT(OUT) :: storage_type - INTEGER, INTENT(OUT) :: nlinks - INTEGER, INTENT(OUT) :: max_corder - - INTEGER(SIZE_T) :: group_name_len - INTEGER :: mounted_c - END FUNCTION h5gget_info_by_name_c - END INTERFACE + INTEGER(HID_T) :: lapl_id_default + CHARACTER(LEN=LEN_TRIM(name)+1,KIND=C_CHAR) :: c_name + TYPE(H5G_info_t), TARGET :: ginfo + TYPE(C_PTR) :: ptr - group_name_len = LEN(group_name) + c_name = TRIM(name)//C_NULL_CHAR + ptr = C_LOC(ginfo) lapl_id_default = H5P_DEFAULT_F IF(PRESENT(lapl_id)) lapl_id_default = lapl_id - hdferr = h5gget_info_by_name_c(loc_id, group_name, group_name_len, lapl_id_default, & - storage_type, nlinks, max_corder, mounted_c) + hdferr = INT(H5Gget_info_by_name(loc_id, c_name, ptr, lapl_id_default)) + + storage_type = INT(ginfo%storage_type) + nlinks = INT(ginfo%nlinks) + max_corder = INT(ginfo%max_corder) IF(PRESENT(mounted))THEN - IF(mounted_c.EQ.0) THEN - mounted = .FALSE. - ELSE + IF(ginfo%mounted) THEN mounted = .TRUE. + ELSE + mounted = .FALSE. ENDIF ENDIF +#ifdef H5_DOXYGEN END SUBROUTINE h5gget_info_by_name_f +#else + END SUBROUTINE h5gget_info_by_name_f90 +#endif END MODULE H5G |