[svn-r27385] H5Dwrite,H5Dread,H5Awrite,H5Dread for INTEGERs and Characters are now generated code

This commit is contained in:
Scot Breitenfeld 2015-07-14 13:39:10 -05:00
parent 0e102fb1cd
commit f76d1ca08b
4 changed files with 400 additions and 1733 deletions

View File

@ -74,35 +74,13 @@ MODULE H5A
INTERFACE h5awrite_f
MODULE PROCEDURE h5awrite_char_scalar
MODULE PROCEDURE h5awrite_char_1
MODULE PROCEDURE h5awrite_char_2
MODULE PROCEDURE h5awrite_char_3
MODULE PROCEDURE h5awrite_char_4
MODULE PROCEDURE h5awrite_char_5
MODULE PROCEDURE h5awrite_char_6
MODULE PROCEDURE h5awrite_char_7
! This is the preferred way to call h5awrite
! by passing an address
MODULE PROCEDURE h5awrite_ptr
END INTERFACE
INTERFACE h5aread_f
MODULE PROCEDURE h5aread_integer_scalar
MODULE PROCEDURE h5aread_integer_1
MODULE PROCEDURE h5aread_integer_2
MODULE PROCEDURE h5aread_integer_3
MODULE PROCEDURE h5aread_integer_4
MODULE PROCEDURE h5aread_integer_5
MODULE PROCEDURE h5aread_integer_6
MODULE PROCEDURE h5aread_integer_7
MODULE PROCEDURE h5aread_char_scalar
MODULE PROCEDURE h5aread_char_1
MODULE PROCEDURE h5aread_char_2
MODULE PROCEDURE h5aread_char_3
MODULE PROCEDURE h5aread_char_4
MODULE PROCEDURE h5aread_char_5
MODULE PROCEDURE h5aread_char_6
MODULE PROCEDURE h5aread_char_7
! This is the preferred way to call h5aread
! by passing an address
MODULE PROCEDURE h5aread_ptr
@ -949,195 +927,6 @@ CONTAINS
END SUBROUTINE H5Arename_by_name_f
!****s* H5A (F03)/H5Awrite_f_F90
!
! NAME
! H5Awrite_f_F90
!
! PURPOSE
! Writes an attribute.
!
! Inputs:
! attr_id - Attribute identifier
! memtype_id - Attribute datatype identifier (in memory)
! dims - Array to hold corresponding dimension sizes of data buffer buf;
! dim(k) has value of the k-th dimension of buffer buf;
! values are ignored if buf is a scalar
! buf - Data buffer; may be a scalar or an array
!
! Outputs:
! hdferr - Returns 0 if successful and -1 if fails
!
! AUTHOR
! Elena Pourmal
! August 12, 1999
!
! HISTORY
! Explicit Fortran interfaces are added for
! called C functions (it is needed for Windows
! port). February 27, 2001
!
! dims parameter was added to make code portable;
! Aprile 4, 2001
!
! Changed buf intent to INOUT to be consistant
! with how the C functions handles it. The pg
! compiler will return 0 if a buf value is not set.
! February, 2008
!
! NOTES
! This function is overloaded to write INTEGER,
! REAL, REAL(KIND=C_DOUBLE) and CHARACTER buffers
! up to 7 dimensions.
!
! Fortran90 Interface:
!! SUBROUTINE H5Awrite_f(attr_id, memtype_id, buf, dims, hdferr)
!! INTEGER(HID_T) , INTENT(IN) :: attr_id
!! INTEGER(HID_T) , INTENT(IN) :: memtype_id
!! TYPE , INTENT(IN) :: buf
!! INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims
!! INTEGER , INTENT(OUT) :: hdferr
!*****
SUBROUTINE H5Awrite_integer_scalar(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(IN), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf)
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_integer_scalar
SUBROUTINE H5Awrite_integer_1(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(IN) , &
DIMENSION(dims(1)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_integer_1
SUBROUTINE H5Awrite_integer_2(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(IN) , &
DIMENSION(dims(1),dims(2)), TARGET :: buf
! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_integer_2
SUBROUTINE H5Awrite_integer_3(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_integer_3
SUBROUTINE H5Awrite_integer_4(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims! Array to story buf dimension sizes
INTEGER, INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_integer_4
SUBROUTINE H5Awrite_integer_5(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_integer_5
SUBROUTINE H5Awrite_integer_6(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1,1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_integer_6
SUBROUTINE H5Awrite_integer_7(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(IN), DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), &
TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1,1,1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_integer_7
!
!****s* H5A/H5Aopen_f
!
@ -2037,122 +1826,6 @@ CONTAINS
END SUBROUTINE H5Awrite_char_scalar_fix
SUBROUTINE H5Awrite_char_1(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(IN), DIMENSION(dims(1)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1)(1:1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_char_1
SUBROUTINE H5Awrite_char_2(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(IN), &
DIMENSION(dims(1),dims(2)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1)(1:1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_char_2
SUBROUTINE H5Awrite_char_3(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1)(1:1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_char_3
SUBROUTINE H5Awrite_char_4(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1)(1:1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_char_4
SUBROUTINE H5Awrite_char_5(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1)(1:1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_char_5
SUBROUTINE H5Awrite_char_6(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1,1)(1:1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_char_6
SUBROUTINE H5Awrite_char_7(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(IN), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1,1,1)(1:1))
hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Awrite_char_7
!****s* H5A (F03)/H5Awrite_f_F03
!
@ -2203,185 +1876,6 @@ CONTAINS
END SUBROUTINE H5Awrite_ptr
!****s* H5A (F03)/H5Aread_f_F90
!
! NAME
! H5Aread_f_F90
!
! PURPOSE
! Reads an attribute.
!
! Inputs:
! attr_id - Attribute identifier
! memtype_id - Attribute datatype identifier (in memory)
! dims - Array to hold corresponding dimension sizes of data buffer buf;
! dim(k) has value of the k-th dimension of buffer buf;
! values are ignored if buf is a scalar
!
! Outputs:
! buf - Data buffer; may be a scalar or an array
! hdferr - Returns 0 if successful and -1 if fails
!
! AUTHOR
! Elena Pourmal
! August 12, 1999
!
! HISTORY
! Explicit Fortran interfaces are added for
! called C functions (it is needed for Windows
! port). February 27, 2001
!
! dims parameter was added to make code portable;
! Aprile 4, 2001
!
! Changed buf intent to INOUT to be consistant
! with how the C functions handles it. The pg
! compiler will return 0 if a buf value is not set.
! February, 2008
!
! NOTES
! This function is overloaded to write INTEGER,
! REAL, REAL(KIND=C_DOUBLE) and CHARACTER buffers
! up to 7 dimensions.
! Fortran90 Interface:
!! SUBROUTINE H5Aread_f(attr_id, memtype_id, buf, dims, hdferr)
!! INTEGER(HID_T) , INTENT(IN) :: attr_id
!! INTEGER(HID_T) , INTENT(IN) :: memtype_id
!! TYPE , INTENT(INOUT) :: buf
!! INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims
!! INTEGER , INTENT(OUT) :: hdferr
!*****
SUBROUTINE H5Aread_integer_scalar(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(INOUT), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf)
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_integer_scalar
SUBROUTINE H5Aread_integer_1(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(INOUT), DIMENSION(dims(1)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_integer_1
SUBROUTINE H5Aread_integer_2(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(INOUT),DIMENSION(dims(1),dims(2)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_integer_2
SUBROUTINE H5Aread_integer_3(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_integer_3
SUBROUTINE H5Aread_integer_4(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_integer_4
SUBROUTINE H5Aread_integer_5(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_integer_5
SUBROUTINE H5Aread_integer_6(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1,1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_integer_6
SUBROUTINE H5Aread_integer_7(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
INTEGER, INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1,1,1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_integer_7
SUBROUTINE H5Aread_char_scalar(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
@ -2411,122 +1905,6 @@ CONTAINS
END SUBROUTINE H5Aread_char_scalar_fix
SUBROUTINE H5Aread_char_1(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1)(1:1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_char_1
SUBROUTINE H5Aread_char_2(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1)(1:1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_char_2
SUBROUTINE H5Aread_char_3(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1)(1:1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_char_3
SUBROUTINE H5Aread_char_4(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1)(1:1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_char_4
SUBROUTINE H5Aread_char_5(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1)(1:1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_char_5
SUBROUTINE H5Aread_char_6(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1,1)(1:1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_char_6
SUBROUTINE H5Aread_char_7(attr_id, memtype_id, buf, dims, hdferr)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
! identifier (in memory)
INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims ! Array to story buf dimension sizes
CHARACTER(LEN=*), INTENT(INOUT), &
DIMENSION(dims(1),dims(2),dims(3),dims(4),dims(5),dims(6),dims(7)), TARGET :: buf ! Attribute data
INTEGER, INTENT(OUT) :: hdferr ! Error code
TYPE(C_PTR) :: f_ptr
f_ptr = C_LOC(buf(1,1,1,1,1,1,1)(1:1))
hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)
END SUBROUTINE H5Aread_char_7
!****s* H5A (F03)/H5Aread_f_F03
!
! NAME

File diff suppressed because it is too large Load Diff

View File

@ -90,7 +90,17 @@ PROGRAM test_kind
' f_ptr = C_LOC(buf(1,1,1,1)) ', &
' f_ptr = C_LOC(buf(1,1,1,1,1)) ', &
' f_ptr = C_LOC(buf(1,1,1,1,1,1)) ', &
' f_ptr = C_LOC(buf(1,1,1,1,1,1,1))' &
' f_ptr = C_LOC(buf(1,1,1,1,1,1,1))' &
/)
CHARACTER(LEN=42), DIMENSION(1:8), PARAMETER :: fchr_ptr_line=(/ &
' f_ptr = C_LOC(buf(1:1)) ', &
' f_ptr = C_LOC(buf(1)(1:1)) ', &
' f_ptr = C_LOC(buf(1,1)(1:1)) ', &
' f_ptr = C_LOC(buf(1,1,1)(1:1)) ', &
' f_ptr = C_LOC(buf(1,1,1,1)(1:1)) ', &
' f_ptr = C_LOC(buf(1,1,1,1,1)(1:1)) ', &
' f_ptr = C_LOC(buf(1,1,1,1,1,1)(1:1)) ', &
' f_ptr = C_LOC(buf(1,1,1,1,1,1,1)(1:1))' &
/)
! (a) Generate Fortran H5* interfaces having multiple KIND interfaces.
@ -164,6 +174,9 @@ PROGRAM test_kind
WRITE(11,'(A)') " MODULE PROCEDURE h5awrite_ikind_"//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(k)
ENDDO
END DO
DO k = 2, 8
WRITE(11,'(A)') " MODULE PROCEDURE h5awrite_ckind_rank"//chr_rank(k)
ENDDO
WRITE(11,'(A)') " END INTERFACE"
! H5Aread_f
@ -172,9 +185,19 @@ PROGRAM test_kind
j = rkind(i)
WRITE(chr2,'(I2)') j
DO k = 1, 8
WRITE(11,'(A)') " MODULE PROCEDURE h5aread_kind_"//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(k)
WRITE(11,'(A)') " MODULE PROCEDURE h5aread_rkind_"//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(k)
ENDDO
END DO
DO i = 1, num_ikinds
j = ikind(i)
WRITE(chr2,'(I2)') j
DO k = 1, 8
WRITE(11,'(A)') " MODULE PROCEDURE h5aread_ikind_"//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(k)
ENDDO
END DO
DO k = 2, 8
WRITE(11,'(A)') " MODULE PROCEDURE h5aread_ckind_rank"//chr_rank(k)
ENDDO
WRITE(11,'(A)') " END INTERFACE"
!***************
! H5D INTERFACES
@ -195,6 +218,9 @@ PROGRAM test_kind
DO k = 1, 8
WRITE(11,'(A)') " MODULE PROCEDURE h5dwrite_ikind_"//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(k)
ENDDO
END DO
DO k = 2, 8
WRITE(11,'(A)') " MODULE PROCEDURE h5dwrite_ckind_rank"//chr_rank(k)
END DO
WRITE(11,'(A)') " END INTERFACE"
@ -204,9 +230,19 @@ PROGRAM test_kind
j = rkind(i)
WRITE(chr2,'(I2)') j
DO k = 1, 8
WRITE(11,'(A)') " MODULE PROCEDURE h5dread_kind_"//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(k)
WRITE(11,'(A)') " MODULE PROCEDURE h5dread_rkind_"//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(k)
ENDDO
END DO
DO i = 1, num_ikinds
j = ikind(i)
WRITE(chr2,'(I2)') j
DO k = 1, 8
WRITE(11,'(A)') " MODULE PROCEDURE h5dread_ikind_"//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(k)
ENDDO
END DO
DO k = 2, 8
WRITE(11,'(A)') " MODULE PROCEDURE h5dread_ckind_rank"//chr_rank(k)
ENDDO
WRITE(11,'(A)') " END INTERFACE"
!***************
@ -274,6 +310,57 @@ PROGRAM test_kind
!**********************
!
! H5Awrite_f
!****s* H5A (F03)/H5Awrite_f_F90
!
! NAME
! H5Awrite_f_F90
!
! PURPOSE
! Writes an attribute.
!
! Inputs:
! attr_id - Attribute identifier
! memtype_id - Attribute datatype identifier (in memory)
! dims - Array to hold corresponding dimension sizes of data buffer buf;
! dim(k) has value of the k-th dimension of buffer buf;
! values are ignored if buf is a scalar
! buf - Data buffer; may be a scalar or an array
!
! Outputs:
! hdferr - Returns 0 if successful and -1 if fails
!
! AUTHOR
! Elena Pourmal
! August 12, 1999
!
! HISTORY
! Explicit Fortran interfaces are added for
! called C functions (it is needed for Windows
! port). February 27, 2001
!
! dims parameter was added to make code portable;
! Aprile 4, 2001
!
! Changed buf intent to INOUT to be consistant
! with how the C functions handles it. The pg
! compiler will return 0 if a buf value is not set.
! February, 2008
!
! NOTES
! This function is overloaded to write INTEGER,
! REAL, REAL(KIND=C_DOUBLE) and CHARACTER buffers
! up to 7 dimensions.
!
! Fortran90 Interface:
!! SUBROUTINE H5Awrite_f(attr_id, memtype_id, buf, dims, hdferr)
!! INTEGER(HID_T) , INTENT(IN) :: attr_id
!! INTEGER(HID_T) , INTENT(IN) :: memtype_id
!! TYPE , INTENT(IN) :: buf
!! INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims
!! INTEGER , INTENT(OUT) :: hdferr
!*****
DO i = 1, num_rkinds
k = rkind(i)
WRITE(chr2,'(I2)') k
@ -317,7 +404,7 @@ PROGRAM test_kind
WRITE(11,'(A)') ' INTEGER(HID_T) , INTENT(IN) :: attr_id'
WRITE(11,'(A)') ' INTEGER(HID_T) , INTENT(IN) :: memtype_id'
WRITE(11,'(A)') ' INTEGER(HSIZE_T) , INTENT(IN), DIMENSION(*) :: dims'
WRITE(11,'(A)') ' INTEGER(KIND='//TRIM(ADJUSTL(chr2))//'),INTENT(IN)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
WRITE(11,'(A)') ' INTEGER(KIND='//TRIM(ADJUSTL(chr2))//'),INTENT(INOUT)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
WRITE(11,'(A)') ' INTEGER , INTENT(OUT) :: hdferr'
WRITE(11,'(A)') ' TYPE(C_PTR) :: f_ptr'
@ -326,18 +413,89 @@ PROGRAM test_kind
WRITE(11,'(A)') ' END SUBROUTINE h5awrite_ikind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
ENDDO
ENDDO
DO j = 2, 8
! DLL definitions for windows
WRITE(11,'(A)') '!DEC$if defined(BUILD_HDF5_DLL)'
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5awrite_ckind_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$endif'
! Subroutine API
WRITE(11,'(A)') ' SUBROUTINE h5awrite_ckind_rank'//chr_rank(j)//'(attr_id, memtype_id, buf, dims, hdferr)'
WRITE(11,'(A)') ' IMPLICIT NONE'
WRITE(11,'(A)') ' INTEGER(HID_T) , INTENT(IN) :: attr_id'
WRITE(11,'(A)') ' INTEGER(HID_T) , INTENT(IN) :: memtype_id'
WRITE(11,'(A)') ' INTEGER(HSIZE_T) , INTENT(IN), DIMENSION(*) :: dims'
WRITE(11,'(A)') ' CHARACTER(LEN=*) , INTENT(IN)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
WRITE(11,'(A)') ' INTEGER , INTENT(OUT) :: hdferr'
WRITE(11,'(A)') ' TYPE(C_PTR) :: f_ptr'
WRITE(11,'(A)') fchr_ptr_line(j)
WRITE(11,'(A)') ' hdferr = H5Awrite_f_c(attr_id, memtype_id, f_ptr)'
WRITE(11,'(A)') ' END SUBROUTINE h5awrite_ckind_rank'//chr_rank(j)
ENDDO
!
! H5Aread_f
!****s* H5A (F03)/H5Aread_f_F90
!
! NAME
! H5Aread_f_F90
!
! PURPOSE
! Reads an attribute.
!
! Inputs:
! attr_id - Attribute identifier
! memtype_id - Attribute datatype identifier (in memory)
! dims - Array to hold corresponding dimension sizes of data buffer buf;
! dim(k) has value of the k-th dimension of buffer buf;
! values are ignored if buf is a scalar
!
! Outputs:
! buf - Data buffer; may be a scalar or an array
! hdferr - Returns 0 if successful and -1 if fails
!
! AUTHOR
! Elena Pourmal
! August 12, 1999
!
! HISTORY
! Explicit Fortran interfaces are added for
! called C functions (it is needed for Windows
! port). February 27, 2001
!
! dims parameter was added to make code portable;
! Aprile 4, 2001
!
! Changed buf intent to INOUT to be consistant
! with how the C functions handles it. The pg
! compiler will return 0 if a buf value is not set.
! February, 2008
!
! NOTES
! This function is overloaded to write INTEGER,
! REAL, REAL(KIND=C_DOUBLE) and CHARACTER buffers
! up to 7 dimensions.
! Fortran90 Interface:
!! SUBROUTINE H5Aread_f(attr_id, memtype_id, buf, dims, hdferr)
!! INTEGER(HID_T) , INTENT(IN) :: attr_id
!! INTEGER(HID_T) , INTENT(IN) :: memtype_id
!! TYPE , INTENT(INOUT) :: buf
!! INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims
!! INTEGER , INTENT(OUT) :: hdferr
!*****
DO i = 1, num_rkinds
k = rkind(i)
WRITE(chr2,'(I2)') k
DO j = 1, 8
! DLL definitions for windows
WRITE(11,'(A)') '!DEC$if defined(BUILD_HDF5_DLL)'
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5aread_kind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5aread_rkind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$endif'
! Subroutine API
WRITE(11,'(A)') ' SUBROUTINE h5aread_kind_'//TRIM(ADJUSTL(chr2))&
WRITE(11,'(A)') ' SUBROUTINE h5aread_rkind_'//TRIM(ADJUSTL(chr2))&
&//'_rank'//chr_rank(j)//'(attr_id, memtype_id, buf, dims, hdferr)'
WRITE(11,'(A)') ' IMPLICIT NONE'
WRITE(11,'(A)') ' INTEGER(HID_T) , INTENT(IN) :: attr_id'
@ -349,25 +507,114 @@ PROGRAM test_kind
WRITE(11,'(A)') f_ptr_line(j)
WRITE(11,'(A)') ' hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)'
WRITE(11,'(A)') ' END SUBROUTINE h5aread_kind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
WRITE(11,'(A)') ' END SUBROUTINE h5aread_rkind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
ENDDO
ENDDO
DO i = 1, num_ikinds
k = ikind(i)
WRITE(chr2,'(I2)') k
DO j = 1, 8
! DLL definitions for windows
WRITE(11,'(A)') '!DEC$if defined(BUILD_HDF5_DLL)'
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5aread_ikind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$endif'
! Subroutine API
WRITE(11,'(A)') ' SUBROUTINE h5aread_ikind_'//TRIM(ADJUSTL(chr2))&
&//'_rank'//chr_rank(j)//'(attr_id, memtype_id, buf, dims, hdferr)'
WRITE(11,'(A)') ' IMPLICIT NONE'
WRITE(11,'(A)') ' INTEGER(HID_T) , INTENT(IN) :: attr_id'
WRITE(11,'(A)') ' INTEGER(HID_T) , INTENT(IN) :: memtype_id'
WRITE(11,'(A)') ' INTEGER(HSIZE_T) , INTENT(IN), DIMENSION(*) :: dims'
WRITE(11,'(A)') ' INTEGER(KIND='//TRIM(ADJUSTL(chr2))//'),INTENT(INOUT)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
WRITE(11,'(A)') ' INTEGER , INTENT(OUT) :: hdferr'
WRITE(11,'(A)') ' TYPE(C_PTR) :: f_ptr'
WRITE(11,'(A)') f_ptr_line(j)
WRITE(11,'(A)') ' hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)'
WRITE(11,'(A)') ' END SUBROUTINE h5aread_ikind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
ENDDO
ENDDO
DO j = 2, 8
! DLL definitions for windows
WRITE(11,'(A)') '!DEC$if defined(BUILD_HDF5_DLL)'
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5aread_ckind_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$endif'
! Subroutine API
WRITE(11,'(A)') ' SUBROUTINE h5aread_ckind_rank'//chr_rank(j)//'(attr_id, memtype_id, buf, dims, hdferr)'
WRITE(11,'(A)') ' IMPLICIT NONE'
WRITE(11,'(A)') ' INTEGER(HID_T) , INTENT(IN) :: attr_id'
WRITE(11,'(A)') ' INTEGER(HID_T) , INTENT(IN) :: memtype_id'
WRITE(11,'(A)') ' INTEGER(HSIZE_T) , INTENT(IN), DIMENSION(*) :: dims'
WRITE(11,'(A)') ' CHARACTER(LEN=*), INTENT(IN)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
WRITE(11,'(A)') ' INTEGER , INTENT(OUT) :: hdferr'
WRITE(11,'(A)') ' TYPE(C_PTR) :: f_ptr'
WRITE(11,'(A)') fchr_ptr_line(j)
WRITE(11,'(A)') ' hdferr = H5Aread_f_c(attr_id, memtype_id, f_ptr)'
WRITE(11,'(A)') ' END SUBROUTINE h5aread_ckind_rank'//chr_rank(j)
ENDDO
!**********************
! H5D APIs
!**********************
!
! h5dread_f
!
! NAME
! h5dread_f
!
! PURPOSE
! Reads raw data from the specified dataset into buf,
! converting from file datatype and dataspace to memory
! datatype and dataspace.
!
! Inputs:
! dset_id - dataset identifier
! mem_type_id - memory type identifier
! dims - 1-dim array of size 7; dims(k) has the size
! - of k-th dimension of the buf array
! Outputs:
! buf - buffer to read data in
! hdferr: - error code
! Success: 0
! Failure: -1
! Optional parameters:
! mem_space_id - memory dataspace identifier
! file_space_id - file dataspace identifier
! xfer_prp - trasfer 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). February 28, 2001
!
! dims parameter was added to make code portable;
! n parameter was replaced with dims parameter in
! the h5dwrite_reference_obj and h5dwrite_reference_dsetreg
! functions. April 2, 2001
!
! NOTES
! This function is overloaded to read INTEGER,
! REAL, DOUBLE PRECISION and CHARACTER buffers
! up to 7 dimensions, and one dimensional buffers
! of the TYPE(hobj_ref_t_f) and TYPE(hdset_reg_ref_t_f)
! types.
!
DO i = 1, num_rkinds
k = rkind(i)
WRITE(chr2,'(I2)') k
DO j = 1, 8
! DLL definitions for windows
WRITE(11,'(A)') '!DEC$if defined(BUILD_HDF5_DLL)'
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5dread_kind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5dread_rkind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$endif'
! Subroutine API
WRITE(11,'(A)') ' SUBROUTINE h5dread_kind_'//TRIM(ADJUSTL(chr2))&
WRITE(11,'(A)') ' SUBROUTINE h5dread_rkind_'//TRIM(ADJUSTL(chr2))&
&//'_rank'//chr_rank(j)//'(dset_id, mem_type_id, buf, dims, hdferr, &'
WRITE(11,'(A)') ' mem_space_id, file_space_id, xfer_prp)'
WRITE(11,'(A)') ' USE, INTRINSIC :: ISO_C_BINDING'
@ -393,12 +640,122 @@ PROGRAM test_kind
WRITE(11,'(A)') f_ptr_line(j)
WRITE(11,'(A)') ' hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, &'
WRITE(11,'(A)') ' file_space_id_default, xfer_prp_default, f_ptr)'
WRITE(11,'(A)') ' END SUBROUTINE h5dread_kind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
WRITE(11,'(A)') ' END SUBROUTINE h5dread_rkind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
ENDDO
ENDDO
DO i = 1, num_ikinds
k = ikind(i)
WRITE(chr2,'(I2)') k
DO j = 1, 8
! DLL definitions for windows
WRITE(11,'(A)') '!DEC$if defined(BUILD_HDF5_DLL)'
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5dread_ikind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$endif'
! Subroutine API
WRITE(11,'(A)') ' SUBROUTINE h5dread_ikind_'//TRIM(ADJUSTL(chr2))&
&//'_rank'//chr_rank(j)//'(dset_id, mem_type_id, buf, dims, hdferr, &'
WRITE(11,'(A)') ' mem_space_id, file_space_id, xfer_prp)'
WRITE(11,'(A)') ' USE, INTRINSIC :: ISO_C_BINDING'
WRITE(11,'(A)') ' IMPLICIT NONE'
WRITE(11,'(A)') ' INTEGER(HID_T), INTENT(IN) :: dset_id'
WRITE(11,'(A)') ' INTEGER(HID_T), INTENT(IN) :: mem_type_id'
WRITE(11,'(A)') ' INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims'
WRITE(11,'(A)') ' INTEGER(KIND='//TRIM(ADJUSTL(chr2))//'),INTENT(INOUT)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
WRITE(11,'(A)') ' INTEGER, INTENT(OUT) :: hdferr'
WRITE(11,'(A)') ' INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id'
WRITE(11,'(A)') ' INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id'
WRITE(11,'(A)') ' INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp'
WRITE(11,'(A)') ' INTEGER(HID_T) :: xfer_prp_default'
WRITE(11,'(A)') ' INTEGER(HID_T) :: mem_space_id_default'
WRITE(11,'(A)') ' INTEGER(HID_T) :: file_space_id_default'
WRITE(11,'(A)') ' TYPE(C_PTR) :: f_ptr'
WRITE(11,'(A)') ' xfer_prp_default = H5P_DEFAULT_F'
WRITE(11,'(A)') ' mem_space_id_default = H5S_ALL_F'
WRITE(11,'(A)') ' file_space_id_default = H5S_ALL_F'
WRITE(11,'(A)') ' IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp'
WRITE(11,'(A)') ' IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id'
WRITE(11,'(A)') ' IF(PRESENT(file_space_id)) file_space_id_default = file_space_id'
WRITE(11,'(A)') f_ptr_line(j)
WRITE(11,'(A)') ' hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, &'
WRITE(11,'(A)') ' file_space_id_default, xfer_prp_default, f_ptr)'
WRITE(11,'(A)') ' END SUBROUTINE h5dread_ikind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
ENDDO
ENDDO
DO j = 2, 8
! DLL definitions for windows
WRITE(11,'(A)') '!DEC$if defined(BUILD_HDF5_DLL)'
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5dread_ckind_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$endif'
! Subroutine API
WRITE(11,'(A)') ' SUBROUTINE h5dread_ckind_rank'//chr_rank(j)//'(dset_id, mem_type_id, buf, dims, hdferr, &'
WRITE(11,'(A)') ' mem_space_id, file_space_id, xfer_prp)'
WRITE(11,'(A)') ' USE, INTRINSIC :: ISO_C_BINDING'
WRITE(11,'(A)') ' IMPLICIT NONE'
WRITE(11,'(A)') ' INTEGER(HID_T), INTENT(IN) :: dset_id'
WRITE(11,'(A)') ' INTEGER(HID_T), INTENT(IN) :: mem_type_id'
WRITE(11,'(A)') ' INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims'
WRITE(11,'(A)') ' CHARACTER(LEN=*), INTENT(INOUT)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
WRITE(11,'(A)') ' INTEGER, INTENT(OUT) :: hdferr'
WRITE(11,'(A)') ' INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id'
WRITE(11,'(A)') ' INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id'
WRITE(11,'(A)') ' INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp'
WRITE(11,'(A)') ' INTEGER(HID_T) :: xfer_prp_default'
WRITE(11,'(A)') ' INTEGER(HID_T) :: mem_space_id_default'
WRITE(11,'(A)') ' INTEGER(HID_T) :: file_space_id_default'
WRITE(11,'(A)') ' TYPE(C_PTR) :: f_ptr'
WRITE(11,'(A)') ' xfer_prp_default = H5P_DEFAULT_F'
WRITE(11,'(A)') ' mem_space_id_default = H5S_ALL_F'
WRITE(11,'(A)') ' file_space_id_default = H5S_ALL_F'
WRITE(11,'(A)') ' IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp'
WRITE(11,'(A)') ' IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id'
WRITE(11,'(A)') ' IF(PRESENT(file_space_id)) file_space_id_default = file_space_id'
WRITE(11,'(A)') fchr_ptr_line(j)
WRITE(11,'(A)') ' hdferr = h5dread_f_c(dset_id, mem_type_id, mem_space_id_default, &'
WRITE(11,'(A)') ' file_space_id_default, xfer_prp_default, f_ptr)'
WRITE(11,'(A)') ' END SUBROUTINE h5dread_ckind_rank'//chr_rank(j)
ENDDO
!
! h5dwrite_f
!****s* H5D (F03)/h5dwrite_f_F03
!
! NAME
! h5dwrite_f_F03
!
! PURPOSE
! Writes raw data from a dataset into a buffer.
!
! Inputs:
! dset_id - Identifier of the dataset to write to.
! mem_type_id - Identifier of the memory datatype.
! buf - Buffer with data to be written to the file.
!
! Outputs:
! hdferr - Returns 0 if successful and -1 if fails
!
! Optional parameters:
! mem_space_id - Identifier of the memory dataspace.
! file_space_id - Identifier of the dataset's dataspace in the file.
! xfer_prp - Identifier of a transfer property list for this I/O operation.
!
! AUTHOR
! M. Scot Breitenfeld
! September 17, 2011
!
! Fortran2003 Interface:
!! SUBROUTINE h5dwrite_f(dset_id, mem_type_id, buf, hdferr, &
!! mem_space_id, file_space_id, xfer_prp)
!! INTEGER(HID_T), INTENT(IN) :: dset_id
!! INTEGER(HID_T), INTENT(IN) :: mem_type_id
!! TYPE(C_PTR) , INTENT(IN) :: buf
!! INTEGER , INTENT(OUT) :: hdferr
!! INTEGER(HID_T), INTENT(IN) , OPTIONAL :: mem_space_id
!! INTEGER(HID_T), INTENT(IN) , OPTIONAL :: file_space_id
!! INTEGER(HID_T), INTENT(IN) , OPTIONAL :: xfer_prp
!*****
DO i = 1, num_rkinds
k = rkind(i)
WRITE(chr2,'(I2)') k
@ -475,6 +832,39 @@ PROGRAM test_kind
WRITE(11,'(A)') ' file_space_id_default, xfer_prp_default, f_ptr)'
WRITE(11,'(A)') ' END SUBROUTINE h5dwrite_ikind_'//TRIM(ADJUSTL(chr2))//'_rank'//chr_rank(j)
ENDDO
ENDDO
DO j = 2, 8
! DLL definitions for windows
WRITE(11,'(A)') '!DEC$if defined(BUILD_HDF5_DLL)'
WRITE(11,'(A)') '!DEC$attributes dllexport :: h5dwrite_ckind_rank'//chr_rank(j)
WRITE(11,'(A)') '!DEC$endif'
! Subroutine API
WRITE(11,'(A)') ' SUBROUTINE h5dwrite_ckind_rank'//chr_rank(j)//'(dset_id, mem_type_id, buf, dims, hdferr, &'
WRITE(11,'(A)') ' mem_space_id, file_space_id, xfer_prp)'
WRITE(11,'(A)') ' USE, INTRINSIC :: ISO_C_BINDING'
WRITE(11,'(A)') ' IMPLICIT NONE'
WRITE(11,'(A)') ' INTEGER(HID_T), INTENT(IN) :: dset_id'
WRITE(11,'(A)') ' INTEGER(HID_T), INTENT(IN) :: mem_type_id'
WRITE(11,'(A)') ' INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims'
WRITE(11,'(A)') ' CHARACTER(LEN=*),INTENT(IN)'//TRIM(rank_dim_line(j))//', TARGET :: buf'
WRITE(11,'(A)') ' INTEGER, INTENT(OUT) :: hdferr'
WRITE(11,'(A)') ' INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id'
WRITE(11,'(A)') ' INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id'
WRITE(11,'(A)') ' INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp'
WRITE(11,'(A)') ' INTEGER(HID_T) :: xfer_prp_default'
WRITE(11,'(A)') ' INTEGER(HID_T) :: mem_space_id_default'
WRITE(11,'(A)') ' INTEGER(HID_T) :: file_space_id_default'
WRITE(11,'(A)') ' TYPE(C_PTR) :: f_ptr'
WRITE(11,'(A)') ' xfer_prp_default = H5P_DEFAULT_F'
WRITE(11,'(A)') ' mem_space_id_default = H5S_ALL_F'
WRITE(11,'(A)') ' file_space_id_default = H5S_ALL_F'
WRITE(11,'(A)') ' IF(PRESENT(xfer_prp)) xfer_prp_default = xfer_prp'
WRITE(11,'(A)') ' IF(PRESENT(mem_space_id)) mem_space_id_default = mem_space_id'
WRITE(11,'(A)') ' IF(PRESENT(file_space_id)) file_space_id_default = file_space_id'
WRITE(11,'(A)') fchr_ptr_line(j)
WRITE(11,'(A)') ' hdferr = h5dwrite_f_c(dset_id, mem_type_id, mem_space_id_default, &'
WRITE(11,'(A)') ' file_space_id_default, xfer_prp_default, f_ptr)'
WRITE(11,'(A)') ' END SUBROUTINE h5dwrite_ckind_rank'//chr_rank(j)
ENDDO
!**********************

View File

@ -10,29 +10,7 @@ H5LIB_mp_H5KIND_TO_TYPE
H5LIB_mp_H5OFFSETOF
; H5A
H5A_mp_H5AWRITE_CHAR_SCALAR
H5A_mp_H5AWRITE_CHAR_1
H5A_mp_H5AWRITE_CHAR_2
H5A_mp_H5AWRITE_CHAR_3
H5A_mp_H5AWRITE_CHAR_4
H5A_mp_H5AWRITE_CHAR_5
H5A_mp_H5AWRITE_CHAR_6
H5A_mp_H5AWRITE_CHAR_7
H5A_mp_H5AREAD_INTEGER_SCALAR
H5A_mp_H5AREAD_INTEGER_1
H5A_mp_H5AREAD_INTEGER_2
H5A_mp_H5AREAD_INTEGER_3
H5A_mp_H5AREAD_INTEGER_4
H5A_mp_H5AREAD_INTEGER_5
H5A_mp_H5AREAD_INTEGER_6
H5A_mp_H5AREAD_INTEGER_7
H5A_mp_H5AREAD_CHAR_SCALAR
H5A_mp_H5AREAD_CHAR_1
H5A_mp_H5AREAD_CHAR_2
H5A_mp_H5AREAD_CHAR_3
H5A_mp_H5AREAD_CHAR_4
H5A_mp_H5AREAD_CHAR_5
H5A_mp_H5AREAD_CHAR_6
H5A_mp_H5AREAD_CHAR_7
H5A_mp_H5ACREATE_F
H5A_mp_H5AOPEN_NAME_F
H5A_mp_H5AOPEN_IDX_F
@ -65,31 +43,9 @@ H5D_mp_H5DCLOSE_F
H5D_mp_H5DWRITE_REFERENCE_OBJ
H5D_mp_H5DWRITE_REFERENCE_DSETREG
H5D_mp_H5DWRITE_CHAR_SCALAR
H5D_mp_H5DWRITE_CHAR_1
H5D_mp_H5DWRITE_CHAR_2
H5D_mp_H5DWRITE_CHAR_3
H5D_mp_H5DWRITE_CHAR_4
H5D_mp_H5DWRITE_CHAR_5
H5D_mp_H5DWRITE_CHAR_6
H5D_mp_H5DWRITE_CHAR_7
H5D_mp_H5DREAD_REFERENCE_OBJ
H5D_mp_H5DREAD_REFERENCE_DSETREG
H5D_mp_H5DREAD_INTEGER_SCALAR
H5D_mp_H5DREAD_INTEGER_1
H5D_mp_H5DREAD_INTEGER_2
H5D_mp_H5DREAD_INTEGER_3
H5D_mp_H5DREAD_INTEGER_4
H5D_mp_H5DREAD_INTEGER_5
H5D_mp_H5DREAD_INTEGER_6
H5D_mp_H5DREAD_INTEGER_7
H5D_mp_H5DREAD_CHAR_SCALAR
H5D_mp_H5DREAD_CHAR_1
H5D_mp_H5DREAD_CHAR_2
H5D_mp_H5DREAD_CHAR_3
H5D_mp_H5DREAD_CHAR_4
H5D_mp_H5DREAD_CHAR_5
H5D_mp_H5DREAD_CHAR_6
H5D_mp_H5DREAD_CHAR_7
H5D_mp_H5DGET_SPACE_F
H5D_mp_H5DGET_TYPE_F
H5D_mp_H5DSET_EXTENT_F