mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-21 01:04:10 +08:00
[svn-r26214] Fix for HDFFV-8908:
h5tenum_insert_f does not work with default 8 byte integers (xlf compiler)
This commit is contained in:
parent
41aeac4504
commit
27a385d557
@ -2421,3 +2421,46 @@ h5tconvert_c(hid_t_f *src_id, hid_t_f *dst_id, size_t_f *nelmts, void *buf, void
|
||||
return ret_value;
|
||||
}
|
||||
|
||||
/****if* H5Tf/h5tenum_insert_ptr_c
|
||||
* NAME
|
||||
* /h5tenum_insert_ptr_c
|
||||
* PURPOSE
|
||||
* Calls H5Tenum_insert
|
||||
* INPUTS
|
||||
* type_id - Datatype identifier for the enumeration datatype.
|
||||
* name - Datatype identifier.
|
||||
* value - Pointer to the value of the new member.
|
||||
*
|
||||
* OUTPUTS
|
||||
*
|
||||
* RETURNS
|
||||
* 0 on success, -1 on failure
|
||||
* AUTHOR
|
||||
* M. Scot Breitenfeld
|
||||
* 2/6/2015
|
||||
*
|
||||
* SOURCE
|
||||
*/
|
||||
int_f
|
||||
h5tenum_insert_ptr_c(hid_t_f *type_id, _fcd name, int_f* namelen, void *value)
|
||||
/******/
|
||||
{
|
||||
int ret_value = -1;
|
||||
hid_t status;
|
||||
char *c_name;
|
||||
size_t c_namelen;
|
||||
|
||||
/*
|
||||
* Convert FORTRAN name to C name
|
||||
*/
|
||||
c_namelen = *namelen;
|
||||
c_name = (char *)HD5f2cstring(name, c_namelen);
|
||||
if (c_name == NULL) return ret_value;
|
||||
|
||||
status = H5Tenum_insert( (hid_t)*type_id, c_name, value);
|
||||
if ( status < 0 ) return ret_value;
|
||||
ret_value = 0;
|
||||
return ret_value;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2335,57 +2335,6 @@ CONTAINS
|
||||
|
||||
hdferr = h5tenum_create_c(parent_id, new_type_id)
|
||||
END SUBROUTINE h5tenum_create_f
|
||||
|
||||
!
|
||||
!****s* H5T/h5tenaum_insert_f
|
||||
!
|
||||
! NAME
|
||||
! h5tenaum_insert_f
|
||||
!
|
||||
! PURPOSE
|
||||
! Inserts a new enumeration datatype member.
|
||||
!
|
||||
! INPUTS
|
||||
! type_id - datatype identifier
|
||||
! OUTPUTS
|
||||
! hdferr - Returns 0 if successful and -1 if fails
|
||||
!
|
||||
! AUTHOR
|
||||
! Elena Pourmal
|
||||
! August 12, 1999
|
||||
!
|
||||
! HISTORY
|
||||
! Explicit Fortran interfaces were added for
|
||||
! called C functions (it is needed for Windows
|
||||
! port). March 7, 2001
|
||||
! SOURCE
|
||||
SUBROUTINE h5tenum_insert_f(type_id, name, value, hdferr)
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !Name of the new member
|
||||
INTEGER, INTENT(IN) :: value !value of the new member
|
||||
INTEGER, INTENT(OUT) :: hdferr ! Error code
|
||||
!*****
|
||||
INTEGER :: namelen
|
||||
|
||||
INTERFACE
|
||||
INTEGER FUNCTION h5tenum_insert_c(type_id, name, namelen, value)
|
||||
USE H5GLOBAL
|
||||
!DEC$IF DEFINED(HDF5F90_WINDOWS)
|
||||
!DEC$ATTRIBUTES C,reference,decorate,alias:'H5TENUM_INSERT_C'::h5tenum_insert_c
|
||||
!DEC$ENDIF
|
||||
!DEC$ATTRIBUTES reference :: name
|
||||
INTEGER(HID_T), INTENT(IN) :: type_id
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name
|
||||
INTEGER, INTENT(IN) :: value
|
||||
INTEGER :: namelen
|
||||
END FUNCTION h5tenum_insert_c
|
||||
END INTERFACE
|
||||
|
||||
namelen = LEN(name)
|
||||
hdferr = h5tenum_insert_c(type_id, name, namelen, value)
|
||||
END SUBROUTINE h5tenum_insert_f
|
||||
|
||||
!
|
||||
!****s* H5T/h5tenum_nameof_f
|
||||
!
|
||||
|
@ -47,6 +47,11 @@ MODULE H5T_PROVISIONAL
|
||||
|
||||
!*****
|
||||
|
||||
INTERFACE h5tenum_insert_f
|
||||
MODULE PROCEDURE h5tenum_insert_f03
|
||||
MODULE PROCEDURE h5tenum_insert_f90
|
||||
END INTERFACE
|
||||
|
||||
CONTAINS
|
||||
|
||||
!****s* H5T (F03)/H5Tconvert_f_F03
|
||||
@ -93,6 +98,7 @@ CONTAINS
|
||||
BIND(C, NAME='h5tconvert_c')
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_ptr
|
||||
USE H5GLOBAL
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T) , INTENT(IN) :: src_id
|
||||
INTEGER(HID_T) , INTENT(IN) :: dst_id
|
||||
INTEGER(SIZE_T), INTENT(IN) :: nelmts
|
||||
@ -111,6 +117,107 @@ CONTAINS
|
||||
hdferr = H5Tconvert_c(src_id, dst_id, nelmts, buf, background_default, plist_id_default)
|
||||
|
||||
END SUBROUTINE h5tconvert_f
|
||||
!
|
||||
!****s* (F03) H5T/h5tenaum_insert_f03
|
||||
!
|
||||
! NAME
|
||||
! h5tenum_insert_f
|
||||
!
|
||||
! PURPOSE
|
||||
! Inserts a new enumeration datatype member.
|
||||
!
|
||||
! INPUTS
|
||||
! type_id - Datatype identifier for the enumeration datatype.
|
||||
! name - Datatype identifier.
|
||||
! value - Value of the new member.
|
||||
! OUTPUTS
|
||||
! hdferr - Returns 0 if successful and -1 if fails
|
||||
!
|
||||
! AUTHOR
|
||||
! Elena Pourmal
|
||||
! August 12, 1999
|
||||
!
|
||||
! HISTORY
|
||||
! Explicit Fortran interfaces were added for
|
||||
! called C functions (it is needed for Windows
|
||||
! port). March 7, 2001
|
||||
! SOURCE
|
||||
SUBROUTINE h5tenum_insert_f90(type_id, name, value, hdferr)
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name !Name of the new member
|
||||
INTEGER, INTENT(IN) :: value !value of the new member
|
||||
INTEGER, INTENT(OUT) :: hdferr ! Error code
|
||||
!*****
|
||||
INTEGER :: namelen
|
||||
INTERFACE
|
||||
INTEGER FUNCTION h5tenum_insert_c(type_id, name, namelen, value)
|
||||
USE H5GLOBAL
|
||||
!DEC$IF DEFINED(HDF5F90_WINDOWS)
|
||||
!DEC$ATTRIBUTES C,reference,decorate,alias:'H5TENUM_INSERT_C'::h5tenum_insert_c
|
||||
!DEC$ENDIF
|
||||
!DEC$ATTRIBUTES reference :: name
|
||||
INTEGER(HID_T), INTENT(IN) :: type_id
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name
|
||||
INTEGER, INTENT(IN) :: value
|
||||
INTEGER :: namelen
|
||||
END FUNCTION h5tenum_insert_c
|
||||
END INTERFACE
|
||||
|
||||
namelen = LEN(name)
|
||||
hdferr = h5tenum_insert_c(type_id, name, namelen, value)
|
||||
END SUBROUTINE h5tenum_insert_f90
|
||||
|
||||
!
|
||||
!****s* (F03) H5T/h5tenaum_insert_f03
|
||||
!
|
||||
! NAME
|
||||
! h5tenum_insert_f
|
||||
!
|
||||
! PURPOSE
|
||||
! Inserts a new enumeration datatype member.
|
||||
!
|
||||
! INPUTS
|
||||
! type_id - Datatype identifier for the enumeration datatype.
|
||||
! name - Datatype identifier.
|
||||
! value - Pointer to the value of the new member.
|
||||
! OUTPUTS
|
||||
! hdferr - Returns 0 if successful and -1 if fails
|
||||
!
|
||||
! AUTHOR
|
||||
! M. Scot Breitenfeld
|
||||
! February 6, 2015
|
||||
!
|
||||
! HISTORY
|
||||
! F2003 implementation of function
|
||||
! SOURCE
|
||||
SUBROUTINE h5tenum_insert_f03(type_id, name, value, hdferr)
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_ptr, c_char
|
||||
USE H5GLOBAL
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T) , INTENT(IN) :: type_id
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name
|
||||
TYPE(C_PTR) , INTENT(IN) :: value
|
||||
INTEGER, INTENT(OUT) :: hdferr
|
||||
!*****
|
||||
INTEGER :: namelen
|
||||
|
||||
INTERFACE
|
||||
INTEGER FUNCTION h5tenum_insert_ptr_c(type_id, name, namelen, value) &
|
||||
BIND(C, NAME='h5tenum_insert_ptr_c')
|
||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_ptr, c_char
|
||||
USE H5GLOBAL
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T) , INTENT(IN) :: type_id
|
||||
CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: name
|
||||
INTEGER :: namelen
|
||||
TYPE(C_PTR), VALUE :: value
|
||||
END FUNCTION h5tenum_insert_ptr_c
|
||||
END INTERFACE
|
||||
|
||||
namelen = LEN(name)
|
||||
hdferr = h5tenum_insert_ptr_c(type_id, name, namelen, value)
|
||||
END SUBROUTINE h5tenum_insert_f03
|
||||
|
||||
END MODULE H5T_PROVISIONAL
|
||||
|
||||
|
@ -36,4 +36,60 @@
|
||||
|
||||
MODULE H5T_PROVISIONAL
|
||||
|
||||
USE H5GLOBAL
|
||||
|
||||
CONTAINS
|
||||
|
||||
!
|
||||
!****s* H5T/h5tenum_insert_f
|
||||
!
|
||||
! NAME
|
||||
! h5tenaum_insert_f
|
||||
!
|
||||
! PURPOSE
|
||||
! Inserts a new enumeration datatype member.
|
||||
!
|
||||
! INPUTS
|
||||
! type_id - Datatype identifier for the enumeration datatype.
|
||||
! name - Datatype identifier.
|
||||
! value - Value of the new member.
|
||||
! OUTPUTS
|
||||
! hdferr - Returns 0 if successful and -1 if fails
|
||||
!
|
||||
! AUTHOR
|
||||
! Elena Pourmal
|
||||
! August 12, 1999
|
||||
!
|
||||
! HISTORY
|
||||
! Explicit Fortran interfaces were added for
|
||||
! called C functions (it is needed for Windows
|
||||
! port). March 7, 2001
|
||||
! SOURCE
|
||||
SUBROUTINE h5tenum_insert_f(type_id, name, value, hdferr)
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T), INTENT(IN) :: type_id
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name
|
||||
INTEGER, INTENT(IN) :: value
|
||||
INTEGER, INTENT(OUT) :: hdferr
|
||||
!*****
|
||||
INTEGER :: namelen
|
||||
|
||||
INTERFACE
|
||||
INTEGER FUNCTION h5tenum_insert_c(type_id, name, namelen, value)
|
||||
USE H5GLOBAL
|
||||
!DEC$IF DEFINED(HDF5F90_WINDOWS)
|
||||
!DEC$ATTRIBUTES C,reference,decorate,alias:'H5TENUM_INSERT_C'::h5tenum_insert_c
|
||||
!DEC$ENDIF
|
||||
!DEC$ATTRIBUTES reference :: name
|
||||
INTEGER(HID_T), INTENT(IN) :: type_id
|
||||
CHARACTER(LEN=*), INTENT(IN) :: name
|
||||
INTEGER, INTENT(IN) :: value
|
||||
INTEGER :: namelen
|
||||
END FUNCTION h5tenum_insert_c
|
||||
END INTERFACE
|
||||
|
||||
namelen = LEN(name)
|
||||
hdferr = h5tenum_insert_c(type_id, name, namelen, value)
|
||||
END SUBROUTINE h5tenum_insert_f
|
||||
|
||||
END MODULE H5T_PROVISIONAL
|
||||
|
@ -772,6 +772,7 @@ H5_FCDLL int_f nh5tinsert_array_c(hid_t_f * parent_id, _fcd name, int_f* namelen
|
||||
H5_FCDLL int_f nh5tinsert_array_c2(hid_t_f * parent_id, _fcd name, int_f* namelen, size_t_f* offset, int_f* ndims, size_t_f* dims, hid_t_f* member_id);
|
||||
H5_FCDLL int_f nh5tenum_create_c ( hid_t_f *parent_id , hid_t_f *new_type_id);
|
||||
H5_FCDLL int_f nh5tenum_insert_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value);
|
||||
H5_FCDLL int_f h5tenum_insert_ptr_c(hid_t_f *type_id, _fcd name, int_f* namelen, void *value);
|
||||
H5_FCDLL int_f nh5tenum_nameof_c(hid_t_f *type_id, int_f* value, _fcd name, size_t_f* namelen);
|
||||
H5_FCDLL int_f nh5tenum_valueof_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value);
|
||||
H5_FCDLL int_f nh5tget_member_value_c(hid_t_f *type_id, int_f* member_no, int_f* value);
|
||||
|
@ -560,6 +560,8 @@ H5T_mp_H5TGET_CREATE_PLIST_F
|
||||
H5T_mp_H5TCOMPILER_CONV_F
|
||||
H5T_mp_H5TGET_NATIVE_TYPE_F
|
||||
@H5_NOF03EXP@H5T_PROVISIONAL_mp_H5TCONVERT_F
|
||||
@H5_NOF03EXP@H5T_PROVISIONAL_mp_H5TENUM_INSERT_F90
|
||||
@H5_NOF03EXP@H5T_PROVISIONAL_mp_H5TENUM_INSERT_F03
|
||||
; H5Z
|
||||
H5Z_mp_H5ZUNREGISTER_F
|
||||
H5Z_mp_H5ZFILTER_AVAIL_F
|
||||
|
@ -1419,7 +1419,7 @@ SUBROUTINE t_enum(total_error)
|
||||
! Insert enumerated value for memtype.
|
||||
!
|
||||
val(1) = i
|
||||
CALL H5Tenum_insert_f(memtype, TRIM(names(i+1)), val(1), error)
|
||||
CALL H5Tenum_insert_f(memtype, TRIM(names(i+1)), C_LOC(val(1)), error)
|
||||
CALL check("H5Tenum_insert_f", error, total_error)
|
||||
!
|
||||
! Insert enumerated value for filetype. We must first convert
|
||||
|
Loading…
Reference in New Issue
Block a user