diff options
Diffstat (limited to 'fortran/src/H5match_types.c')
-rw-r--r-- | fortran/src/H5match_types.c | 256 |
1 files changed, 143 insertions, 113 deletions
diff --git a/fortran/src/H5match_types.c b/fortran/src/H5match_types.c index 78fb9e9..6aea94c 100644 --- a/fortran/src/H5match_types.c +++ b/fortran/src/H5match_types.c @@ -1,4 +1,18 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +/****p* Program/H5match_types + * + * NAME + * Executable: H5match_types + * + * FILE + * fortran/src/H5match_types.c + * + * PURPOSE + * C Program to match C types to Fortran types. + * Creates the files H5f90i_gen.h for the C code and + * H5fortran_types.f90 for the Fortran code. + * + * COPYRIGHT + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * @@ -11,12 +25,10 @@ * is linked from the top-level documents page. It can also be found at * * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* C Program to match C types to Fortran types - * Creates the files H5f90i_gen.h for the C code and H5fortran_types.f90 - * for the Fortran. - */ + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + ****** +*/ #include <stdio.h> #include <assert.h> @@ -35,11 +47,19 @@ FILE * fort_header; #define CFILE "H5f90i_gen.h" #define FFILE "H5fortran_types.f90" +/* Prototypes for the write routines */ +void writeTypedef(const char* c_type, unsigned int size); +void writeFloatTypedef(const char* c_type, unsigned int size); +void writeTypedefDefault(unsigned int size); +void writeToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind); +void writeFloatToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind); + static void initCfile(void) { fprintf(c_header, - "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\ + "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\ + * Copyright by The HDF Group. *\n\ * Copyright by the Board of Trustees of the University of Illinois. *\n\ * All rights reserved. *\n\ * *\n\ @@ -49,8 +69,8 @@ initCfile(void) * of the source code distribution tree; Copyright.html can be found at the *\n\ * root level of an installed copy of the electronic HDF5 document set and *\n\ * is linked from the top-level documents page. It can also be found at *\n\ - * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *\n\ - * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *\n\ + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *\n\ + * access to either file, you may request a copy from help@hdfgroup.org. *\n\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\ \n\n\ #ifndef _H5f90i_gen_H\n\ @@ -66,6 +86,7 @@ initFfile(void) { fprintf(fort_header, "! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n\ +! Copyright by The HDF Group. *\n\ ! Copyright by the Board of Trustees of the University of Illinois. *\n\ ! All rights reserved. *\n\ ! *\n\ @@ -75,8 +96,8 @@ initFfile(void) ! of the source code distribution tree; Copyright.html can be found at the *\n\ ! root level of an installed copy of the electronic HDF5 document set and *\n\ ! is linked from the top-level documents page. It can also be found at *\n\ -! http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *\n\ -! access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *\n\ +! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *\n\ +! 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\ @@ -120,24 +141,26 @@ void writeTypedefDefault(unsigned int size) } /* Create matching Fortran and C types by writing to both files */ -void writeToFiles(const char* fortran_type, const char* c_type, unsigned int size) +void writeToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind) { - fprintf(fort_header, " INTEGER, PARAMETER :: %s = %u\n", fortran_type, size); + fprintf(fort_header, " INTEGER, PARAMETER :: %s = %u\n", fortran_type, kind); fprintf(c_header, "typedef c_int_%u %s;\n", size, c_type); } /* Create matching Fortran and C floating types by writing to both files */ -void writeFloatToFiles(const char* fortran_type, const char* c_type, unsigned int size) +void writeFloatToFiles(const char* fortran_type, const char* c_type, unsigned int size, unsigned int kind) { - fprintf(fort_header, " INTEGER, PARAMETER :: %s = %u\n", fortran_type, size); + fprintf(fort_header, " INTEGER, PARAMETER :: %s = %u\n", fortran_type, kind); fprintf(c_header, "typedef c_float_%u %s;\n", size, c_type); } -int main() +int main(void) { int FoundIntSize[4]; + int FoundIntSizeKind[4]; int FoundRealSize[4]; + int FoundRealSizeKind[4]; int i,j,flag; char chrA[20],chrB[20]; int H5_C_HAS_REAL_NATIVE_16; @@ -147,10 +170,9 @@ int main() c_header = fopen(CFILE, "w"); fort_header = fopen(FFILE, "w"); - -/* Default is C has 16 byte float */ + /* Default is C has 16 byte float */ H5_C_HAS_REAL_NATIVE_16 = 1; -/* Default is C has 12 byte float */ + /* Default is C has 12 byte float */ H5_C_HAS_REAL_NATIVE_12 = 1; /* Write copyright, boilerplate to both files */ @@ -159,7 +181,7 @@ int main() /* First, define c_int_x */ -#if defined H5_FORTRAN_HAS_INTEGER_1 +#if defined H5_FORTRAN_HAS_INTEGER_1_KIND if(sizeof(long long) == 1) writeTypedef("long long", 1); else if(sizeof(long) == 1) @@ -173,9 +195,9 @@ int main() /* Actually, char is not necessarily one byte. * But if char isn't, then nothing is, so this * is as close as we can get. */ -#endif /*H5_FORTRAN_HAS_INTEGER_1 */ +#endif /*H5_FORTRAN_HAS_INTEGER_1_KIND*/ -#if defined H5_FORTRAN_HAS_INTEGER_2 +#if defined H5_FORTRAN_HAS_INTEGER_2_KIND if(sizeof(long long) == 2) writeTypedef("long long", 2); else if(sizeof(long) == 2) @@ -186,9 +208,9 @@ int main() writeTypedef("short", 2); else writeTypedefDefault(2); -#endif /*H5_FORTRAN_HAS_INTEGER_2 */ +#endif /*H5_FORTRAN_HAS_INTEGER_2_KIND*/ -#if defined H5_FORTRAN_HAS_INTEGER_4 +#if defined H5_FORTRAN_HAS_INTEGER_4_KIND if(sizeof(long long) == 4) writeTypedef("long long", 4); else if(sizeof(long) == 4) @@ -199,9 +221,9 @@ int main() writeTypedef("short", 4); else writeTypedefDefault(4); -#endif /*H5_FORTRAN_HAS_INTEGER_4 */ +#endif /*H5_FORTRAN_HAS_INTEGER_4_KIND*/ -#if defined H5_FORTRAN_HAS_INTEGER_8 +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND if(sizeof(long long) == 8) writeTypedef("long long", 8); else if(sizeof(long) == 8) @@ -212,11 +234,11 @@ int main() writeTypedef("short", 8); else writeTypedefDefault(8); -#endif /*H5_FORTRAN_HAS_INTEGER_8 */ +#endif /*H5_FORTRAN_HAS_INTEGER_8_KIND*/ /* Define c_float_x */ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_4 || defined H5_FORTRAN_HAS_REAL_4 +#if defined H5_FORTRAN_HAS_REAL_NATIVE_4_KIND || defined H5_FORTRAN_HAS_REAL_4_KIND if(sizeof(long double) == 4) writeFloatTypedef("long double", 4); else if(sizeof(double) == 4) @@ -228,9 +250,9 @@ int main() printf("Quitting....\n"); return -1; } -#endif /*H5_FORTRAN_HAS_REAL_NATIVE_4*/ +#endif /*H5_FORTRAN_HAS_REAL_NATIVE_4_KIND*/ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_8 || defined H5_FORTRAN_HAS_REAL_8 +#if defined H5_FORTRAN_HAS_REAL_NATIVE_8_KIND || defined H5_FORTRAN_HAS_REAL_8_KIND if(sizeof(long double) == 8) writeFloatTypedef("long double", 8); else if(sizeof(double) == 8) @@ -242,9 +264,10 @@ int main() printf("Quitting....\n"); return -1; } -#endif /*H5_FORTRAN_HAS_REAL_NATIVE_8*/ +#endif /*H5_FORTRAN_HAS_REAL_NATIVE_8_KIND*/ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_12 || defined H5_FORTRAN_HAS_REAL_12 + +#if defined H5_FORTRAN_HAS_REAL_NATIVE_12_KIND || defined H5_FORTRAN_HAS_REAL_12_KIND if(sizeof(long double) == 12) writeFloatTypedef("long double", 12); else if(sizeof(double) == 12) @@ -256,9 +279,9 @@ int main() printf(" Disabling Fortran 12 byte REALs\n"); H5_C_HAS_REAL_NATIVE_12 = 0; } -#endif /*H5_FORTRAN_HAS_REAL_NATIVE_8*/ +#endif /*H5_FORTRAN_HAS_REAL_NATIVE_12_KIND*/ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_16 || defined H5_FORTRAN_HAS_REAL_16 +#if defined H5_FORTRAN_HAS_REAL_NATIVE_16_KIND || defined H5_FORTRAN_HAS_REAL_16_KIND if(sizeof(long double) == 16) writeFloatTypedef("long double", 16); else if(sizeof(double) == 16) @@ -270,47 +293,47 @@ int main() printf(" Disabling Fortran 16 byte REALs\n"); H5_C_HAS_REAL_NATIVE_16 = 0; } -#endif /*H5_FORTRAN_HAS_REAL_NATIVE_16*/ +#endif /*H5_FORTRAN_HAS_REAL_NATIVE_16_KIND*/ /* Now begin defining fortran types. */ fprintf(c_header, "\n"); /* haddr_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HADDR_T >= 8 - writeToFiles("HADDR_T", "haddr_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_HADDR_T >= 4 - writeToFiles("HADDR_T", "haddr_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_HADDR_T >= 2 - writeToFiles("HADDR_T", "haddr_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_HADDR_T >= 1 - writeToFiles("HADDR_T", "haddr_t_f", 1); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HADDR_T >= 8 + writeToFiles("HADDR_T", "haddr_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_HADDR_T >= 4 + writeToFiles("HADDR_T", "haddr_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_HADDR_T >= 2 + writeToFiles("HADDR_T", "haddr_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_HADDR_T >= 1 + writeToFiles("HADDR_T", "haddr_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); #else /* Error: couldn't find a size for haddr_t */ return -1; #endif /* hsize_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HSIZE_T >= 8 - writeToFiles("HSIZE_T", "hsize_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_HSIZE_T >= 4 - writeToFiles("HSIZE_T", "hsize_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_HSIZE_T >= 2 - writeToFiles("HSIZE_T", "hsize_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_HSIZE_T >= 1 - writeToFiles("HSIZE_T", "hsize_t_f", 1); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HSIZE_T >= 8 + writeToFiles("HSIZE_T", "hsize_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_HSIZE_T >= 4 + writeToFiles("HSIZE_T", "hsize_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_HSIZE_T >= 2 + writeToFiles("HSIZE_T", "hsize_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_HSIZE_T >= 1 + writeToFiles("HSIZE_T", "hsize_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); #else /* Error: couldn't find a size for hsize_t */ return -1; #endif /* hssize_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HSSIZE_T >= 8 - writeToFiles("HSSIZE_T", "hssize_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_HSSIZE_T >= 4 - writeToFiles("HSSIZE_T", "hssize_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_HSSIZE_T >= 2 - writeToFiles("HSSIZE_T", "hssize_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_HSSIZE_T >= 1 - writeToFiles("HSSIZE_T", "hssize_t_f", 1); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HSSIZE_T >= 8 + writeToFiles("HSSIZE_T", "hssize_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_HSSIZE_T >= 4 + writeToFiles("HSSIZE_T", "hssize_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_HSSIZE_T >= 2 + writeToFiles("HSSIZE_T", "hssize_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_HSSIZE_T >= 1 + writeToFiles("HSSIZE_T", "hssize_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); #else /* Error: couldn't find a size for hssize_t */ return -1; @@ -318,34 +341,33 @@ int main() /* size_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_SIZE_T >= 8 - writeToFiles("SIZE_T", "size_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_SIZE_T >= 4 - writeToFiles("SIZE_T", "size_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_SIZE_T >= 2 - writeToFiles("SIZE_T", "size_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_SIZE_T >= 1 - writeToFiles("SIZE_T", "size_t_f", 1); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_SIZE_T >= 8 + writeToFiles("SIZE_T", "size_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_SIZE_T >= 4 + writeToFiles("SIZE_T", "size_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_SIZE_T >= 2 + writeToFiles("SIZE_T", "size_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_SIZE_T >= 1 + writeToFiles("SIZE_T", "size_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); #else /* Error: couldn't find a size for size_t */ return -1; #endif /* int */ -#if defined H5_FORTRAN_HAS_NATIVE_8 - writeToFiles("Fortran_INTEGER", "int_f", 8); -#elif defined H5_FORTRAN_HAS_NATIVE_4 - writeToFiles("Fortran_INTEGER", "int_f", 4); -#elif defined H5_FORTRAN_HAS_NATIVE_2 - writeToFiles("Fortran_INTEGER", "int_f", 2); -#elif defined H5_FORTRAN_HAS_NATIVE_1 - writeToFiles("Fortran_INTEGER", "int_f", 1); +#if defined H5_FORTRAN_HAS_NATIVE_8_KIND + writeToFiles("Fortran_INTEGER", "int_f", 8, H5_FORTRAN_HAS_NATIVE_8_KIND); +#elif defined H5_FORTRAN_HAS_NATIVE_4_KIND + writeToFiles("Fortran_INTEGER", "int_f", 4, H5_FORTRAN_HAS_NATIVE_4_KIND); +#elif defined H5_FORTRAN_HAS_NATIVE_2_KIND + writeToFiles("Fortran_INTEGER", "int_f", 2, H5_FORTRAN_HAS_NATIVE_2_KIND); +#elif defined H5_FORTRAN_HAS_NATIVE_1_KIND + writeToFiles("Fortran_INTEGER", "int_f", 1, H5_FORTRAN_HAS_NATIVE_1_KIND); #else /* Error: couldn't find a size for int */ return -1; #endif - /* int_1, int_2, int_4, int_8 */ /* Defined different KINDs of integers: */ @@ -358,17 +380,21 @@ int main() FoundIntSize[2] = -4; FoundIntSize[3] = -8; -#if defined H5_FORTRAN_HAS_INTEGER_1 +#if defined H5_FORTRAN_HAS_INTEGER_1_KIND FoundIntSize[0] = 1; + FoundIntSizeKind[0] = H5_FORTRAN_HAS_INTEGER_1_KIND; #endif -#if defined H5_FORTRAN_HAS_INTEGER_2 +#if defined H5_FORTRAN_HAS_INTEGER_2_KIND FoundIntSize[1] = 2; + FoundIntSizeKind[1] = H5_FORTRAN_HAS_INTEGER_2_KIND; #endif -#if defined H5_FORTRAN_HAS_INTEGER_4 +#if defined H5_FORTRAN_HAS_INTEGER_4_KIND FoundIntSize[2] = 4; + FoundIntSizeKind[2] = H5_FORTRAN_HAS_INTEGER_4_KIND; #endif -#if defined H5_FORTRAN_HAS_INTEGER_8 +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND FoundIntSize[3] = 8; + FoundIntSizeKind[3] = H5_FORTRAN_HAS_INTEGER_8_KIND ; #endif for(i=0;i<4;i++) { @@ -376,7 +402,7 @@ int main() { sprintf(chrA, "Fortran_INTEGER_%d", FoundIntSize[i]); sprintf(chrB, "int_%d_f", FoundIntSize[i]); - writeToFiles(chrA, chrB, FoundIntSize[i]); + writeToFiles(chrA, chrB, FoundIntSize[i], FoundIntSizeKind[i]); } else /* Did not find the integer type */ { @@ -387,7 +413,7 @@ int main() { sprintf(chrA, "Fortran_INTEGER_%d", (-1)*FoundIntSize[i]); sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); - writeToFiles(chrA, chrB, FoundIntSize[j]); + writeToFiles(chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); flag = 1; break; } @@ -400,7 +426,7 @@ int main() { sprintf(chrA, "Fortran_INTEGER_%d", (-1)*FoundIntSize[i]); sprintf(chrB, "int_%d_f", (-1)*FoundIntSize[i]); - writeToFiles(chrA, chrB, FoundIntSize[j]); + writeToFiles(chrA, chrB, FoundIntSize[j], FoundIntSizeKind[j]); flag = 1; break; } @@ -425,20 +451,24 @@ int main() FoundRealSize[2] = -12; FoundRealSize[3] = -16; -#if defined H5_FORTRAN_HAS_REAL_4 +#if defined H5_FORTRAN_HAS_REAL_4_KIND FoundRealSize[0] = 4; + FoundRealSizeKind[0] = H5_FORTRAN_HAS_REAL_4_KIND; #endif -#if defined H5_FORTRAN_HAS_REAL_8 +#if defined H5_FORTRAN_HAS_REAL_8_KIND FoundRealSize[1] = 8; + FoundRealSizeKind[1] = H5_FORTRAN_HAS_REAL_8_KIND; #endif -#if defined H5_FORTRAN_HAS_REAL_12 +#if defined H5_FORTRAN_HAS_REAL_12_KIND if(H5_C_HAS_REAL_NATIVE_12 != 0) { FoundRealSize[2] = 12; + FoundRealSizeKind[2] = H5_FORTRAN_HAS_REAL_12_KIND; } #endif -#if defined H5_FORTRAN_HAS_REAL_16 +#if defined H5_FORTRAN_HAS_REAL_16_KIND if(H5_C_HAS_REAL_NATIVE_16 != 0) { FoundRealSize[3] = 16; + FoundRealSizeKind[3] = H5_FORTRAN_HAS_REAL_16_KIND; } #endif @@ -447,7 +477,7 @@ int main() { sprintf(chrA, "Fortran_REAL_%d", FoundRealSize[i]); sprintf(chrB, "real_%d_f", FoundRealSize[i]); - writeFloatToFiles(chrA, chrB, FoundRealSize[i]); + writeFloatToFiles(chrA, chrB, FoundRealSize[i], FoundRealSizeKind[i]); } else /* Did not find the real type */ { @@ -459,7 +489,7 @@ int main() sprintf(chrA, "Fortran_REAL_%d", (-1)*FoundRealSize[i]); sprintf(chrB, "real_%d_f", (-1)*FoundRealSize[i]); if(FoundRealSize[j]>4) { - writeFloatToFiles(chrA, chrB, FoundRealSize[j]); + writeFloatToFiles(chrA, chrB, FoundRealSize[j], FoundRealSizeKind[j]); flag = 1; } /* else { */ @@ -478,7 +508,7 @@ int main() sprintf(chrA, "Fortran_REAL_%d", (-1)*FoundRealSize[i]); sprintf(chrB, "real_%d_f", (-1)*FoundRealSize[i]); if(FoundRealSize[j]>4) { - writeFloatToFiles(chrA, chrB, FoundRealSize[j]); + writeFloatToFiles(chrA, chrB, FoundRealSize[j], FoundRealSizeKind[j]); } /* else { */ /* writeFloatToFiles(chrA, chrB, FoundRealSize[j]); */ @@ -496,44 +526,44 @@ int main() } /* hid_t */ -#if defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HID_T >= 8 - writeToFiles("HID_T", "hid_t_f", 8); -#elif defined H5_FORTRAN_HAS_INTEGER_4 && H5_SIZEOF_HID_T >= 4 - writeToFiles("HID_T", "hid_t_f", 4); -#elif defined H5_FORTRAN_HAS_INTEGER_2 && H5_SIZEOF_HID_T >= 2 - writeToFiles("HID_T", "hid_t_f", 2); -#elif defined H5_FORTRAN_HAS_INTEGER_1 && H5_SIZEOF_HID_T >= 1 - writeToFiles("HID_T", "hid_t_f", 1); -#elif defined H5_FORTRAN_HAS_INTEGER_8 && H5_SIZEOF_HID_T >= 4 - writeToFiles("HID_T", "hid_t_f", 8); +#if defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HID_T >= 8 + writeToFiles("HID_T", "hid_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_4_KIND && H5_SIZEOF_HID_T >= 4 + writeToFiles("HID_T", "hid_t_f", 4, H5_FORTRAN_HAS_INTEGER_4_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_2_KIND && H5_SIZEOF_HID_T >= 2 + writeToFiles("HID_T", "hid_t_f", 2, H5_FORTRAN_HAS_INTEGER_2_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_1_KIND && H5_SIZEOF_HID_T >= 1 + writeToFiles("HID_T", "hid_t_f", 1, H5_FORTRAN_HAS_INTEGER_1_KIND); +#elif defined H5_FORTRAN_HAS_INTEGER_8_KIND && H5_SIZEOF_HID_T >= 4 + writeToFiles("HID_T", "hid_t_f", 8, H5_FORTRAN_HAS_INTEGER_8_KIND); #else /* Error: couldn't find a size for hid_t */ return -1; #endif /* real_f */ -#if defined H5_FORTRAN_HAS_REAL_NATIVE_16 +#if defined H5_FORTRAN_HAS_REAL_NATIVE_16_KIND if(H5_C_HAS_REAL_NATIVE_16 != 0) { - writeFloatToFiles("Fortran_REAL", "real_f", 16); + writeFloatToFiles("Fortran_REAL", "real_f", 16, H5_FORTRAN_HAS_REAL_NATIVE_16_KIND); } -#elif defined H5_FORTRAN_HAS_REAL_NATIVE_12 +#elif defined H5_FORTRAN_HAS_REAL_NATIVE_12_KIND if(H5_C_HAS_REAL_NATIVE_12 != 0) { - writeFloatToFiles("Fortran_REAL", "real_f", 12); + writeFloatToFiles("Fortran_REAL", "real_f", 12, H5_FORTRAN_HAS_REAL_NATIVE_12_KIND); } -#elif defined H5_FORTRAN_HAS_REAL_NATIVE_8 - writeFloatToFiles("Fortran_REAL", "real_f", 8); -#elif defined H5_FORTRAN_HAS_REAL_NATIVE_4 - writeFloatToFiles("Fortran_REAL", "real_f", 4); +#elif defined H5_FORTRAN_HAS_REAL_NATIVE_8_KIND + writeFloatToFiles("Fortran_REAL", "real_f", 8, H5_FORTRAN_HAS_REAL_NATIVE_8_KIND); +#elif defined H5_FORTRAN_HAS_REAL_NATIVE_4_KIND + writeFloatToFiles("Fortran_REAL", "real_f", 4, H5_FORTRAN_HAS_REAL_NATIVE_4_KIND); #else /* Error: couldn't find a size for real_f */ return -1; #endif /* double_f */ -#if defined H5_FORTRAN_HAS_DOUBLE_NATIVE_16 - writeFloatToFiles("Fortran_DOUBLE", "double_f", 16); -#elif defined H5_FORTRAN_HAS_DOUBLE_NATIVE_8 - writeFloatToFiles("Fortran_DOUBLE", "double_f", 8); +#if defined H5_FORTRAN_HAS_DOUBLE_NATIVE_16_KIND + writeFloatToFiles("Fortran_DOUBLE", "double_f", 16, H5_FORTRAN_HAS_DOUBLE_NATIVE_16_KIND); +#elif defined H5_FORTRAN_HAS_DOUBLE_NATIVE_8_KIND + writeFloatToFiles("Fortran_DOUBLE", "double_f", 8, H5_FORTRAN_HAS_DOUBLE_NATIVE_8_KIND); #else /* Error: couldn't find a size for real_f */ return -1; |