[svn-r6494]

Purpose: Catching up with the C library

Description: Added the follwoing new fortran functions
             h5iget_name_f
             h5tis_variavle_str_f
             h5zunregister_f
             h5zfilter_avail_f
             h5pset_shuffle_f
             h5pset_fletcher32
             h5pset_edc_check_f
             h5pget_edc_check_f
             h5dfill_f

Solution:

Platforms tested: arabica(C and F90), burrwhite (pgcc and pgf90), modi4 (F90 and parallel)

Misc. update:
This commit is contained in:
Elena Pourmal 2003-03-19 11:13:35 -05:00
parent da4bf69db7
commit 65f5514a4f
18 changed files with 1252 additions and 58 deletions

View File

@ -1507,3 +1507,97 @@ DONE:
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5dfillc_c
* Purpose: Call h5fill_c to fill memory buffer with a fill value
* Inputs: fill_value - fill value
* fill_type_id - fill value datatype identifier
* space_id - memory space selection identifier
* buf - memory buffer to fill
* mem_type_id - memory buffer dtatype identifier
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, March 12, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5dfillc_c (_fcd fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, _fcd buf, hid_t_f *mem_type_id)
{
int ret_value = -1;
/*
* Call h5dfill_c function.
*/
ret_value = nh5dfill_c(_fcdtocp(fill_value), fill_type_id, space_id, _fcdtocp(buf), mem_type_id);
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5dfill_c
* Purpose: Call H5Dfill to fill memory buffer with a fill value
* Inputs: fill_value - fill value
* fill_type_id - fill value datatype identifier
* space_id - memory space selection identifier
* buf - memory buffer to fill
* mem_type_id - memory buffer dtatype identifier
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, March 12, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5dfill_c (void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id)
{
int ret_value = -1;
herr_t ret;
hid_t c_fill_type_id;
hid_t c_mem_type_id;
hid_t c_space_id;
c_fill_type_id = (hid_t)*fill_type_id;
c_mem_type_id = (hid_t)*mem_type_id;
c_space_id = (hid_t)*space_id;
/*
* Call H5Dfill function.
*/
ret = H5Dfill(fill_value, c_fill_type_id, buf, c_mem_type_id, c_space_id);
if (ret < 0) return ret_value;
ret_value = 0;
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5dget_space_status_c
* Purpose: Call H5Dget_space_status to request dataspace allocation status
* Inputs: dset_id - dataset identifier
* Outputs: flag - status flag
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, March 12, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag)
{
int ret_value = -1;
herr_t ret;
hid_t c_dset_id;
H5D_space_status_t c_flag;
c_dset_id = (hid_t)*dset_id;
/*
* Call H5Dget_space_status
*/
ret = H5Dget_space_status(c_dset_id, &c_flag);
if (ret < 0) return ret_value;
*flag = (int_f)c_flag;
ret_value = 0;
return ret_value;
}

View File

@ -200,6 +200,14 @@
MODULE PROCEDURE h5dread_vl_string
END INTERFACE
INTERFACE h5dfill_f
MODULE PROCEDURE h5dfill_integer
MODULE PROCEDURE h5dfill_real
MODULE PROCEDURE h5dfill_double
MODULE PROCEDURE h5dfill_char
END INTERFACE
CONTAINS
!----------------------------------------------------------------------
@ -9772,4 +9780,311 @@
buf, dims, str_len)
RETURN
END SUBROUTINE h5dread_vl_string
!----------------------------------------------------------------------
! Name: h5dfill_integer
!
! Purpose: Fills dataspace elements with a fill value in a memory buffer.
! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes
! of the fillvalues and buffers are supported. Buffer and fillvalue
! are assumed to have the same datatype.
! Only one-dimesional buffers are supported.
!
! Inputs:
! fill_value - fill value
! space_id - memory space selection identifier
! buf - data buffer iin memory ro apply selection to
! - of k-th dimension of the buf array
! Outputs:
! hdferr: - error code
! Success: 0
! Failure: -1
!
! Programmer: Elena Pourmal
! March 12, 2003
!
!----------------------------------------------------------------------
SUBROUTINE h5dfill_integer(fill_value, space_id, buf, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5dfill_integer
!DEC$endif
IMPLICIT NONE
INTEGER, INTENT(IN) :: fill_value ! Fill value
INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
INTEGER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
! INTEGER, EXTERNAL :: h5dfill_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5dfill_c(fill_value, fill_type_id, space_id, &
buf, mem_type_id)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5DFILL_C'::h5dfill_c
!DEC$ ENDIF
INTEGER, INTENT(IN) :: fill_value ! Fill value
INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
INTEGER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
END FUNCTION h5dfill_c
END INTERFACE
fill_type_id = H5T_NATIVE_INTEGER
mem_type_id = H5T_NATIVE_INTEGER
hdferr = h5dfill_c(fill_value, fill_type_id, space_id, &
buf, mem_type_id)
END SUBROUTINE h5dfill_integer
!----------------------------------------------------------------------
! Name: h5dfill_real
!
! Purpose: Fills dataspace elements with a fill value in a memory buffer.
! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes
! of the fillvalues and buffers are supported. Buffer and fillvalue
! are assumed to have the same datatype.
! Only one-dimesional buffers are supported.
!
! Inputs:
! fill_value - fill value
! space_id - memory space selection identifier
! buf - data buffer iin memory ro apply selection to
! - of k-th dimension of the buf array
! Outputs:
! hdferr: - error code
! Success: 0
! Failure: -1
!
! Programmer: Elena Pourmal
! March 12, 2003
!
!----------------------------------------------------------------------
SUBROUTINE h5dfill_real(fill_valuer, space_id, buf, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5dfill_real
!DEC$endif
IMPLICIT NONE
REAL, INTENT(IN) :: fill_valuer ! Fill value
INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
REAL, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
! INTEGER, EXTERNAL :: h5dfill_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5dfill_c(fill_valuer, fill_type_id, space_id, &
buf, mem_type_id)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5DFILL_C'::h5dfill_c
!DEC$ ENDIF
REAL, INTENT(IN) :: fill_valuer ! Fill value
INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
REAL, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
END FUNCTION h5dfill_c
END INTERFACE
fill_type_id = H5T_NATIVE_REAL
mem_type_id = H5T_NATIVE_REAL
hdferr = h5dfill_c(fill_valuer, fill_type_id, space_id, &
buf, mem_type_id)
END SUBROUTINE h5dfill_real
!----------------------------------------------------------------------
! Name: h5dfill_double
!
! Purpose: Fills dataspace elements with a fill value in a memory buffer.
! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes
! of the fillvalues and buffers are supported. Buffer and fillvalue
! are assumed to have the same datatype.
! Only one-dimesional buffers are supported.
!
! Inputs:
! fill_value - fill value
! space_id - memory space selection identifier
! buf - data buffer iin memory ro apply selection to
! - of k-th dimension of the buf array
! Outputs:
! hdferr: - error code
! Success: 0
! Failure: -1
!
! Programmer: Elena Pourmal
! March 12, 2003
!
!----------------------------------------------------------------------
SUBROUTINE h5dfill_double(fill_value, space_id, buf, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5dfill_double
!DEC$endif
IMPLICIT NONE
DOUBLE PRECISION, INTENT(IN) :: fill_value ! Fill value
INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
! INTEGER, EXTERNAL :: h5dfill_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5dfill_c(fill_value, fill_type_id, space_id, &
buf, mem_type_id)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5DFILL_C'::h5dfill_c
!DEC$ ENDIF
DOUBLE PRECISION, INTENT(IN) :: fill_value ! Fill value
INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
DOUBLE PRECISION, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
END FUNCTION h5dfill_c
END INTERFACE
fill_type_id = H5T_NATIVE_DOUBLE
mem_type_id = H5T_NATIVE_DOUBLE
hdferr = h5dfill_c(fill_value, fill_type_id, space_id, &
buf, mem_type_id)
END SUBROUTINE h5dfill_double
!----------------------------------------------------------------------
! Name: h5dfill_char
!
! Purpose: Fills dataspace elements with a fill value in a memory buffer.
! Only INTEGER, CHARACTER, REAL and DOUBLE PRECISION datatypes
! of the fillvalues and buffers are supported. Buffer and fillvalue
! are assumed to have the same datatype.
! Only one-dimesional buffers are supported.
!
! Inputs:
! fill_value - fill value
! space_id - memory space selection identifier
! buf - data buffer iin memory ro apply selection to
! - of k-th dimension of the buf array
! Outputs:
! hdferr: - error code
! Success: 0
! Failure: -1
!
! Programmer: Elena Pourmal
! March 12, 2003
!
!----------------------------------------------------------------------
SUBROUTINE h5dfill_char(fill_value, space_id, buf, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5dfill_integer
!DEC$endif
IMPLICIT NONE
CHARACTER, INTENT(IN) :: fill_value ! Fill value
INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
CHARACTER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
! INTEGER, EXTERNAL :: h5dfillc_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5dfillc_c(fill_value, fill_type_id, space_id, &
buf, mem_type_id)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5DFILLC_C'::h5dfillc_c
!DEC$ ENDIF
CHARACTER, INTENT(IN) :: fill_value ! Fill value
INTEGER(HID_T) :: fill_type_id ! Fill value datatype identifier
INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
CHARACTER, INTENT(IN), DIMENSION(*) :: buf ! Memory buffer to fill in
INTEGER(HID_T) :: mem_type_id ! Buffer dadtype identifier
END FUNCTION h5dfillc_c
END INTERFACE
fill_type_id = H5T_NATIVE_CHARACTER
mem_type_id = H5T_NATIVE_CHARACTER
hdferr = h5dfillc_c(fill_value, fill_type_id, space_id, &
buf, mem_type_id)
END SUBROUTINE h5dfill_char
!----------------------------------------------------------------------
! Name: h5dget_space_status_f
!
! Purpose: Returns the status of data space allocation.
!
! Inputs:
! dset_id - dataset identifier
! Outputs:
! flag - status; may have one of the following values:
! H5D_SPACE_STS_ERROR_F
! H5D_SPACE_STS_NOT_ALLOCATED_F
! H5D_SPACE_STS_PART_ALLOCATED_F
! H5D_SPACE_STS_ALLOCATED_F
! hdferr: - error code
! Success: 0
! Failure: -1
!
! Programmer: Elena Pourmal
! March 12, 2003
!
!----------------------------------------------------------------------
SUBROUTINE h5dget_space_status_f(dset_id, flag, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5dget_space_status_f
!DEC$endif
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataspace identifier
INTEGER, INTENT(IN) :: flag ! Memory buffer to fill in
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5dget_space_status_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5dget_space_status_c(dset_id, flag)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5DGET_SPACE_STATUS_C'::h5dget_space_status_c
!DEC$ ENDIF
INTEGER(HID_T) :: dset_id
INTEGER :: flag
END FUNCTION h5dget_space_status_c
END INTERFACE
hdferr = h5dget_space_status_c(dset_id, flag)
END SUBROUTINE h5dget_space_status_f
END MODULE H5D

View File

@ -27,3 +27,48 @@ nh5iget_type_c (hid_t_f *obj_id, int_f *type)
ret_value = 0;
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5iget_name_c
* Purpose: Call H5Iget_name to get object's name
* Inputs: obj_id - object identifier
* buf_size - size of the buffer
* Outputs: buf - buffer to hold the name
* Returns: length of the name on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, March 12, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5iget_name_c(hid_t_f *obj_id, _fcd buf, size_t_f *buf_size, size_t_f *name_size)
{
int ret_value = -1;
hid_t c_obj_id;
ssize_t c_size;
size_t c_buf_size;
char *c_buf =NULL;
/*
* Allocate buffer to hold name of an attribute
*/
c_buf_size = (size_t)*buf_size;
c_buf = (char *)HDmalloc((int)c_buf_size +1);
if (c_buf == NULL) return ret_value;
/*
* Call H5IAget_name function
*/
c_obj_id = (hid_t)*obj_id;
c_size = H5Iget_name(c_obj_id, c_buf, c_buf_size);
if (c_size < 0) goto DONE;
/*
* Convert C name to FORTRAN and place it in the given buffer
*/
HD5packFstring(c_buf, _fcdtocp(buf), (int)c_buf_size);
*name_size = (size_t_f)c_size;
ret_value = 0;
DONE:
HDfree(c_buf);
return ret_value;
}

View File

@ -72,6 +72,65 @@
END INTERFACE
hdferr = h5iget_type_c(obj_id, type)
END SUBROUTINE h5iget_type_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
! Optional parameters:
! NONE
!
! Programmer: Elena Pourmal
! March 12, 2003
!
! Modifications:
!
!----------------------------------------------------------------------
SUBROUTINE h5iget_name_f(obj_id, buf, buf_size, name_size, hdferr)
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5iget_name_f
!DEC$endif
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
! INTEGER, EXTERNAL :: h5iget_name_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5iget_name_c(obj_id, buf, buf_size, name_size)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5IGET_NAME_C'::h5iget_name_c
!DEC$ ENDIF
!DEC$ATTRIBUTES reference :: buf
INTEGER(HID_T), INTENT(IN) :: obj_id
CHARACTER(LEN=*), 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
END MODULE H5I

View File

@ -2807,3 +2807,102 @@ DONE:
if(c_name != NULL) HDfree(c_name);
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5pset_shuffle_c
* Purpose: Call H5Pset_shuffle
* Inputs: prp_id - property list identifier
* type_size - size of the datatype in bytes
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, March 12, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5pset_shuffle_c ( hid_t_f *prp_id , int_f *type_size)
{
int ret_value = 0;
hid_t c_prp_id;
int c_type_size;
herr_t status;
c_prp_id = (hid_t)*prp_id;
c_type_size = (int)*type_size ;
status = H5Pset_shuffle(c_prp_id, c_type_size);
if ( status < 0 ) ret_value = -1;
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5pset_fletcher32_c
* Purpose: Call H5Pset_fletcher32 to enable EDC
* Inputs: prp_id - dataset creation property list identifier
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Thursday, March 13, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5pset_fletcher32_c ( hid_t_f *prp_id )
{
int ret_value = 0;
hid_t c_prp_id;
herr_t status;
c_prp_id = (hid_t)*prp_id;
status = H5Pset_fletcher32(c_prp_id);
if ( status < 0 ) ret_value = -1;
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5pset_edc_check_c
* Purpose: Call H5Pset_edc_check to enable EDC
* Inputs: prp_id - dataset transfer property list identifier
* flag - EDC flag
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Thursday, March 13, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5pset_edc_check_c ( hid_t_f *prp_id, int_f *flag )
{
int ret_value = 0;
hid_t c_prp_id;
H5Z_EDC_t c_flag;
herr_t status;
c_prp_id = (hid_t)*prp_id;
c_flag = (H5Z_EDC_t)*flag;
status = H5Pset_edc_check(c_prp_id, c_flag);
if ( status < 0 ) ret_value = -1;
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5pget_edc_check_c
* Purpose: Call H5Pget_edc_check to query EDC
* Inputs: prp_id - dataset transfer property list identifier
* Outouts: flag - EDC flag
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Thursday, March 13, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5pget_edc_check_c ( hid_t_f *prp_id, int_f *flag )
{
int ret_value = 0;
hid_t c_prp_id;
H5Z_EDC_t c_flag;
herr_t status;
c_prp_id = (hid_t)*prp_id;
c_flag = H5Pget_edc_check(c_prp_id);
if ( status < 0 ) ret_value = -1;
*flag = (int_f)c_flag;
return ret_value;
}

View File

@ -2552,11 +2552,9 @@
! NONE
!
! Programmer: Elena Pourmal
! August 12, 1999
! February, 2003
!
! Modifications: Explicit Fortran interfaces were added for
! called C functions (it is needed for Windows
! port). March 14, 2001
! Modifications:
!
! Comment:
!----------------------------------------------------------------------
@ -5680,4 +5678,219 @@
hdferr = h5pinsertc_c(plist, name , name_len, size, value, value_len)
END SUBROUTINE h5pinsert_char
!----------------------------------------------------------------------
! Name: h5pset_shuffle_f
!
! Purpose: Sets shuffling filter
!
! Inputs:
! prp_id - dataset creation property list identifier
! type_size - size of the datatype
! Outputs:
! hdferr: - error code
! Success: 0
! Failure: -1
! Optional parameters:
! NONE
!
! Programmer: Elena Pourmal
! March 12, 2003
!
! Modifications:
!
! Comment:
!----------------------------------------------------------------------
SUBROUTINE h5pset_shuffle_f(prp_id, type_size, hdferr)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5pset_shuffle_f
!DEC$endif
!
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
INTEGER, INTENT(IN) :: type_size ! iSize in bytes of the datatype
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5pset_shuffle_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5pset_shuffle_c(prp_id, type_size)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5PSET_SHUFFLE_C'::h5pset_shuffle_c
!DEC$ ENDIF
INTEGER(HID_T), INTENT(IN) :: prp_id
INTEGER, INTENT(IN) :: type_size
END FUNCTION h5pset_shuffle_c
END INTERFACE
hdferr = h5pset_shuffle_c(prp_id, type_size)
END SUBROUTINE h5pset_shuffle_f
!----------------------------------------------------------------------
! Name: h5pset_edc_check_f
!
! Purpose: Enables/disables error detecting
!
! Inputs:
! prp_id - dataset creation property list identifier
! flag - EDC flag; possible values:
! H5Z_DISABLE_EDC_F
! H5Z_ENABLE_EDC_F
! Outputs:
! hdferr: - error code
! Success: 0
! Failure: -1
! Optional parameters:
! NONE
!
! Programmer: Elena Pourmal
! March 13, 2003
!
! Modifications:
!
! Comment:
!----------------------------------------------------------------------
SUBROUTINE h5pset_edc_check_f(prp_id, flag, hdferr)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5pset_edc_check_f
!DEC$endif
!
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
INTEGER, INTENT(IN) :: flag ! Checksum filter flag
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5pset_edc_check_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5pset_edc_check_c(prp_id, flag)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5PSET_EDC_CHECK_C'::h5pset_edc_check_c
!DEC$ ENDIF
INTEGER(HID_T), INTENT(IN) :: prp_id
INTEGER, INTENT(IN) :: flag
END FUNCTION h5pset_edc_check_c
END INTERFACE
hdferr = h5pset_edc_check_c(prp_id, flag)
END SUBROUTINE h5pset_edc_check_f
!----------------------------------------------------------------------
! Name: h5pget_edc_check_f
!
! Purpose: Queries error detecting
!
! Inputs:
! prp_id - dataset creation property list identifier
! Outputs:
! hdferr: - error code
! Success: 0
! Failure: -1
! Optional parameters:
! NONE
!
! Programmer: Elena Pourmal
! March 13, 2003
!
! Modifications:
!
! Comment:
!----------------------------------------------------------------------
SUBROUTINE h5pget_edc_check_f(prp_id, flag, hdferr)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5pget_edc_check_f
!DEC$endif
!
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset transfer property list identifier
INTEGER, INTENT(OUT) :: flag ! Checksum filter flag
! May have one of the following values:
! H5Z_ERROR_EDC_F
! H5Z_DISABLE_EDC_F
! H5Z_ENABLE_EDC_F
! H5Z_NO_EDC_F
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5pget_edc_check_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5pget_edc_check_c(prp_id, flag)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5PGET_EDC_CHECK_C'::h5pget_edc_check_c
!DEC$ ENDIF
INTEGER(HID_T), INTENT(IN) :: prp_id
INTEGER, INTENT(OUT) :: flag
END FUNCTION h5pget_edc_check_c
END INTERFACE
hdferr = h5pget_edc_check_c(prp_id, flag)
END SUBROUTINE h5pget_edc_check_f
!----------------------------------------------------------------------
! Name: h5pset_fletcher32_f
!
! Purpose: Sets Fletcher32 checksum of EDC for a dataset creation
! property list.
!
! Inputs:
! prp_id - dataset creation property list identifier
! Outputs:
! hdferr: - error code
! Success: 0
! Failure: -1
! Optional parameters:
! NONE
!
! Programmer: Elena Pourmal
! March 13, 2003
!
! Modifications:
!
! Comment:
!----------------------------------------------------------------------
SUBROUTINE h5pset_fletcher32_f(prp_id, hdferr)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5pset_fletcher32_f
!DEC$endif
!
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5pset_fletcher32_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5pset_fletcher32_c(prp_id)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5PSET_FLETCHER32_C'::h5pset_fletcher32_c
!DEC$ ENDIF
INTEGER(HID_T), INTENT(IN) :: prp_id
END FUNCTION h5pset_fletcher32_c
END INTERFACE
hdferr = h5pset_fletcher32_c(prp_id)
END SUBROUTINE h5pset_fletcher32_f
END MODULE H5P

View File

@ -1596,3 +1596,29 @@ nh5tvlen_create_c(hid_t_f* type_id, hid_t_f *vltype_id)
ret_value = 0;
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5tis_variable_str_c
* Purpose: Call H5Tis_variable_str to detrmine if the datatype
* is a variable string.
* Inputs: type_id - identifier of the dataspace
* Outputs: flag - 0 if not VL str, 1 if is not
* and negative on failure.
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, March 12 , 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag )
{
int ret_value = 0;
hid_t c_type_id;
htri_t status;
c_type_id = (hid_t)*type_id;
status = H5Tis_variable_str(c_type_id);
*flag = (int_f)status;
if ( status < 0 ) ret_value = -1;
return ret_value;
}

View File

@ -3104,4 +3104,65 @@
hdferr = h5tvlen_create_c(type_id, vltype_id)
END SUBROUTINE h5tvlen_create_f
!----------------------------------------------------------------------
! Name: h5tis_variable_str_f
!
! Purpose: Determines whether a dattype is a variable string.
!
! Inputs:
! type_id - - datartpe identifier
! Outputs:
! status - flag to indicate if datatype
! is a variable string
! hdferr: - error code
! Success: 0
! Failure: -1
! Optional parameters:
! NONE
!
! Programmer: Elena Pourmal
! March 12, 2003
!
! Modifications:
!
! Comment:
!----------------------------------------------------------------------
SUBROUTINE h5tis_variable_str_f(type_id, status, hdferr)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5tis_variable_str_f
!DEC$endif
!
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
LOGICAL, INTENT(OUT) :: status ! Flag, idicates if datatype
! is a variable string or not ( TRUE or
! FALSE)
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: flag ! "TRUE/FALSE/ERROR from C"
! INTEGER, EXTERNAL :: h5tis_variable_str_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5tis_variable_str_c(type_id, flag)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5TIS_VARIABLE_STR_C'::h5tis_variable_str_c
!DEC$ ENDIF
INTEGER(HID_T), INTENT(IN) :: type_id
INTEGER :: flag
END FUNCTION h5tis_variable_str_c
END INTERFACE
hdferr = h5tis_variable_str_c(type_id, flag)
status = .TRUE.
if (flag .EQ. 0) status = .FALSE.
END SUBROUTINE h5tis_variable_str_f
!----------------------------------------------------------------------
END MODULE H5T

53
fortran/src/H5Zf.c Normal file
View File

@ -0,0 +1,53 @@
#include "H5f90.h"
/*----------------------------------------------------------------------------
* Name: h5zunregister_c
* Purpose: Call H5Zunregister to unregister filter
* Inputs: filter identifier
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, March 12, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5zunregister_c (int_f *filter)
{
int ret_value = -1;
herr_t status;
H5Z_filter_t c_filter;
/*
* Call H5Zunregister function.
*/
c_filter = (H5Z_filter_t)*filter;
printf(" filter # %d \n", (int)c_filter);
status = H5Zunregister(c_filter);
printf("From C zunregister %d \n", status);
if (status < 0) return ret_value;
ret_value = 0;
return ret_value;
}
/*----------------------------------------------------------------------------
* Name: h5zfiletr_avail_c
* Purpose: Call H5Zfilter_avail to find if filter is available
* Inputs: filter - filter identifier
* Outputs: flag - status flag
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Wednesday, March 12, 2003
* Modifications:
*---------------------------------------------------------------------------*/
int_f
nh5zfilter_avail_c ( int_f *filter , int_f *flag )
{
int ret_value = 0;
H5Z_filter_t c_filter;
htri_t status;
c_filter = (H5Z_filter_t)*filter;
status = H5Zfilter_avail(c_filter);
*flag = (int_f)status;
if ( status < 0 ) ret_value = -1;
return ret_value;
}

124
fortran/src/H5Zff.f90 Normal file
View File

@ -0,0 +1,124 @@
!
! This file contains FORTRAN90 interfaces for H5I functions
!
MODULE H5Z
USE H5GLOBAL
CONTAINS
!----------------------------------------------------------------------
! Name: h5zunregister_f
!
! Purpose: Unregisters specified filetr
!
! Inputs: filter - filter; may have one of the following values:
! H5Z_FILTER_DEFLATE_F
! H5Z_FILTER_SHUFFLE_F
! H5Z_FILTER_FLETCHER32_F
! Outputs:
! hdferr: - error code
! Success: 0
! Failure: -1
! Optional parameters:
! NONE
!
! Programmer: Elena Pourmal
! March 12, 2003
!
! Modifications:
!
! Comment:
!----------------------------------------------------------------------
SUBROUTINE h5zunregister_f(filter, hdferr)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5zunregister_f
!DEC$endif
!
IMPLICIT NONE
INTEGER, INTENT(IN) :: filter
INTEGER, INTENT(OUT) :: hdferr ! Error code
! INTEGER, EXTERNAL :: h5zunregister_c
! Interface is needed for MS FORTRAN
!
INTERFACE
INTEGER FUNCTION h5zunregister_c (filter)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5ZUNREGISTER_C':: h5zunregister_c
!DEC$ ENDIF
INTEGER, INTENT(IN) :: filter
END FUNCTION h5zunregister_c
END INTERFACE
hdferr = h5zunregister_c (filter)
END SUBROUTINE h5zunregister_f
!----------------------------------------------------------------------
! Name: h5zfilter_avail_f
!
! Purpose: Queries if filter is available
!
! Inputs:
! filter - filter
! Outputs:
! status - status; .TRUE. if filter is available,
! .FALSE. otherwise
! hdferr: - error code
! Success: 0
! Failure: -1
! Optional parameters:
! NONE
!
! Programmer: Elena Pourmal
! March 12, 2003
!
! Modifications:
!
!----------------------------------------------------------------------
SUBROUTINE h5zfilter_avail_f(filter, status, hdferr)
!
!This definition is needed for Windows DLLs
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$attributes dllexport :: h5zfilter_avail_f
!DEC$endif
!
IMPLICIT NONE
INTEGER, INTENT(IN) :: filter ! Filter; may be one of the following:
! H5Z_FILTER_DEFLATE_F
! H5Z_FILTER_SHUFFLE_F
! H5Z_FILTER_FLETCHER32_F
LOGICAL, INTENT(OUT) :: status ! Flag, idicates if filter
! is availble not ( TRUE or
! FALSE)
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: flag ! "TRUE/FALSE/ERROR from C"
! INTEGER, EXTERNAL :: h5zfilter_avail_c
! MS FORTRAN needs explicit interface for C functions called here.
!
INTERFACE
INTEGER FUNCTION h5zfilter_avail_c(filter, flag)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5ZFILTER_AVAIL_C'::h5zfilter_avail_c
!DEC$ ENDIF
INTEGER, INTENT(IN) :: filter
INTEGER :: flag
END FUNCTION h5zfilter_avail_c
END INTERFACE
hdferr = h5zfilter_avail_c(filter, flag)
status = .TRUE.
if (flag .EQ. 0) status = .FALSE.
END SUBROUTINE h5zfilter_avail_f
END MODULE H5Z

View File

@ -156,17 +156,18 @@ nh5close_types_c( hid_t_f * types, int_f *lentypes,
* h5r_flags - H5R interface flags
* h5s_flags - H5S interface flags
* h5t_flags - H5T interface flags
* h5z_flags - H5Z interface flags
* Outputs: None
* Returns: 0 on success, -1 on failure
* Programmer: Elena Pourmal
* Tuesday, August 3, 1999
* Modifications:
* Modifications: Added Z flags. EIP, March 12, 2003
*---------------------------------------------------------------------------*/
int_f
nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
int_f *h5fd_flags, int_f *h5g_flags, int_f *h5i_flags,
int_f *h5p_flags, int_f *h5r_flags, int_f *h5s_flags,
int_f *h5t_flags)
int_f *h5t_flags, int_f *h5z_flags)
{
int ret_value = -1;
/*
@ -354,6 +355,20 @@ nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
h5t_flags[27] = H5T_STR_ERROR;
h5t_flags[28] = H5T_VLEN;
h5t_flags[29] = H5T_ARRAY;
/*
* H5Z flags
*/
h5z_flags[0] = H5Z_FILTER_ERROR;
h5z_flags[1] = H5Z_FILTER_NONE;
h5z_flags[2] = H5Z_FILTER_DEFLATE;
h5z_flags[3] = H5Z_FILTER_SHUFFLE;
h5z_flags[4] = H5Z_FILTER_FLETCHER32;
h5z_flags[5] = H5Z_ERROR_EDC;
h5z_flags[6] = H5Z_DISABLE_EDC;
h5z_flags[7] = H5Z_ENABLE_EDC;
h5z_flags[8] = H5Z_NO_EDC;
ret_value = 0;
return ret_value;

View File

@ -70,7 +70,8 @@
i_H5P_flags, &
i_H5R_flags, &
i_H5S_flags, &
i_H5T_flags )
i_H5T_flags, &
i_H5Z_flags )
USE H5GLOBAL
INTEGER i_H5F_flags(H5F_FLAGS_LEN)
INTEGER i_H5G_flags(H5G_FLAGS_LEN)
@ -82,6 +83,7 @@
INTEGER i_H5R_flags(H5R_FLAGS_LEN)
INTEGER i_H5S_flags(H5S_FLAGS_LEN)
INTEGER i_H5T_flags(H5T_FLAGS_LEN)
INTEGER i_H5Z_flags(H5Z_FLAGS_LEN)
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!MS$ATTRIBUTES C,reference,alias:'_H5INIT_FLAGS_C'::h5init_flags_c
@ -99,7 +101,8 @@
H5P_flags, &
H5R_flags, &
H5S_flags, &
H5T_flags )
H5T_flags, &
H5Z_flags )
error = error_0 + error_1 + error_2
END SUBROUTINE h5open_f

View File

@ -3,6 +3,15 @@
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define if support for deflate filter is enabled */
#undef HAVE_FILTER_DEFLATE
/* Define if support for Fletcher32 checksum is enabled */
#undef HAVE_FILTER_FLETCHER32
/* Define if support for shuffle filter is enabled */
#undef HAVE_FILTER_SHUFFLE
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

View File

@ -534,5 +534,35 @@
EQUIVALENCE(H5T_flags(29), H5T_VLEN_F)
EQUIVALENCE(H5T_flags(30), H5T_ARRAY_F)
!
! H5Z flags declaration
!
INTEGER, PARAMETER :: H5Z_FLAGS_LEN = 9
INTEGER H5Z_flags(H5Z_FLAGS_LEN)
!DEC$if defined(BUILD_HDF5_DLL)
!DEC$ ATTRIBUTES DLLEXPORT :: /H5Z_FLAGS/
!DEC$endif
COMMON /H5Z_FLAGS/ H5Z_flags
INTEGER :: H5Z_FILTER_ERROR_F
INTEGER :: H5Z_FILTER_NONE_F
INTEGER :: H5Z_FILTER_DEFLATE_F
INTEGER :: H5Z_FILTER_SHUFFLE_F
INTEGER :: H5Z_FILTER_FLETCHER32_F
INTEGER :: H5Z_ERROR_EDC_F
INTEGER :: H5Z_DISABLE_EDC_F
INTEGER :: H5Z_ENABLE_EDC_F
INTEGER :: H5Z_NO_EDC_F
EQUIVALENCE(H5Z_flags(1), H5Z_FILTER_ERROR_F)
EQUIVALENCE(H5Z_flags(2), H5Z_FILTER_NONE_F)
EQUIVALENCE(H5Z_flags(3), H5Z_FILTER_DEFLATE_F)
EQUIVALENCE(H5Z_flags(4), H5Z_FILTER_SHUFFLE_F)
EQUIVALENCE(H5Z_flags(5), H5Z_FILTER_FLETCHER32_F)
EQUIVALENCE(H5Z_flags(6), H5Z_ERROR_EDC_F)
EQUIVALENCE(H5Z_flags(7), H5Z_DISABLE_EDC_F)
EQUIVALENCE(H5Z_flags(8), H5Z_ENABLE_EDC_F)
EQUIVALENCE(H5Z_flags(9), H5Z_NO_EDC_F)
END MODULE H5GLOBAL

View File

@ -196,53 +196,59 @@ H5_DLL int_f nh5sselect_elements_c ( hid_t_f *space_id , int_f *op, size_t_f *ne
#ifndef H5Df90_FNAMES
# define H5Df90_FNAMES
#ifdef DF_CAPFNAMES
# define nh5dcreate_c FNAME(H5DCREATE_C)
# define nh5dclose_c FNAME(H5DCLOSE_C)
# define nh5dopen_c FNAME(H5DOPEN_C)
# define nh5dwrite_c FNAME(H5DWRITE_C)
# define nh5dwrite_ref_obj_c FNAME(H5DWRITE_REF_OBJ_C)
# define nh5dwrite_ref_reg_c FNAME(H5DWRITE_REF_REG_C)
# define nh5dwritec_c FNAME(H5DWRITEC_C)
# define nh5dread_c FNAME(H5DREAD_C)
# define nh5dread_ref_reg_c FNAME(H5DREAD_REF_REG_C)
# define nh5dread_ref_obj_c FNAME(H5DREAD_REF_OBJ_C)
# define nh5dreadc_c FNAME(H5DREADC_C)
# define nh5dget_space_c FNAME(H5DGET_SPACE_C)
# define nh5dget_type_c FNAME(H5DGET_TYPE_C)
# define nh5dget_create_plist_c FNAME(H5DGET_CREATE_PLIST_C)
# define nh5dextend_c FNAME(H5DEXTEND_C)
# define nh5dget_storage_size_c FNAME(H5DGET_STORAGE_SIZE_C)
# define nh5dvlen_get_max_len_c FNAME(H5DVLEN_GET_MAX_LEN_C)
# define nh5dwrite_vl_integer_c FNAME(H5DWRITE_VL_INTEGER_C)
# define nh5dread_vl_integer_c FNAME(H5DREAD_VL_INTEGER_C)
# define nh5dwrite_vl_real_c FNAME(H5DWRITE_VL_REAL_C)
# define nh5dread_vl_real_c FNAME(H5DREAD_VL_REAL_C)
# define nh5dwrite_vl_string_c FNAME(H5DWRITE_VL_STRING_C)
# define nh5dread_vl_string_c FNAME(H5DREAD_VL_STRING_C)
# define nh5dcreate_c FNAME(H5DCREATE_C)
# define nh5dclose_c FNAME(H5DCLOSE_C)
# define nh5dopen_c FNAME(H5DOPEN_C)
# define nh5dwrite_c FNAME(H5DWRITE_C)
# define nh5dwrite_ref_obj_c FNAME(H5DWRITE_REF_OBJ_C)
# define nh5dwrite_ref_reg_c FNAME(H5DWRITE_REF_REG_C)
# define nh5dwritec_c FNAME(H5DWRITEC_C)
# define nh5dread_c FNAME(H5DREAD_C)
# define nh5dread_ref_reg_c FNAME(H5DREAD_REF_REG_C)
# define nh5dread_ref_obj_c FNAME(H5DREAD_REF_OBJ_C)
# define nh5dreadc_c FNAME(H5DREADC_C)
# define nh5dget_space_c FNAME(H5DGET_SPACE_C)
# define nh5dget_type_c FNAME(H5DGET_TYPE_C)
# define nh5dget_create_plist_c FNAME(H5DGET_CREATE_PLIST_C)
# define nh5dextend_c FNAME(H5DEXTEND_C)
# define nh5dget_storage_size_c FNAME(H5DGET_STORAGE_SIZE_C)
# define nh5dvlen_get_max_len_c FNAME(H5DVLEN_GET_MAX_LEN_C)
# define nh5dwrite_vl_integer_c FNAME(H5DWRITE_VL_INTEGER_C)
# define nh5dread_vl_integer_c FNAME(H5DREAD_VL_INTEGER_C)
# define nh5dwrite_vl_real_c FNAME(H5DWRITE_VL_REAL_C)
# define nh5dread_vl_real_c FNAME(H5DREAD_VL_REAL_C)
# define nh5dwrite_vl_string_c FNAME(H5DWRITE_VL_STRING_C)
# define nh5dread_vl_string_c FNAME(H5DREAD_VL_STRING_C)
# define nh5dfillc_c FNAME(H5DFILLC_C)
# define nh5dfill_c FNAME(H5DFILL_C)
# define nh5dget_space_status_c FNAME(H5DGET_SPACE_STATUS_C)
#else /* !DF_CAPFNAMES */
# define nh5dcreate_c FNAME(h5dcreate_c)
# define nh5dclose_c FNAME(h5dclose_c)
# define nh5dopen_c FNAME(h5dopen_c)
# define nh5dwrite_c FNAME(h5dwrite_c)
# define nh5dwritec_c FNAME(h5dwritec_c)
# define nh5dwrite_ref_obj_c FNAME(h5dwrite_ref_obj_c)
# define nh5dwrite_ref_reg_c FNAME(h5dwrite_ref_reg_c)
# define nh5dread_c FNAME(h5dread_c)
# define nh5dread_ref_reg_c FNAME(h5dread_ref_reg_c)
# define nh5dread_ref_obj_c FNAME(h5dread_ref_obj_c)
# define nh5dreadc_c FNAME(h5dreadc_c)
# define nh5dget_space_c FNAME(h5dget_space_c)
# define nh5dget_type_c FNAME(h5dget_type_c)
# define nh5dget_create_plist_c FNAME(h5dget_create_plist_c)
# define nh5dextend_c FNAME(h5dextend_c)
# define nh5dget_storage_size_c FNAME(h5dget_storage_size_c)
# define nh5dvlen_get_max_len_c FNAME(h5dvlen_get_max_len_c)
# define nh5dwrite_vl_integer_c FNAME(h5dwrite_vl_integer_c)
# define nh5dcreate_c FNAME(h5dcreate_c)
# define nh5dclose_c FNAME(h5dclose_c)
# define nh5dopen_c FNAME(h5dopen_c)
# define nh5dwrite_c FNAME(h5dwrite_c)
# define nh5dwritec_c FNAME(h5dwritec_c)
# define nh5dwrite_ref_obj_c FNAME(h5dwrite_ref_obj_c)
# define nh5dwrite_ref_reg_c FNAME(h5dwrite_ref_reg_c)
# define nh5dread_c FNAME(h5dread_c)
# define nh5dread_ref_reg_c FNAME(h5dread_ref_reg_c)
# define nh5dread_ref_obj_c FNAME(h5dread_ref_obj_c)
# define nh5dreadc_c FNAME(h5dreadc_c)
# define nh5dget_space_c FNAME(h5dget_space_c)
# define nh5dget_type_c FNAME(h5dget_type_c)
# define nh5dget_create_plist_c FNAME(h5dget_create_plist_c)
# define nh5dextend_c FNAME(h5dextend_c)
# define nh5dget_storage_size_c FNAME(h5dget_storage_size_c)
# define nh5dvlen_get_max_len_c FNAME(h5dvlen_get_max_len_c)
# define nh5dwrite_vl_integer_c FNAME(h5dwrite_vl_integer_c)
# define nh5dread_vl_integer_c FNAME(h5dread_vl_integer_c)
# define nh5dwrite_vl_real_c FNAME(h5dwrite_vl_real_c)
# define nh5dread_vl_real_c FNAME(h5dread_vl_real_c)
# define nh5dwrite_vl_real_c FNAME(h5dwrite_vl_real_c)
# define nh5dread_vl_real_c FNAME(h5dread_vl_real_c)
# define nh5dwrite_vl_string_c FNAME(h5dwrite_vl_string_c)
# define nh5dread_vl_string_c FNAME(h5dread_vl_string_c)
# define nh5dread_vl_string_c FNAME(h5dread_vl_string_c)
# define nh5dfillc_c FNAME(h5dfillc_c)
# define nh5dfill_c FNAME(h5dfill_c)
# define nh5dget_space_status_c FNAME(h5dget_space_status_c)
#endif /* DF_CAPFNAMES */
#endif
@ -307,6 +313,11 @@ H5_DLL int_f nh5dextend_c ( hid_t_f *dset_id , hsize_t_f *dims);
H5_DLL int_f nh5dvlen_get_max_len_c(hid_t_f *dataset_id, hid_t_f *type_id, hid_t_f *space_id, size_t_f *len);
H5_DLL int_f nh5dget_storage_size_c(hid_t_f *dataset_id, hsize_t_f *size);
H5_DLL int_f nh5dfillc_c(_fcd fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, _fcd buf, hid_t_f *mem_type_id);
H5_DLL int_f nh5dfill_c(void * fill_value, hid_t_f *fill_type_id, hid_t_f *space_id, void * buf, hid_t_f *mem_type_id);
H5_DLL int_f nh5dget_space_status_c ( hid_t_f *dset_id, int_f *flag);
/*
* Functions from H5Gf.c
*/
@ -507,6 +518,7 @@ H5_DLL int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf);
# define nh5tget_array_dims_c FNAME(H5TGET_ARRAY_DIMS_C)
# define nh5tget_super_c FNAME(H5TGET_SUPER_C)
# define nh5tvlen_create_c FNAME(H5TVLEN_CREATE_C)
# define nh5tis_variable_str_c FNAME(H5TIS_VARIABLE_STR_C)
#else
# define nh5topen_c FNAME(h5topen_c)
@ -563,6 +575,7 @@ H5_DLL int_f nh5aget_name_c(hid_t_f *attr_id, size_t_f *size, _fcd buf);
# define nh5tget_array_dims_c FNAME(h5tget_array_dims_c)
# define nh5tget_super_c FNAME(h5tget_super_c)
# define nh5tvlen_create_c FNAME(h5tvlen_create_c)
# define nh5tis_variable_str_c FNAME(h5tis_variable_str_c)
#endif
#endif
@ -648,7 +661,7 @@ H5_DLL int_f
nh5tget_super_c ( hid_t_f *type_id , hid_t_f *base_type_id);
H5_DLL int_f
nh5tvlen_create_c ( hid_t_f *type_id , hid_t_f *vltype_id);
H5_DLL int_f nh5tis_variable_str_c ( hid_t_f *type_id , int_f *flag );
/*
* Functions from H5Pf.c
@ -750,6 +763,10 @@ nh5tvlen_create_c ( hid_t_f *type_id , hid_t_f *vltype_id);
# define nh5punregister_c FNAME(H5PUNREGISTER_C)
# define nh5pclose_class_c FNAME(H5PCLOSE_CLASS_C)
# define nh5pget_class_name_c FNAME(H5PGET_CLASS_NAME_C)
# define nh5pset_shuffle_c FNAME(H5PSET_SHUFFLE_C)
# define nh5pset_fletcher32_c FNAME(H5PSET_FLETCHER32_C)
# define nh5pset_edc_check_c FNAME(H5PSET_EDC_CHECK_C)
# define nh5pget_edc_check_c FNAME(H5PGET_EDC_CHECK_C)
#else
# define nh5pcreate_c FNAME(h5pcreate_c)
@ -845,6 +862,10 @@ nh5tvlen_create_c ( hid_t_f *type_id , hid_t_f *vltype_id);
# define nh5punregister_c FNAME(h5punregister_c)
# define nh5pclose_class_c FNAME(h5pclose_class_c)
# define nh5pget_class_name_c FNAME(h5pget_class_name_c)
# define nh5pset_shuffle_c FNAME(h5pset_shuffle_c)
# define nh5pset_fletcher32_c FNAME(h5pset_fletcher32_c)
# define nh5pset_edc_check_c FNAME(h5pset_edc_check_c)
# define nh5pget_edc_check_c FNAME(h5pget_edc_check_c)
#endif
@ -1025,7 +1046,10 @@ H5_DLL int_f nh5premove_c(hid_t_f *plid, _fcd name, int_f *name_len);
H5_DLL int_f nh5punregister_c(hid_t_f *class, _fcd name, int_f *name_len);
H5_DLL int_f nh5pclose_class_c(hid_t_f * class);
H5_DLL int_f nh5pget_class_name_c(hid_t_f *prp_id, _fcd name, int_f *name_len);
H5_DLL int_f nh5pset_shuffle_c ( hid_t_f *prp_id , int_f *type_size);
H5_DLL int_f nh5pset_fletcher32_c ( hid_t_f *prp_id );
H5_DLL int_f nh5pset_edc_check_c ( hid_t_f *prp_id, int_f *flag );
H5_DLL int_f nh5pget_edc_check_c ( hid_t_f *prp_id, int_f *flag );
/*
* Functions frome H5Rf.c
@ -1075,12 +1099,15 @@ nh5rget_object_type_obj_c (hid_t_f *dset_id, int_f *ref, int_f *obj_type);
# define H5If90_FNAMES
#ifdef DF_CAPFNAMES
# define nh5iget_type_c FNAME(H5IGET_TYPE_C)
# define nh5iget_name_c FNAME(H5IGET_NAME_C)
#else
# define nh5iget_type_c FNAME(h5iget_type_c)
# define nh5iget_name_c FNAME(h5iget_name_c)
#endif
#endif
H5_DLL int_f nh5iget_type_c(hid_t_f *obj_id, int_f *type);
H5_DLL int_f nh5iget_name_c(hid_t_f *obj_id, _fcd buf, size_t_f *buf_size, size_t_f *name_size);
#ifndef H5Ef90_FNAMES
@ -1144,7 +1171,7 @@ H5_DLL int_f nh5close_types_c(hid_t_f *types, int_f *lentypes, hid_t_f * floatin
H5_DLL int_f nh5init_flags_c( int_f *h5d_flags, int_f *h5e_flags, int_f *h5f_flags,
int_f *h5fd_flags, int_f *h5g_flags, int_f *h5i_flags,
int_f *h5p_flags, int_f *h5r_flags, int_f *h5s_flags,
int_f *h5t_flags);
int_f *h5t_flags, int_f *h5z_flags);
H5_DLL int_f nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum);
H5_DLL int_f nh5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum);
@ -1153,4 +1180,22 @@ H5_DLL int_f nh5garbage_collect_c(void);
H5_DLL int_f nh5dont_atexit_c(void);
/*
* Functions from H5Zf.c
*/
#ifndef H5Zf90_FNAMES
# define H5Zf90_FNAMES
#ifdef DF_CAPFNAMES
# define nh5zunregister_c FNAME(H5ZUNREGISTER_C)
# define nh5zfilter_avail_c FNAME(H5ZFILTER_AVAIL_C)
#else
# define nh5zunregister_c FNAME(h5zunregister_c)
# define nh5zfilter_avail_c FNAME(h5zfilter_avail_c)
#endif
#endif
H5_DLL int_f nh5zunregister_c (int_f *filter);
H5_DLL int_f nh5zfilter_avail_c ( int_f *filter , int_f *flag );
#endif /* _H5f90proto_H */

View File

@ -11,5 +11,6 @@
USE H5T
USE H5P
USE H5R
USE H5Z
USE H5LIB
END MODULE HDF5

View File

@ -12,5 +12,6 @@
USE H5P
USE H5FDMPIO
USE H5R
USE H5Z
USE H5LIB
END MODULE HDF5

View File

@ -31,12 +31,12 @@ FPAR_MOD=${ADD_PARALLEL_FILES:yes=HDF5mpio.f90}
CPARALLEL=${ADD_PARALLEL_FILES:yes=H5FDmpiof.c}
CLIB_SRC=H5f90kit.c H5_f.c H5Git.c H5Rf.c H5Ff.c H5Sf.c H5Df.c H5Gf.c \
H5Af.c H5Tf.c H5Pf.c H5If.c H5Ef.c ${CPARALLEL:no=}
H5Af.c H5Tf.c H5Pf.c H5If.c H5Ef.c H5Zf.c ${CPARALLEL:no=}
FPARALLEL=${ADD_PARALLEL_FILES:yes=H5FDmpioff.f90}
FLIB_SRC=H5fortran_types.f90 H5fortran_flags.f90 H5f90global.f90 H5_ff.f90 \
H5Rff.f90 H5Fff.f90 H5Sff.f90 H5Dff.f90 H5Gff.f90 H5Aff.f90 H5Tff.f90 \
H5Pff.f90 H5Iff.f90 H5Eff.f90 ${FPARALLEL:no=} ${FPAR_MOD:no=HDF5.f90}
H5Pff.f90 H5Iff.f90 H5Eff.f90 H5Zff.f90 ${FPARALLEL:no=} ${FPAR_MOD:no=HDF5.f90}
LIB_SRC=$(CLIB_SRC) $(FLIB_SRC)
LIB_OBJ=$(CLIB_SRC:.c=.lo) $(FLIB_SRC:.f90=.lo)
@ -58,6 +58,7 @@ H5Pff.lo: $(srcdir)/H5Pff.f90 H5f90global.lo
H5Rff.lo: $(srcdir)/H5Rff.f90 H5f90global.lo
H5Sff.lo: $(srcdir)/H5Sff.f90 H5f90global.lo
H5Tff.lo: $(srcdir)/H5Tff.f90 H5f90global.lo
H5Zff.lo: $(srcdir)/H5Zff.f90 H5f90global.lo
H5_ff.lo: $(srcdir)/H5_ff.f90 H5f90global.lo
HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo \
H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo \
@ -65,7 +66,7 @@ HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5Aff.lo \
H5FDmpioff.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo
HDF5mpio.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo H5Aff.lo \
H5Dff.lo H5Eff.lo H5Fff.lo H5Gff.lo H5Iff.lo \
H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5FDmpioff.lo
H5Pff.lo H5Rff.lo H5Sff.lo H5Tff.lo H5Zff.lo H5FDmpioff.lo
ARFLAGS=rc