summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5match_types.c
diff options
context:
space:
mode:
authorScot Breitenfeld <brtnfld@hdfgroup.org>2011-08-18 14:32:47 (GMT)
committerScot Breitenfeld <brtnfld@hdfgroup.org>2011-08-18 14:32:47 (GMT)
commita9c065c5ce65bb7dca560d53642574dba608dc78 (patch)
tree2d36b7afd3f3a83314db25aba081e95254d28841 /fortran/src/H5match_types.c
parenta968e2d409d975ac5b584680620d2589b0409f88 (diff)
downloadhdf5-a9c065c5ce65bb7dca560d53642574dba608dc78.zip
hdf5-a9c065c5ce65bb7dca560d53642574dba608dc78.tar.gz
hdf5-a9c065c5ce65bb7dca560d53642574dba608dc78.tar.bz2
[svn-r21248] Mereged the F2003 branch into the trunk.
Items merged: fortran directory, src/libhdf5.settings.in configure.in configure MANIFEST Tested: (all platforms used by daily tests, both with --enable-fortran and --enable-fortran2003)
Diffstat (limited to 'fortran/src/H5match_types.c')
-rw-r--r--fortran/src/H5match_types.c256
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;