[svn-r26241] Fixed issue with default 8 byte integers using xlf compilers.

This commit is contained in:
Scot Breitenfeld 2015-02-19 11:17:16 -05:00
parent fc082e60f3
commit 3eeed2f1d5
4 changed files with 31 additions and 26 deletions

View File

@ -1738,21 +1738,23 @@ nh5tenum_create_c ( hid_t_f *parent_id , hid_t_f *new_type_id)
/****if* H5Tf/h5tenum_insert_c
* NAME
* h5tenum_insert_c
* h5tenum_insert_c
* PURPOSE
* Call H5Tenum_insert to insert a new enumeration datatype member.
* Call H5Tenum_insert to insert a new enumeration datatype member.
* INPUTS
* type_id - identifier of the datatype
* name - Name of the new member
* namelen - length of the name
* value - value of the new member
* type_id - identifier of the datatype
* name - Name of the new member
* namelen - length of the name
* value - value of the new member
* RETURNS
* 0 on success, -1 on failure
* 0 on success, -1 on failure
* AUTHOR
* XIANGYANG SU
* Thursday, February 3, 2000
* Thursday, February 3, 2000
* HISTORY
*
* 'value' is no longer cast into an int. If the user passes in an 8 byte integer then
* it should not be cast to an int (which might be 4 bytes). Instead the value
* is written as the size of an int_f.
* SOURCE
*/
@ -1761,19 +1763,18 @@ nh5tenum_insert_c(hid_t_f *type_id, _fcd name, int_f* namelen, int_f* value)
/******/
{
int ret_value = -1;
hid_t c_type_id;
char* c_name;
size_t c_namelen;
int_f c_value;
herr_t error;
int_f c_value;
c_namelen = *namelen;
c_name = (char *)HD5f2cstring(name, c_namelen);
if (c_name == NULL) return ret_value;
c_type_id = (hid_t)*type_id;
c_value = (int)*value;
error = H5Tenum_insert(c_type_id, c_name, &c_value);
c_value = *value;
error = H5Tenum_insert((hid_t)*type_id, c_name, &c_value);
HDfree(c_name);
if(error < 0) return ret_value;
@ -2437,7 +2438,7 @@ h5tconvert_c(hid_t_f *src_id, hid_t_f *dst_id, size_t_f *nelmts, void *buf, void
* 0 on success, -1 on failure
* AUTHOR
* M. Scot Breitenfeld
* 2/6/2015
* February 6, 2015
*
* SOURCE
*/

View File

@ -118,7 +118,7 @@ CONTAINS
END SUBROUTINE h5tconvert_f
!
!****s* (F03) H5T/h5tenaum_insert_f03
!****s* (F03) H5T/h5tenum_insert_f90
!
! NAME
! h5tenum_insert_f
@ -146,7 +146,7 @@ CONTAINS
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(IN) :: value ! value of the new member
INTEGER, INTENT(OUT) :: hdferr ! Error code
!*****
INTEGER :: namelen
@ -169,7 +169,7 @@ CONTAINS
END SUBROUTINE h5tenum_insert_f90
!
!****s* (F03) H5T/h5tenaum_insert_f03
!****s* (F03) H5T/h5tenum_insert_f03
!
! NAME
! h5tenum_insert_f

View File

@ -44,7 +44,7 @@ CONTAINS
!****s* H5T/h5tenum_insert_f
!
! NAME
! h5tenaum_insert_f
! h5tenum_insert_f
!
! PURPOSE
! Inserts a new enumeration datatype member.

View File

@ -1428,7 +1428,11 @@ SUBROUTINE t_enum(total_error)
f_ptr = C_LOC(val(1))
CALL H5Tconvert_f(M_BASET, F_BASET, INT(1,SIZE_T), f_ptr, error)
CALL check("H5Tconvert_f",error, total_error)
CALL H5Tenum_insert_f(filetype, TRIM(names(i+1)), val(1), error)
IF(i.GE.1)THEN ! test both F90 and F03 APIs
CALL H5Tenum_insert_f(filetype, TRIM(names(i+1)), f_ptr, error)
ELSE
CALL H5Tenum_insert_f(filetype, TRIM(names(i+1)), val(1), error)
ENDIF
CALL check("H5Tenum_insert_f",error, total_error)
ENDDO
!
@ -3134,7 +3138,7 @@ SUBROUTINE t_enum_conv(total_error)
ENUMERATOR :: E1_RED, E1_GREEN, E1_BLUE, E1_WHITE, E1_BLACK
END ENUM
INTEGER :: val
INTEGER(KIND(E1_RED)), TARGET :: val
! Enumerated data array
! Some values are out of range for testing. The library should accept them
@ -3185,19 +3189,19 @@ SUBROUTINE t_enum_conv(total_error)
! Initialize enum data.
!
val = E1_RED
CALL H5Tenum_insert_f(dtype, "RED", val, error)
CALL H5Tenum_insert_f(dtype, "RED", C_LOC(val), error)
CALL check("h5tenum_insert_f",error, total_error)
val = E1_GREEN
CALL H5Tenum_insert_f(dtype, "GREEN", val, error)
CALL H5Tenum_insert_f(dtype, "GREEN", C_LOC(val), error)
CALL check("h5tenum_insert_f",error, total_error)
val = E1_BLUE
CALL H5Tenum_insert_f(dtype, "BLUE", val, error)
CALL H5Tenum_insert_f(dtype, "BLUE", C_LOC(val), error)
CALL check("h5tenum_insert_f",error, total_error)
val = E1_WHITE
CALL H5Tenum_insert_f(dtype, "WHITE", val, error)
CALL H5Tenum_insert_f(dtype, "WHITE", C_LOC(val), error)
CALL check("h5tenum_insert_f",error, total_error)
val = E1_BLACK
CALL H5Tenum_insert_f(dtype, "BLACK", val, error)
CALL H5Tenum_insert_f(dtype, "BLACK", C_LOC(val), error)
CALL check("h5tenum_insert_f",error, total_error)
!
! Create dataspace. Setting maximum size to be the current size.