Files
hdf5/fortran/src/H5Iff.F90
Larry Knox 89fbe00dec Merge pull request #426 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:hdf5_1_10 to hdf5_1_10
* commit '54957d37f5aa73912763dbb6e308555e863c43f4':
  Commit copyright header change for src/H5PLpkg.c which was added after running script to make changes.
  Add new files in release_docs to MANIFEST. Cimmit changes to Makefile.in(s) and H5PL.c that resulted from running autogen.sh.
  Merge pull request #407 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:hdf5_1_10_1 to hdf5_1_10_1
  Change copyright headers to replace url referring to file to be removed and replace it with new url for COPYING file.
2017-04-25 16:05:36 -05:00

344 lines
9.8 KiB
Fortran

!****h* ROBODoc/H5I
!
! NAME
! MODULE H5I
!
! FILE
! fortran/src/H5Iff.F90
!
! PURPOSE
! This file contains Fortran interfaces for H5I 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 COPYING file, which can be found at the root of the source code *
! distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
! If you do not have access to either file, you may request a copy from *
! help@hdfgroup.org. *
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!
! NOTES
! _____ __ __ _____ ____ _____ _______ _ _ _______
! |_ _| \/ | __ \ / __ \| __ \__ __|/\ | \ | |__ __|
! **** | | | \ / | |__) | | | | |__) | | | / \ | \| | | | ****
! **** | | | |\/| | ___/| | | | _ / | | / /\ \ | . ` | | | ****
! **** _| |_| | | | | | |__| | | \ \ | |/ ____ \| |\ | | | ****
! |_____|_| |_|_| \____/|_| \_\ |_/_/ \_\_| \_| |_|
!
! If you add a new H5I 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 H5I
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR, C_CHAR
USE H5GLOBAL
CONTAINS
!****s* H5I/h5iget_type_f
!
! NAME
! h5iget_type_f
!
! PURPOSE
! Retrieves the type of an object.
!
! INPUTS
! obj_id - object identifier
! OUTPUTS
! type - type of the object, possible values:
! H5I_FILE_F
! H5I_GROUP_F
! H5I_DATATYPE_F
! H5I_DATASPACE_F
! H5I_DATASET_F
! H5I_ATTR_F
! H5I_BADID_F
! hdferr: - error code
! Success: 0
! Failure: -1
!
! 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 h5iget_type_f(obj_id, TYPE, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
INTEGER, INTENT(OUT) :: TYPE ! type of an object.
! possible values are:
! H5I_FILE_F
! H5I_GROUP_F
! H5I_DATATYPE_F
! H5I_DATASPACE_F
! H5I_DATASET_F
! H5I_ATTR_F
! H5I_BADID_F
INTEGER, INTENT(OUT) :: hdferr ! Error code
!*****
INTERFACE
INTEGER FUNCTION h5iget_type_c(obj_id, TYPE) BIND(C, NAME='h5iget_type_c')
IMPORT :: HID_T
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id
INTEGER, INTENT(OUT) :: TYPE
END FUNCTION h5iget_type_c
END INTERFACE
hdferr = h5iget_type_c(obj_id, TYPE)
END SUBROUTINE h5iget_type_f
!****s* H5I/h5iget_name_f
!
! NAME
! h5iget_name_f
!
! PURPOSE
! Gets a name of an object specified by its idetifier.
!
! INPUTS
! obj_id - attribute identifier
! buf_size - size of a buffer to read name in
! OUTPUTS
! buf - buffer to read name in, name will be truncated if
! buffer is not big enough
! name_size - name size
! hdferr: - error code
! Success: 0
! Failure: -1
!
! AUTHOR
! Elena Pourmal
! March 12, 2003
! SOURCE
SUBROUTINE h5iget_name_f(obj_id, buf, buf_size, name_size, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
INTEGER(SIZE_T), INTENT(IN) :: buf_size ! Buffer size
CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer to hold object name
INTEGER(SIZE_T), INTENT(OUT) :: name_size ! Actual name size
INTEGER, INTENT(OUT) :: hdferr ! Error code:
! 0 if successful,
! -1 if fail
!*****
INTERFACE
INTEGER FUNCTION h5iget_name_c(obj_id, buf, buf_size, name_size) BIND(C, NAME='h5iget_name_c')
IMPORT :: C_CHAR
IMPORT :: HID_T, SIZE_T
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id
CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: buf
INTEGER(SIZE_T), INTENT(IN) :: buf_size
INTEGER(SIZE_T), INTENT(OUT) :: name_size
END FUNCTION h5iget_name_c
END INTERFACE
hdferr = h5iget_name_c(obj_id, buf, buf_size, name_size)
END SUBROUTINE h5iget_name_f
!****s* H5I/h5iinc_ref_f
!
! NAME
! h5iinc_ref_f
!
! PURPOSE
! Increments the reference count of an ID
!
! INPUTS
! obj_id - object identifier
! OUTPUTS
! ref_count - Current reference count of the ID
! hdferr: - error code
! Success: 0
! Failure: -1
! AUTHOR
! Quincey Koziol
! December 9, 2003
!
! SOURCE
SUBROUTINE h5iinc_ref_f(obj_id, ref_count, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
INTEGER, INTENT(OUT) :: ref_count ! Current reference count of ID
INTEGER, INTENT(OUT) :: hdferr ! Error code
!*****
INTERFACE
INTEGER FUNCTION h5iinc_ref_c(obj_id, ref_count) BIND(C, NAME='h5iinc_ref_c')
IMPORT :: HID_T
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id
INTEGER, INTENT(OUT) :: ref_count
END FUNCTION h5iinc_ref_c
END INTERFACE
hdferr = h5iinc_ref_c(obj_id, ref_count)
END SUBROUTINE h5iinc_ref_f
!****s* H5I/h5idec_ref_f
!
! NAME
! h5idec_ref_f
!
! PURPOSE
! Decrements the reference count of an ID
!
! INPUTS
! obj_id - Object identifier
! OUTPUTS
! ref_count - Current reference count of the ID
! hdferr: - Error code
! Success: 0
! Failure: -1
! AUTHOR
! Quincey Koziol
! December 9, 2003
!
! SOURCE
SUBROUTINE h5idec_ref_f(obj_id, ref_count, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
INTEGER, INTENT(OUT) :: ref_count ! Current reference count of ID
INTEGER, INTENT(OUT) :: hdferr ! Error code
!*****
INTERFACE
INTEGER FUNCTION h5idec_ref_c(obj_id, ref_count) BIND(C, NAME='h5idec_ref_c')
IMPORT :: HID_T
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id
INTEGER, INTENT(OUT) :: ref_count
END FUNCTION h5idec_ref_c
END INTERFACE
hdferr = h5idec_ref_c(obj_id, ref_count)
END SUBROUTINE h5idec_ref_f
!****s* H5I/h5iget_ref_f
! NAME
! h5iget_ref_f
!
! PURPOSE
! Retrieves the reference count of an ID
!
! INPUTS
! obj_id - object identifier
!
! OUTPUTS
! ref_count - Current reference count of the ID
! hdferr: - error code
! Success: 0
! Failure: -1
! AUTHOR
! Quincey Koziol
! December 9, 2003
!
! SOURCE
SUBROUTINE h5iget_ref_f(obj_id, ref_count, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
INTEGER, INTENT(OUT) :: ref_count ! Current reference count of ID
INTEGER, INTENT(OUT) :: hdferr ! Error code
!*****
INTERFACE
INTEGER FUNCTION h5iget_ref_c(obj_id, ref_count) BIND(C, NAME='h5iget_ref_c')
IMPORT :: HID_T
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id
INTEGER, INTENT(OUT) :: ref_count
END FUNCTION h5iget_ref_c
END INTERFACE
hdferr = h5iget_ref_c(obj_id, ref_count)
END SUBROUTINE h5iget_ref_f
!
!****s* H5I/h5iget_file_id_f
! NAME
! h5iget_file_id_f
!
! PURPOSE
! Obtains file identifier from the object identifier
!
! INPUTS
! obj_id - object identifier
! OUTPUTS
! file_id - file identifier
! hdferr: - error code
! Success: 0
! Failure: -1
!
! AUTHOR
! Elena Pourmal
! August 23, 2004
! SOURCE
SUBROUTINE h5iget_file_id_f(obj_id, file_id, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
!*****
INTERFACE
INTEGER FUNCTION h5iget_file_id_c(obj_id, file_id) BIND(C, NAME='h5iget_file_id_c')
IMPORT :: HID_T
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: obj_id
INTEGER(HID_T), INTENT(OUT) :: file_id
END FUNCTION h5iget_file_id_c
END INTERFACE
hdferr = h5iget_file_id_c(obj_id, file_id)
END SUBROUTINE h5iget_file_id_f
!
!****s* H5I/h5iis_valid_f
! NAME
! h5iget_file_id_f
!
! PURPOSE
! Check if an ID is valid without producing an error message
!
! INPUTS
! id - identifier
! OUTPUTS
! valid - status of id as a valid identifier
! hdferr: - error code
! Success: 0
! Failure: -1
!
! AUTHOR
! M. Scot Breitenfeld
! April 13, 2009
! SOURCE
SUBROUTINE h5iis_valid_f(id, valid, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: id ! Identifier
LOGICAL, INTENT(OUT) :: valid ! Status of id as a valid identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
!*****
INTEGER :: c_valid ! 0 = .false, 1 = .true.
INTERFACE
INTEGER FUNCTION h5iis_valid_c(id, c_valid) BIND(C, NAME='h5iis_valid_c')
IMPORT :: HID_T
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: id ! Identifier
INTEGER :: c_valid
END FUNCTION h5iis_valid_c
END INTERFACE
hdferr = h5iis_valid_c(id, c_valid)
valid = .FALSE. ! Default
IF(c_valid.EQ.1) valid = .TRUE.
END SUBROUTINE h5iis_valid_f
END MODULE H5I