summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5Gff.F90
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src/H5Gff.F90')
-rw-r--r--fortran/src/H5Gff.F901272
1 files changed, 1272 insertions, 0 deletions
diff --git a/fortran/src/H5Gff.F90 b/fortran/src/H5Gff.F90
new file mode 100644
index 0000000..2e002b5
--- /dev/null
+++ b/fortran/src/H5Gff.F90
@@ -0,0 +1,1272 @@
+!****h* ROBODoc/H5G
+!
+! NAME
+! MODULE H5G
+!
+! FILE
+! fortran/src/H5Gff.f90
+!
+! PURPOSE
+! This file contains Fortran interfaces for H5G functions.
+!
+! COPYRIGHT
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+! Copyright by The HDF Group. *
+! Copyright by the Board of Trustees of the University of Illinois. *
+! All rights reserved. *
+! *
+! This file is part of HDF5. The full HDF5 copyright notice, including *
+! terms governing use, modification, and redistribution, is contained in *
+! the files COPYING and Copyright.html. COPYING can be found at the root *
+! of the source code distribution tree; Copyright.html can be found at the *
+! root level of an installed copy of the electronic HDF5 document set and *
+! is linked from the top-level documents page. It can also be found at *
+! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+! access to either file, you may request a copy from help@hdfgroup.org. *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+!
+! NOTES
+! _____ __ __ _____ ____ _____ _______ _ _ _______
+! |_ _| \/ | __ \ / __ \| __ \__ __|/\ | \ | |__ __|
+! **** | | | \ / | |__) | | | | |__) | | | / \ | \| | | | ****
+! **** | | | |\/| | ___/| | | | _ / | | / /\ \ | . ` | | | ****
+! **** _| |_| | | | | | |__| | | \ \ | |/ ____ \| |\ | | | ****
+! |_____|_| |_|_| \____/|_| \_\ |_/_/ \_\_| \_| |_|
+!
+! If you add a new H5G function you must add the function name to the
+! Windows dll file 'hdf5_fortrandll.def.in' in the fortran/src directory.
+! This is needed for Windows based operating systems.
+!
+!*****
+
+MODULE H5G
+ USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_CHAR
+ USE H5GLOBAL
+
+CONTAINS
+
+!****s* H5G/h5gcreate_f
+!
+! NAME
+! h5gcreate_f
+!
+! PURPOSE
+! Creates a new group.
+!
+! INPUTS
+! loc_id - location identifier
+! name - group name at the specified location
+! OUTPUTS
+! grp_id - group identifier
+! hdferr - Returns 0 if successful and -1 if fails
+! OPTIONAL PARAMETERS
+! size_hint - a parameter indicating the number of bytes to
+! reserve for the names that will appear in the group
+! lcpl_id - Property list for link creation
+! gcpl_id - Property list for group creation
+! gapl_id - Property list for group access
+!
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! Added additional optional paramaters in 1.8
+! MSB - February 27, 2008
+!
+! SOURCE
+ SUBROUTINE h5gcreate_f(loc_id, name, grp_id, hdferr, size_hint, lcpl_id, gcpl_id, gapl_id)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
+ INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(SIZE_T), OPTIONAL, INTENT(IN) :: size_hint
+ ! 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
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Property list for link creation
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id ! Property list for group creation
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Property list for group access
+!*****
+ 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
+
+ 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')
+ 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
+ END INTERFACE
+
+ size_hint_default = OBJECT_NAMELEN_DEFAULT_F
+ IF (PRESENT(size_hint)) size_hint_default = size_hint
+ 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
+
+ namelen = LEN(name)
+
+ hdferr = h5gcreate_c(loc_id, name, namelen, size_hint_default, grp_id, &
+ lcpl_id_default, gcpl_id_default, gapl_id_default)
+
+ END SUBROUTINE h5gcreate_f
+
+!!$!
+!!$!****s* H5G/
+!!$!
+!!$! NAME
+!!$! h5gcreate2_f
+!!$!
+!!$! PURPOSE
+!!$! Creates a new group.
+!!$!
+!!$! INPUTS
+!!$! loc_id - location identifier
+!!$! name - group name at the specified location
+!!$! OUTPUTS
+!!$! grp_id - group identifier
+!!$! hdferr: - error code
+!!$! Success: 0
+!!$! Failure: -1
+!!$! OPTIONAL PARAMETERS
+!!$!
+!!$! lcpl_id - Property list for link creation
+!!$! gcpl_id - Property list for group creation
+!!$! gapl_id - Property list for group access
+!!$!
+!!$! AUTHOR M. Scot Breitenfeld
+!!$! February 27, 2008
+!!$!
+!!$! HISTORY
+!!$!
+!!$! NOTES Needed to switch the first 2 arguments to avoid conflect
+!!$! with h5gcreate1_f
+!!$!
+!!$
+!!$ SUBROUTINE h5gcreate2_f(name, loc_id, grp_id, hdferr, &
+!!$ lcpl_id, gcpl_id, gapl_id)
+!!$ IMPLICIT NONE
+!!$ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name ! Name of the group
+!!$ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+!!$ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!!$ INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
+!!$
+!!$ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lcpl_id ! Property list for link creation
+!!$ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id ! Property list for group creation
+!!$ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Property list for group access
+!!$
+!!$ INTEGER(HID_T) :: lcpl_id_default
+!!$ INTEGER(HID_T) :: gcpl_id_default
+!!$ INTEGER(HID_T) :: gapl_id_default
+!!$
+!!$ INTEGER(SIZE_T) :: OBJECT_NAME
+! LEN_DEFAULT ! Dummy argument to pass to c call
+!!$ INTEGER :: namelen ! Length of the name character string
+!!$
+!!$! MS FORTRAN needs explicit interface for C functions called here.
+!!$!
+!!$ INTERFACE
+!!$ INTEGER FUNCTION h5gcreate_c(loc_id, name, namelen, &
+!!$ OBJECT_NAME
+! LEN_DEFAULT, grp_id, lcpl_id_default, gcpl_id_default, gapl_id_default)
+!!$ USE H5GLOBAL
+!!$ !DEC$IF DEFINED(HDF5F90_WINDOWS)
+!!$ !DEC$ATTRIBUTES C,reference,decorate,alias:'H5GCREATE_C'::h5gcreate_c
+!!$ !DEC$ENDIF
+!!$ !DEC$ATTRIBUTES reference :: name
+!!$ INTEGER(HID_T), INTENT(IN) :: loc_id
+!!$ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name
+!!$ INTEGER :: namelen
+!!$ INTEGER(SIZE_T) :: OBJECT_NAME
+! LEN_DEFAULT
+!!$ INTEGER(HID_T) :: lcpl_id_default
+!!$ INTEGER(HID_T) :: gcpl_id_default
+!!$ INTEGER(HID_T) :: gapl_id_default
+!!$ INTEGER(HID_T), INTENT(OUT) :: grp_id
+!!$ END FUNCTION h5gcreate_c
+!!$ END INTERFACE
+!!$
+!!$ namelen = LEN(name)
+!!$ OBJECT_NAME
+! LEN_DEFAULT = OBJECT_NAME
+! LEN_DEFAULT_F
+!!$
+!!$ 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
+!!$
+!!$
+!!$ hdferr = h5gcreate_c(loc_id, name, namelen, OBJECT_NAME
+! LEN_DEFAULT, grp_id, &
+!!$ lcpl_id_default, gcpl_id_default, gapl_id_default)
+!!$
+!!$ END SUBROUTINE h5gcreate2_f
+
+!
+!****s* H5G/h5gopen_f
+!
+! NAME
+! h5gopen_f
+!
+! PURPOSE
+! Opens an existing group.
+!
+! INPUTS
+! loc_id - location identifier
+! name - name of the group to open
+! OUTPUTS
+! grp_id - group identifier
+! hdferr - Returns 0 if successful and -1 if fails
+! OPTIONAL PARAMETERS
+! gapl_id - Group access property list identifier
+!
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! Added 1.8 (optional) parameter gapl_id
+! February, 2008 M. Scot Breitenfeld
+!
+! SOURCE
+ SUBROUTINE h5gopen_f(loc_id, name, grp_id, hdferr, gapl_id)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
+ INTEGER(HID_T), INTENT(OUT) :: grp_id ! File identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Group access property list identifier
+!*****
+ 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')
+ 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
+ END INTERFACE
+
+ 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)
+
+ END SUBROUTINE h5gopen_f
+!
+!****s* H5G/h5gclose_f
+!
+! NAME
+! h5gclose_f
+!
+! PURPOSE
+! Closes the specified group.
+!
+! INPUTS
+! grp_id - group identifier
+! OUTPUTS
+! hdferr - Returns 0 if successful and -1 if fails
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! SOURCE
+ SUBROUTINE h5gclose_f(grp_id, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: grp_id ! Group identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTERFACE
+ INTEGER FUNCTION h5gclose_c(grp_id) BIND(C,NAME='h5gclose_c')
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: grp_id
+ END FUNCTION h5gclose_c
+ END INTERFACE
+
+ hdferr = h5gclose_c(grp_id)
+
+ END SUBROUTINE h5gclose_f
+!
+!****s* H5G/h5gget_obj_info_idx_f
+!
+! NAME
+! h5gget_obj_info_idx_f
+!
+! PURPOSE
+! Returns name and type of the group member identified by
+! its index.
+!
+! INPUTS
+! loc_id - location identifier
+! name - name of the group at the specified location
+! idx - object index (zero-based)
+! OUTPUTS
+! obj_name - object name
+! obj_type - object type
+! hdferr - Returns 0 if successful and -1 if fails
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! SOURCE
+ SUBROUTINE h5gget_obj_info_idx_f(loc_id, name, idx, &
+ obj_name, obj_type, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
+ INTEGER, INTENT(IN) :: idx ! Index of member object
+ CHARACTER(LEN=*), INTENT(OUT) :: obj_name ! Name of the object
+ INTEGER, INTENT(OUT) :: obj_type ! Object type
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTEGER :: namelen ! Length of the name character string
+ INTEGER :: obj_namelen ! Length of the obj_name character string
+
+ INTERFACE
+ INTEGER FUNCTION h5gget_obj_info_idx_c(loc_id, name, &
+ namelen, idx, &
+ obj_name, obj_namelen, obj_type) BIND(C,NAME='h5gget_obj_info_idx_c')
+ IMPORT :: C_CHAR
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name
+ INTEGER :: namelen
+ INTEGER, INTENT(IN) :: idx
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: obj_name
+ INTEGER :: obj_namelen
+ INTEGER, INTENT(OUT) :: obj_type
+ END FUNCTION h5gget_obj_info_idx_c
+ END INTERFACE
+
+ namelen = LEN(name)
+ obj_namelen = LEN(obj_name)
+ hdferr = h5gget_obj_info_idx_c(loc_id, name, namelen, idx, &
+ obj_name, obj_namelen, obj_type)
+ END SUBROUTINE h5gget_obj_info_idx_f
+
+!
+!****s* H5G/h5gn_members_f
+!
+! NAME
+! h5gn_members_f
+!
+! PURPOSE
+! Returns the number of group members.
+!
+! INPUTS
+! loc_id - location identifier
+! name - name of the group at the specified location
+! OUTPUTS
+! nmembers - number of group members
+! hdferr - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! SOURCE
+ SUBROUTINE h5gn_members_f(loc_id, name, nmembers, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
+ INTEGER, INTENT(OUT) :: nmembers ! Number of members in the
+ ! group
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTEGER :: namelen ! Length of the name character string
+
+ INTERFACE
+ INTEGER FUNCTION h5gn_members_c(loc_id, name, namelen, nmembers) &
+ BIND(C,NAME='h5gn_members_c')
+ IMPORT :: C_CHAR
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name
+ INTEGER :: namelen
+ INTEGER, INTENT(OUT) :: nmembers
+ END FUNCTION h5gn_members_c
+ END INTERFACE
+
+ namelen = LEN(name)
+ hdferr = h5gn_members_c(loc_id, name, namelen, nmembers)
+
+ END SUBROUTINE h5gn_members_f
+!
+!****s* H5G/h5glink_f
+!
+! NAME
+! h5glink_f
+!
+! PURPOSE
+! Creates a link of the specified type from new_name
+! to current_name.
+!
+! INPUTS
+! loc_id - location identifier
+! link_type - link type; possible values are:
+! H5G_LINK_HARD_F (0)
+! H5G_LINK_SOFT_F (1)
+! current_name - name of the existing object if link is a
+! hard link. Can be anything for the soft link
+! new_name - new name for the object
+! OUTPUTS
+! hdferr - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! SOURCE
+ SUBROUTINE h5glink_f(loc_id, link_type, current_name, &
+ new_name, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ INTEGER, INTENT(IN) :: link_type ! link type
+ ! Possible values are:
+ ! H5G_LINK_HARD_F (0) or
+ ! H5G_LINK_SOFT_F (1)
+
+ CHARACTER(LEN=*), INTENT(IN) :: current_name
+ ! Current name of an object
+ CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+
+ INTEGER :: current_namelen ! Lenghth of the current_name string
+ INTEGER :: new_namelen ! Lenghth of the new_name string
+
+ INTERFACE
+ INTEGER FUNCTION h5glink_c(loc_id, link_type, current_name, &
+ current_namelen, new_name, new_namelen) &
+ BIND(C,NAME='h5glink_c')
+ IMPORT :: C_CHAR
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ INTEGER, INTENT(IN) :: link_type
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: current_name
+ INTEGER :: current_namelen
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: new_name
+ INTEGER :: new_namelen
+ END FUNCTION h5glink_c
+ END INTERFACE
+
+ current_namelen = LEN(current_name)
+ new_namelen = LEN(new_name)
+ hdferr = h5glink_c(loc_id, link_type, current_name, &
+ current_namelen, new_name, new_namelen)
+ END SUBROUTINE h5glink_f
+
+!
+!****s* H5G/h5glink2_f
+!
+! NAME
+! h5glink2_f
+!
+! PURPOSE
+! Creates a link of the specified type from new_name
+! to current_name. current_name and new_name are interpreted
+! releative to current and new location identifiers.
+!
+! INPUTS
+! cur_loc_id - location identifier
+! cur_name - name of the existing object if link is a
+! hard link. Can be anything for the soft link.
+! link_type - link type; possible values are:
+! H5G_LINK_HARD_F (0)
+! H5G_LINK_SOFT_F (1)
+! new_loc_id - new location identifier
+! new_name - new name for the object
+! OUTPUTS
+! hdferr - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+! Elena Pourmal
+! September 25, 2002
+!
+! SOURCE
+ SUBROUTINE h5glink2_f(cur_loc_id, cur_name, link_type, new_loc_id, &
+ new_name, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: cur_loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: cur_name
+ ! Current name of an object
+ INTEGER, INTENT(IN) :: link_type ! link type
+ ! Possible values are:
+ ! H5G_LINK_HARD_F (0) or
+ ! H5G_LINK_SOFT_F (1)
+
+ INTEGER(HID_T), INTENT(IN) :: new_loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+
+ INTEGER :: cur_namelen ! Lenghth of the current_name string
+ INTEGER :: new_namelen ! Lenghth of the new_name string
+
+ INTERFACE
+ INTEGER FUNCTION h5glink2_c(cur_loc_id, cur_name, cur_namelen, &
+ link_type, new_loc_id, &
+ new_name, new_namelen) BIND(C,NAME='h5glink2_c')
+ IMPORT :: C_CHAR
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: cur_loc_id
+ INTEGER(HID_T), INTENT(IN) :: new_loc_id
+ INTEGER, INTENT(IN) :: link_type
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: cur_name
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: new_name
+ INTEGER :: cur_namelen
+ INTEGER :: new_namelen
+ END FUNCTION h5glink2_c
+ END INTERFACE
+
+ cur_namelen = LEN(cur_name)
+ new_namelen = LEN(new_name)
+ hdferr = h5glink2_c(cur_loc_id, cur_name, cur_namelen, link_type, &
+ new_loc_id, new_name, new_namelen)
+ END SUBROUTINE h5glink2_f
+
+!
+!****s* H5G/h5gunlink_f
+!
+! NAME
+! h5gunlink_f
+!
+! PURPOSE
+! Removes the specified name from the group graph and
+! decrements the link count for the object to which name
+! points
+!
+! INPUTS
+! loc_id - location identifier
+! name - name of the object to unlink
+! OUTPUTS
+! hdferr - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! SOURCE
+ SUBROUTINE h5gunlink_f(loc_id, name, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Name of an object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTEGER :: namelen ! Lenghth of the name character string
+
+ INTERFACE
+ INTEGER FUNCTION h5gunlink_c(loc_id, name, namelen) BIND(C,NAME='h5gunlink_c')
+ IMPORT :: C_CHAR
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name
+ INTEGER :: namelen
+ END FUNCTION h5gunlink_c
+ END INTERFACE
+
+ namelen = LEN(name)
+ hdferr = h5gunlink_c(loc_id, name, namelen)
+ END SUBROUTINE h5gunlink_f
+
+!
+!****s* H5G/h5gmove_f
+!
+! NAME
+! h5gmove_f
+!
+! PURPOSE
+! Renames an object within an HDF5 file.
+!
+! INPUTS
+! loc_id - location identifier
+! name - object's name at specified location
+! new_name - object's new name
+! OUTPUTS
+! hdferr - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! SOURCE
+ SUBROUTINE h5gmove_f(loc_id, name, new_name, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object
+ CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTEGER :: namelen ! Lenghth of the current_name string
+ INTEGER :: new_namelen ! Lenghth of the new_name string
+
+ INTERFACE
+ INTEGER FUNCTION h5gmove_c(loc_id, name, namelen, new_name, new_namelen) BIND(C,NAME='h5gmove_c')
+ IMPORT :: C_CHAR
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name
+ INTEGER :: namelen
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: new_name
+ INTEGER :: new_namelen
+ END FUNCTION h5gmove_c
+ END INTERFACE
+
+ namelen = LEN(name)
+ new_namelen = LEN(new_name)
+ hdferr = h5gmove_c(loc_id, name, namelen, new_name, new_namelen)
+ END SUBROUTINE h5gmove_f
+!
+!****s* H5G/h5gmove2_f
+!
+! NAME
+! h5gmove2_f
+!
+! PURPOSE
+! Renames an object within an HDF5 file.
+!
+! INPUTS
+! src_loc_id - original location identifier
+! src_name - object's name at specified original location
+! dst_loc_id - original location identifier
+! dst_name - object's new name
+! OUTPUTS
+! hdferr - Returns 0 if successful and -1 if fails
+! AUTHOR
+! Elena Pourmal
+! September 25, 2002
+!
+! SOURCE
+ SUBROUTINE h5gmove2_f(src_loc_id, src_name, dst_loc_id, dst_name, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: src_loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: src_name ! Original name of an object
+ INTEGER(HID_T), INTENT(IN) :: dst_loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: dst_name ! New name of an object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTEGER :: src_namelen ! Length of the current_name string
+ INTEGER :: dst_namelen ! Lenghth of the new_name string
+
+ INTERFACE
+ INTEGER FUNCTION h5gmove2_c(src_loc_id, src_name, src_namelen, &
+ dst_loc_id, dst_name, dst_namelen) BIND(C,NAME='h5gmove2_c')
+ IMPORT :: C_CHAR
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: src_loc_id
+ INTEGER(HID_T), INTENT(IN) :: dst_loc_id
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: src_name
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: dst_name
+ INTEGER :: src_namelen
+ INTEGER :: dst_namelen
+ END FUNCTION h5gmove2_c
+ END INTERFACE
+
+ src_namelen = LEN(src_name)
+ dst_namelen = LEN(dst_name)
+ hdferr = h5gmove2_c(src_loc_id, src_name, src_namelen, dst_loc_id, dst_name, dst_namelen)
+ END SUBROUTINE h5gmove2_f
+!
+!****s* H5G/h5gget_linkval_f
+!
+! NAME
+! h5gget_linkval_f
+!
+! PURPOSE
+! Returns the name of the object that the symbolic link
+! points to.
+!
+! INPUTS
+! loc_id - location identifier
+! name - symbolic link to the object whose name
+! is to be returned.
+! size - maximum number of characters to be returned
+! OUTPUTS
+! buffer - a buffer to hold the name of the object
+! being sought
+! hdferr - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! SOURCE
+ SUBROUTINE h5gget_linkval_f(loc_id, name, size, buffer, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object
+ INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of buffer
+ CHARACTER(LEN=size), INTENT(OUT) :: buffer
+ ! Buffer to hold a name of
+ ! the object symbolic link
+ ! points to
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTEGER :: namelen ! Lenghth of the current_name string
+
+ INTERFACE
+ INTEGER FUNCTION h5gget_linkval_c(loc_id, name, namelen, size, buffer) BIND(C,NAME='h5gget_linkval_c')
+ IMPORT :: C_CHAR, SIZE_T
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name
+ INTEGER :: namelen
+ INTEGER(SIZE_T), INTENT(IN) :: size
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: buffer
+ END FUNCTION h5gget_linkval_c
+ END INTERFACE
+
+ namelen = LEN(name)
+ hdferr = h5gget_linkval_c(loc_id, name, namelen, size, buffer)
+ END SUBROUTINE h5gget_linkval_f
+
+!
+!****s* H5G/h5gset_comment_f
+!
+! NAME
+! h5gset_comment_f
+!
+! PURPOSE
+! Sets comment for specified object.
+!
+! INPUTS
+! loc_id - location identifier
+! name - name of the object
+! comment - comment to set for the object
+! OUTPUTS
+! hdferr - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! SOURCE
+ SUBROUTINE h5gset_comment_f(loc_id, name, comment, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object
+ CHARACTER(LEN=*), INTENT(IN) :: comment ! New name of an object
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTEGER :: namelen ! Lenghth of the current_name string
+ INTEGER :: commentlen ! Lenghth of the comment string
+
+ INTERFACE
+ INTEGER FUNCTION h5gset_comment_c(loc_id, name, namelen, &
+ comment, commentlen) BIND(C,NAME='h5gset_comment_c')
+ IMPORT :: C_CHAR
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: loc_id
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name
+ INTEGER :: namelen
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: comment
+ INTEGER :: commentlen
+ END FUNCTION h5gset_comment_c
+ END INTERFACE
+
+ namelen = LEN(name)
+ commentlen = LEN(comment)
+ hdferr = h5gset_comment_c(loc_id, name, namelen, comment, commentlen)
+ END SUBROUTINE h5gset_comment_f
+!
+!****s* H5G/h5gget_comment_f
+!
+! NAME
+! h5gget_comment_f
+!
+! PURPOSE
+! Retrieves comment for specified object.
+!
+! INPUTS
+! loc_id - location identifier
+! name - name of the object at specified location
+! size - size of the buffer required to hold comment
+! OUTPUTS
+! buffer - buffer to hold object's comment
+! hdferr - Returns 0 if successful and -1 if fails
+!
+! AUTHOR
+! Elena Pourmal
+! August 12, 1999
+!
+! HISTORY
+! Explicit Fortran interfaces were added for
+! called C functions (it is needed for Windows
+! port). March 5, 2001
+!
+! SOURCE
+ SUBROUTINE h5gget_comment_f(loc_id, name, size, buffer, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: name ! Current name of an object
+ INTEGER(SIZE_T), INTENT(IN) :: size ! Maximum number of buffer
+ CHARACTER(LEN=size), INTENT(OUT) :: buffer
+ ! Buffer to hold a comment
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTEGER :: namelen ! Length of the current_name string
+
+ INTERFACE
+ INTEGER FUNCTION h5gget_comment_c(loc_id, name, namelen, size, buffer) BIND(C,NAME='h5gget_comment_c')
+ 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), INTENT(IN) :: size
+ CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: buffer
+ END FUNCTION h5gget_comment_c
+ END INTERFACE
+
+ namelen = LEN(name)
+ hdferr = h5gget_comment_c(loc_id, name, namelen, size, buffer)
+
+ END SUBROUTINE h5gget_comment_f
+!
+!****s* H5G/H5Gcreate_anon_f
+!
+! NAME
+! H5Gcreate_anon_f
+!
+! PURPOSE
+! Creates a new empty group without linking it into the file structure.
+!
+! INPUTS
+! loc_id - Location identifier
+! OUTPUTS
+! grp_id - group identifier
+! hdferr - Returns 0 if successful and -1 if fails
+! OPTIONAL PARAMETERS
+! gcpl_id - Group creation property list identifier
+! gapl_id - Group access property list identifier
+!
+! AUTHOR
+! M. Scot Breitenfeld
+! February 15, 2008
+!
+! SOURCE
+ SUBROUTINE h5Gcreate_anon_f(loc_id, grp_id, hdferr, gcpl_id, gapl_id)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gcpl_id ! Property list for group creation
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: gapl_id ! Property list for group access
+!*****
+ INTEGER(HID_T) :: gcpl_id_default
+ INTEGER(HID_T) :: gapl_id_default
+
+ INTERFACE
+ INTEGER FUNCTION h5gcreate_anon_c(loc_id, gcpl_id_default, gapl_id_default, grp_id) &
+ BIND(C,NAME='h5gcreate_anon_c')
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ INTEGER(HID_T), INTENT(IN) :: gcpl_id_default ! Property list for group creation
+ INTEGER(HID_T), INTENT(IN) :: gapl_id_default ! Property list for group access
+ INTEGER(HID_T), INTENT(OUT) :: grp_id ! Group identifier
+ END FUNCTION h5gcreate_anon_c
+ END INTERFACE
+
+ gcpl_id_default = H5P_DEFAULT_F
+ gapl_id_default = H5P_DEFAULT_F
+
+ IF(PRESENT(gcpl_id)) gcpl_id_default = gcpl_id
+ IF(PRESENT(gapl_id)) gapl_id_default = gapl_id
+
+ hdferr = h5gcreate_anon_c(loc_id, gcpl_id_default, gapl_id_default, grp_id)
+
+ END SUBROUTINE h5Gcreate_anon_f
+!
+!****s* H5G/H5Gget_create_plist_f
+!
+! NAME
+! H5Gget_create_plist_f
+!
+! PURPOSE
+! Gets a group creation property list identifier.
+!
+! INPUTS
+! grp_id - group identifier
+! OUTPUTS
+! gcpl_id - Group creation property list identifier
+! hdferr - Returns 0 if successful and -1 if fails
+! AUTHOR
+! M. Scot Breitenfeld
+! February 15, 2008
+!
+! SOURCE
+ SUBROUTINE h5gget_create_plist_f(grp_id, gcpl_id, hdferr)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: grp_id ! Group identifier
+ INTEGER(HID_T), INTENT(OUT) :: gcpl_id ! Property list for group creation
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+!*****
+ INTERFACE
+ INTEGER FUNCTION h5gget_create_plist_c(grp_id, gcpl_id ) BIND(C,NAME='h5gget_create_plist_c')
+ IMPORT :: HID_T
+ INTEGER(HID_T), INTENT(IN) :: grp_id
+ INTEGER(HID_T), INTENT(OUT) :: gcpl_id
+ END FUNCTION h5gget_create_plist_c
+ END INTERFACE
+
+ hdferr = h5gget_create_plist_c(grp_id, gcpl_id )
+
+ END SUBROUTINE h5gget_create_plist_f
+
+!
+!****s* H5G/h5gget_info_f
+!
+! NAME
+! h5gget_info_f
+!
+! PURPOSE
+! Retrieves information about a group
+!
+! INPUTS
+! group_id - Group identifier
+!
+! OUTPUTS
+! storage_type - Type of storage for links in group
+! H5G_STORAGE_TYPE_COMPACT: Compact storage
+! H5G_STORAGE_TYPE_DENSE: Indexed storage
+! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+! nlinks - Number of links in group
+! max_corder - Current maximum creation order value for group
+! hdferr - Returns 0 if successful and -1 if fails
+! OPTIONAL PARAMETERS
+! mounted - Whether group has a file mounted on it
+!
+! AUTHOR
+! M. Scot Breitenfeld
+! February 15, 2008
+!
+! NOTES
+! In C the output is defined as a structure: H5G_info_t
+!
+! HISTORY
+!
+! - Added 'mounted' paramater
+! M. Scot Breitenfeld
+! July 16, 2008
+!
+! SOURCE
+ SUBROUTINE h5gget_info_f(group_id, storage_type, nlinks, max_corder, hdferr, mounted)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: group_id ! Group identifier
+
+ INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group:
+ ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage
+ ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage
+ ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure
+ INTEGER, INTENT(OUT) :: nlinks ! Number of links in group
+ INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ LOGICAL, INTENT(OUT), OPTIONAL :: mounted ! Whether group has a file mounted on it
+!*****
+ 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
+
+ hdferr = h5gget_info_c(group_id, storage_type, nlinks, max_corder, mounted_c)
+
+ IF(PRESENT(mounted))THEN
+ IF(mounted_c.EQ.0) THEN
+ mounted = .FALSE.
+ ELSE
+ mounted = .TRUE.
+ ENDIF
+ ENDIF
+
+ END SUBROUTINE h5gget_info_f
+!
+!****s* H5G/h5gget_info_by_idx_f
+!
+! NAME
+! h5gget_info_by_idx_f
+!
+! PURPOSE
+! Retrieves information about a group, according to the group’s position within an index.
+!
+! INPUTS
+! loc_id - File or group identifier
+! group_name - Name of group containing group for which information is to be retrieved
+! index_type - Index type
+! order - Order of the count in the index
+! n - Position in the index of the group for which information is retrieved
+!
+! OUTPUTS
+! storage_type - Type of storage for links in group
+! H5G_STORAGE_TYPE_COMPACT: Compact storage
+! H5G_STORAGE_TYPE_DENSE: Indexed storage
+! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+! nlinks - Number of links in group
+! max_corder - Current maximum creation order value for group
+! hdferr - Returns 0 if successful and -1 if fails
+! OPTIONAL PARAMETERS
+! lapl_id - Link access property list
+! mounted - Whether group has a file mounted on it
+!
+! NOTES
+! In C the output is defined as a structure: H5G_info_t
+!
+! AUTHOR
+! M. Scot Breitenfeld
+! February 18, 2008
+!
+! HISTORY
+! Added 'mounted' paramater
+! M. Scot Breitenfeld
+! July 16, 2008
+!
+! SOURCE
+ SUBROUTINE h5gget_info_by_idx_f(loc_id, group_name, index_type, order, n, &
+ storage_type, nlinks, max_corder, hdferr, lapl_id, mounted)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of group containing group for which information is to be retrieved
+ INTEGER, INTENT(IN) :: index_type ! Index type
+ INTEGER, INTENT(IN) :: order ! Order of the count in the index
+ INTEGER(HSIZE_T), INTENT(IN) :: n ! Position in the index of the group for which information is retrieved
+
+ INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group:
+ ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage
+ ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage
+ ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure
+ INTEGER, INTENT(OUT) :: nlinks ! Number of links in group
+ INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+ LOGICAL, INTENT(OUT), OPTIONAL :: mounted ! Whether group has a file mounted on it
+!*****
+ 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
+
+ group_name_len = LEN(group_name)
+
+ 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)
+
+ IF(PRESENT(mounted))THEN
+ IF(mounted_c.EQ.0) THEN
+ mounted = .FALSE.
+ ELSE
+ mounted = .TRUE.
+ ENDIF
+ ENDIF
+
+ END SUBROUTINE h5gget_info_by_idx_f
+!
+!****s* H5G/h5gget_info_by_name_f
+!
+! NAME
+! h5gget_info_by_name_f
+!
+! PURPOSE
+! Retrieves information about a group.
+!
+! INPUTS
+! loc_id - File or group identifier
+! group_name - Name of group containing group for which information is to be retrieved
+!
+! OUTPUTS
+!
+! storage_type - Type of storage for links in group
+! H5G_STORAGE_TYPE_COMPACT: Compact storage
+! H5G_STORAGE_TYPE_DENSE: Indexed storage
+! H5G_STORAGE_TYPE_SYMBOL_TABLE: Symbol tables, the original HDF5 structure
+! nlinks - Number of links in group
+! max_corder - Current maximum creation order value for group
+! hdferr - Returns 0 if successful and -1 if fails
+! OPTIONAL PARAMETERS
+! lapl_id - Link access property list
+! mounted - Whether group has a file mounted on it
+!
+! NOTES
+! In C the output is defined as a structure: H5G_info_t
+!
+! AUTHOR
+! M. Scot Breitenfeld
+! February 18, 2008
+!
+! HISTORY
+! Added 'mounted' paramater
+! M. Scot Breitenfeld
+! July 16, 2008
+! SOURCE
+ SUBROUTINE h5gget_info_by_name_f(loc_id, group_name, &
+ storage_type, nlinks, max_corder, hdferr, lapl_id, mounted)
+ IMPLICIT NONE
+ INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
+ CHARACTER(LEN=*), INTENT(IN) :: group_name ! Name of group containing group for which information is to be retrieved
+
+ INTEGER, INTENT(OUT) :: storage_type ! Type of storage for links in group:
+ ! H5G_STORAGE_TYPE_COMPACT_F: Compact storage
+ ! H5G_STORAGE_TYPE_DENSE_F: Indexed storage
+ ! H5G_STORAGE_TYPE_SYMBOL_TABLE_F: Symbol tables, the original HDF5 structure
+ INTEGER, INTENT(OUT) :: nlinks ! Number of links in group
+ INTEGER, INTENT(OUT) :: max_corder ! Current maximum creation order value for group
+ INTEGER, INTENT(OUT) :: hdferr ! Error code:
+ ! 0 on success and -1 on failure
+ INTEGER(HID_T), OPTIONAL, INTENT(IN) :: lapl_id ! Link access property list
+ LOGICAL, INTENT(OUT), OPTIONAL :: mounted ! Whether group has a file mounted on it
+!*****
+ 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
+
+ group_name_len = LEN(group_name)
+
+ 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)
+
+ IF(PRESENT(mounted))THEN
+ IF(mounted_c.EQ.0) THEN
+ mounted = .FALSE.
+ ELSE
+ mounted = .TRUE.
+ ENDIF
+ ENDIF
+
+ END SUBROUTINE h5gget_info_by_name_f
+
+END MODULE H5G