diff options
author | M. Scot Breitenfeld <brtnfld@hdfgroup.org> | 2016-09-22 17:02:02 (GMT) |
---|---|---|
committer | M. Scot Breitenfeld <brtnfld@hdfgroup.org> | 2016-09-22 17:02:02 (GMT) |
commit | 392b8ce3c98ac4e52d53f33e591ed6bf14155925 (patch) | |
tree | e6f86dcc045566b3eda5dea255466efa314dd1fd /fortran/src/H5match_types.c | |
parent | 052efd9bde06ea2427beffd3ea493cbc53a17608 (diff) | |
download | hdf5-392b8ce3c98ac4e52d53f33e591ed6bf14155925.zip hdf5-392b8ce3c98ac4e52d53f33e591ed6bf14155925.tar.gz hdf5-392b8ce3c98ac4e52d53f33e591ed6bf14155925.tar.bz2 |
HDFFV-9973 Fortran library fails to compile and fails tests with NAG compiler
Fixes issues with KIND = BYTE assumptions.
Diffstat (limited to 'fortran/src/H5match_types.c')
-rw-r--r-- | fortran/src/H5match_types.c | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c index 98128db..6f5af49 100644 --- a/fortran/src/H5match_types.c +++ b/fortran/src/H5match_types.c @@ -100,7 +100,7 @@ initFfile(void) ! access to either file, you may request a copy from help@hdfgroup.org. *\n\ ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\ !\n!\n\ -! This file is automatically generated and contains HDF5 Fortran90 type definitions.\n!\n\ +! This file is automatically generated by H5match_types.c and contains HDF5 Fortran90 type definitions.\n!\n\ MODULE H5FORTRAN_TYPES\n\ USE ISO_C_BINDING\n\ !\n\ @@ -175,6 +175,11 @@ int main(void) H5_FORTRAN_NUM_INTEGER_KINDS = (int)(sizeof(IntKinds)/sizeof(IntKinds[0])); H5_FORTRAN_NUM_REAL_KINDS = (int)(sizeof(RealKinds)/sizeof(RealKinds[0])); + + + fprintf(fort_header," INTEGER, PARAMETER :: H5_FORTRAN_NUM_INTEGER_KINDS = %d\n", H5_FORTRAN_NUM_INTEGER_KINDS); + + for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(sizeof(long long) == IntKinds_SizeOf[i]) writeTypedef("int", "long long", IntKinds[i]); @@ -258,7 +263,7 @@ int main(void) /* haddr_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HADDR_T) { - writeToFiles("int","HADDR_T", "haddr_t_f", H5_SIZEOF_HADDR_T, IntKinds[i]); + writeToFiles("int","HADDR_T", "haddr_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -269,7 +274,7 @@ int main(void) /* hsize_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HSIZE_T) { - writeToFiles("hsize_t","HSIZE_T", "hsize_t_f", H5_SIZEOF_HSIZE_T, IntKinds[i]); + writeToFiles("hsize_t","HSIZE_T", "hsize_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -280,7 +285,7 @@ int main(void) /* hssize_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HSSIZE_T) { - writeToFiles("int","HSSIZE_T", "hssize_t_f", H5_SIZEOF_HSSIZE_T, IntKinds[i]); + writeToFiles("int","HSSIZE_T", "hssize_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -291,7 +296,7 @@ int main(void) /* off_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_OFF_T) { - writeToFiles("int","OFF_T", "off_t_f", H5_SIZEOF_OFF_T, IntKinds[i]); + writeToFiles("int","OFF_T", "off_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -302,7 +307,7 @@ int main(void) /* size_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_SIZE_T) { - writeToFiles("size_t","SIZE_T", "size_t_f", H5_SIZEOF_SIZE_T, IntKinds[i]); + writeToFiles("size_t","SIZE_T", "size_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) @@ -311,7 +316,7 @@ int main(void) } /* int */ - writeToFiles("int","Fortran_INTEGER", "int_f", H5_FORTRAN_NATIVE_INTEGER_SIZEOF, H5_FORTRAN_NATIVE_INTEGER_KIND); + writeToFiles("int","Fortran_INTEGER", "int_f", H5_FORTRAN_NATIVE_INTEGER_KIND, H5_FORTRAN_NATIVE_INTEGER_KIND); /* int_1, int_2, int_4, int_8 */ @@ -327,16 +332,29 @@ int main(void) FoundIntSize[3] = -1; FoundIntSize[4] = -1; + fprintf(fort_header," INTEGER, DIMENSION(1:%d), PARAMETER :: Fortran_INTEGER_AVAIL_KINDS = (/", H5_FORTRAN_NUM_INTEGER_KINDS); + for(i=0;i<H5_FORTRAN_NUM_INTEGER_KINDS;i++) { FoundIntSize[i] = (int)IntKinds[i]; FoundIntSizeKind[i] = (int)IntKinds_SizeOf[i]; /* writeToFiles("int",chrA, chrB, FoundIntSize[i], FoundIntSizeKind[i]); */ + fprintf(fort_header,"%d",(int)IntKinds[i]); + if(i==H5_FORTRAN_NUM_INTEGER_KINDS-1) { + fprintf(fort_header,"/)\n"); + } else { + fprintf(fort_header,","); + } + } + + + + for(i=0;i<H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if( FoundIntSize[i] > 0) /* Found the integer type */ { - sprintf(chrA, "Fortran_INTEGER_%d", FoundIntSize[i]); + sprintf(chrA, "Fortran_INTEGER_KINDS_%d", FoundIntSizeKind[i]); sprintf(chrB, "int_%d_f", FoundIntSize[i]); writeToFiles("int",chrA, chrB, FoundIntSize[i], FoundIntSizeKind[i]); } @@ -347,7 +365,7 @@ int main(void) { if( FoundIntSize[j] > 0) /* Found the next highest */ { - sprintf(chrA, "Fortran_INTEGER_%d", (-1)*FoundIntSize[i]); + sprintf(chrA, "Fortran_INTEGER_KINDS_%d", (-1)*FoundIntSizeKind[i]); sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); writeToFiles("int",chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); flag = 1; @@ -360,7 +378,7 @@ int main(void) { if( FoundIntSize[j] > 0) /* Found the next lowest */ { - sprintf(chrA, "Fortran_INTEGER_%d", (-1)*FoundIntSize[i]); + sprintf(chrA, "Fortran_INTEGER_KINDS_%d", (-1)*FoundIntSizeKind[i]); sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); writeToFiles("int",chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); flag = 1; @@ -391,7 +409,7 @@ int main(void) /* hid_t */ for(i=0;i< H5_FORTRAN_NUM_INTEGER_KINDS;i++) { if(IntKinds_SizeOf[i] == H5_SIZEOF_HID_T) { - writeToFiles("int","HID_T", "hid_t_f", H5_SIZEOF_HID_T, IntKinds[i]); + writeToFiles("int","HID_T", "hid_t_f", IntKinds[i], IntKinds[i]); break; } if(i == (H5_FORTRAN_NUM_INTEGER_KINDS-1) ) |