summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5_f.c
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src/H5_f.c')
-rw-r--r--fortran/src/H5_f.c153
1 files changed, 110 insertions, 43 deletions
diff --git a/fortran/src/H5_f.c b/fortran/src/H5_f.c
index 1641989..f21528f 100644
--- a/fortran/src/H5_f.c
+++ b/fortran/src/H5_f.c
@@ -22,7 +22,7 @@
*/
#include "H5f90.h"
-
+#include "H5fort_type_defines.h"
/****if* H5_f/h5init_types_c
* NAME
* h5init_types_c
@@ -32,15 +32,15 @@
* types - array with the predefined Native Fortran
* type, its element and length must be the
* same as the types array defined in the
- * H5f90global.f90
+ * H5f90global.F90
* floatingtypes - array with the predefined Floating Fortran
* type, its element and length must be the
* same as the floatingtypes array defined in the
- * H5f90global.f90
+ * H5f90global.F90
* integertypes - array with the predefined Integer Fortran
* type, its element and length must be the
* same as the integertypes array defined in the
- * H5f90global.f90
+ * H5f90global.F90
* RETURNS
* 0 on success, -1 on failure
* AUTHOR
@@ -49,14 +49,14 @@
* SOURCE
*/
int_f
-nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertypes )
+h5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertypes )
/******/
{
int ret_value = -1;
hid_t c_type_id;
size_t tmp_val;
-/* Fortran INTEGER is may not be the same as C in; do all checking to find
+/* Fortran INTEGER may not be the same as C; do all checking to find
an appropriate size
*/
if (sizeof(int_f) == sizeof(int)) {
@@ -92,6 +92,12 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype
if ((types[2] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value;
}/*end else */
#endif
+#ifdef H5_HAVE_FLOAT128
+ else if(sizeof(double_f)==sizeof(__float128)) {
+ if ((types[2] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[2], 128) < 0) return ret_value;
+ }/*end else */
+#endif
/*
if ((types[3] = H5Tcopy(H5T_NATIVE_UINT8)) < 0) return ret_value;
@@ -126,7 +132,11 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype
if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value;
} /*end if */
else if (sizeof(int_1_f) == sizeof(long long)) {
- if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value;
+ if ((types[6] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value;
+ } /*end if */
+ else {
+ if ((types[6] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[6], 128) < 0) return ret_value;
} /*end else */
/*
* FIND H5T_NATIVE_INTEGER_2
@@ -143,6 +153,10 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype
else if (sizeof(int_2_f) == sizeof(long long)) {
if ((types[7] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value;
} /*end else */
+ else {
+ if ((types[7] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[7], 128) < 0) return ret_value;
+ } /*end else */
/*
* FIND H5T_NATIVE_INTEGER_4
*/
@@ -158,6 +172,10 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype
else if (sizeof(int_4_f) == sizeof(long long)) {
if ((types[8] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value;
} /*end else */
+ else {
+ if ((types[8] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[8], 128) < 0) return ret_value;
+ } /*end else */
/*
* FIND H5T_NATIVE_INTEGER_8
*/
@@ -173,47 +191,63 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype
else if (sizeof(int_8_f) == sizeof(long long)) {
if ((types[9] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value;
} /*end else */
+ else {
+ if ((types[9] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[9], 128) < 0) return ret_value;
+ } /*end else */
+
/*
- * FIND H5T_NATIVE_REAL_4
+ * FIND H5T_NATIVE_REAL_C_FLOAT
*/
- if (sizeof(real_4_f) == sizeof(float)) {
+ if (sizeof(real_C_FLOAT_f) == sizeof(float)) {
if ((types[10] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value;
} /*end if */
- else if (sizeof(real_4_f) == sizeof(double)) {
+ else if (sizeof(real_C_FLOAT_f) == sizeof(double)) {
if ((types[10] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value;
} /*end if */
#if H5_SIZEOF_LONG_DOUBLE!=0
- else if (sizeof(real_4_f) == sizeof(long double)) {
+ else if (sizeof(real_C_FLOAT_f) == sizeof(long double)) {
if ((types[10] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value;
} /*end else */
#endif
/*
- * FIND H5T_NATIVE_REAL_8
+ * FIND H5T_NATIVE_REAL_C_DOUBLE
*/
- if (sizeof(real_8_f) == sizeof(float)) {
+ if (sizeof(real_C_DOUBLE_f) == sizeof(float)) {
if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value;
} /*end if */
- else if (sizeof(real_8_f) == sizeof(double)) {
+ else if (sizeof(real_C_DOUBLE_f) == sizeof(double)) {
if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value;
} /*end if */
#if H5_SIZEOF_LONG_DOUBLE!=0
- else if (sizeof(real_8_f) == sizeof(long double)) {
+ else if (sizeof(real_C_DOUBLE_f) == sizeof(long double)) {
if ((types[11] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value;
} /*end else */
#endif
/*
- * FIND H5T_NATIVE_REAL_16
+ * FIND H5T_NATIVE_REAL_C_LONG_DOUBLE
*/
- if (sizeof(real_16_f) == sizeof(float)) {
+#if H5_FORTRAN_C_LONG_DOUBLE_IS_UNIQUE
+ if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(float)) {
if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_FLOAT)) < 0) return ret_value;
} /*end if */
- else if (sizeof(real_16_f) == sizeof(double)) {
+ else if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(double)) {
if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_DOUBLE)) < 0) return ret_value;
} /*end if */
-#if H5_SIZEOF_LONG_DOUBLE!=0
- else if (sizeof(real_16_f) == sizeof(long double)) {
- if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value;
+# if FORTRAN_HAVE_C_LONG_DOUBLE!=0
+ else if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(long double)) {
+ if ((types[12] = (hid_t_f)H5Tcopy(H5T_NATIVE_LDOUBLE)) < 0) return ret_value;
} /*end else */
+# else
+ else if (sizeof(real_C_LONG_DOUBLE_f) == sizeof(long double)) {
+ if ((types[12] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[12], 128) < 0) return ret_value;
+ } /*end else */
+# endif
+
+#else
+ if ((types[12] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[12], 64) < 0) return ret_value;
#endif
/*
* FIND H5T_NATIVE_B_8
@@ -221,7 +255,40 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype
if ((types[13] = (hid_t_f)H5Tcopy(H5T_NATIVE_B8)) < 0) return ret_value;
if ((types[14] = (hid_t_f)H5Tcopy(H5T_NATIVE_B16)) < 0) return ret_value;
if ((types[15] = (hid_t_f)H5Tcopy(H5T_NATIVE_B32)) < 0) return ret_value;
- if ((types[16] = (hid_t_f)H5Tcopy(H5T_NATIVE_B64)) < 0) return ret_value;
+ if ((types[16] = (hid_t_f)H5Tcopy(H5T_NATIVE_B64)) < 0) return ret_value;
+
+#if H5_HAVE_Fortran_INTEGER_SIZEOF_16!=0
+ /*
+ * FIND H5T_NATIVE_INTEGER_16
+ */
+ if (sizeof(int_16_f) == sizeof(char)) {
+ if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_CHAR)) < 0) return ret_value;
+ } /*end if */
+ else if (sizeof(int_16_f) == sizeof(short)) {
+ if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_SHORT)) < 0) return ret_value;
+ } /*end if */
+ else if (sizeof(int_16_f) == sizeof(int)) {
+ if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_INT)) < 0) return ret_value;
+ } /*end if */
+ else if (sizeof(int_16_f) == sizeof(long long)) {
+ if ((types[17] = (hid_t_f)H5Tcopy(H5T_NATIVE_LLONG)) < 0) return ret_value;
+ } /*end else */
+ else {
+ if ((types[17] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[17], 128) < 0) return ret_value;
+ } /*end else */
+#else
+ if ((types[17] = H5Tcopy (H5T_NATIVE_INT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[17], 128) < 0) return ret_value;
+#endif
+
+
+/* #ifdef -MSB- */
+ /*
+ * FIND H5T_NATIVE_FLOAT_128
+ */
+ if ((types[18] = H5Tcopy (H5T_NATIVE_FLOAT)) < 0) return ret_value;
+ if ( H5Tset_precision (types[18], 128) < 0) return ret_value;
if ((floatingtypes[0] = (hid_t_f)H5Tcopy(H5T_IEEE_F32BE)) < 0) return ret_value;
if ((floatingtypes[1] = (hid_t_f)H5Tcopy(H5T_IEEE_F32LE)) < 0) return ret_value;
@@ -274,24 +341,24 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype
* types - array with the predefined Native Fortran
* type, its element and length must be the
* same as the types array defined in the
- * H5f90global.f90
+ * H5f90global.F90
* lentypes - length of the types array, which must be the
* same as the length of types array defined
- * in the H5f90global.f90
+ * in the H5f90global.F90
* floatingtypes - array with the predefined Floating Fortran
* type, its element and length must be the
* same as the floatingtypes array defined in the
- * H5f90global.f90
+ * H5f90global.F90
* floatinglen - length of the floatingtypes array, which must be the
* same as the length of floatingtypes array defined
- * in the H5f90global.f90
+ * in the H5f90global.F90
* integertypes - array with the predefined Integer Fortran
* type, its element and length must be the
* same as the integertypes array defined in the
- * H5f90global.f90
+ * H5f90global.F90
* integerlen - length of the floatingtypes array, which must be the
* same as the length of floatingtypes array defined
- * in the H5f90global.f90
+ * in the H5f90global.F90
* RETURNS
* 0 on success, -1 on failure
* AUTHOR
@@ -300,7 +367,7 @@ nh5init_types_c( hid_t_f * types, hid_t_f * floatingtypes, hid_t_f * integertype
* SOURCE
*/
int_f
-nh5close_types_c( hid_t_f * types, int_f *lentypes,
+h5close_types_c( hid_t_f * types, int_f *lentypes,
hid_t_f * floatingtypes, int_f* floatinglen,
hid_t_f * integertypes, int_f * integerlen )
/******/
@@ -310,16 +377,16 @@ nh5close_types_c( hid_t_f * types, int_f *lentypes,
int i;
for (i = 0; i < *lentypes; i++) {
- c_type_id = types[i];
- if ( H5Tclose(c_type_id) < 0) return ret_value;
+ c_type_id = types[i];
+ if ( H5Tclose(c_type_id) < 0) return ret_value;
}
for (i = 0; i < *floatinglen; i++) {
- c_type_id = floatingtypes[i];
- if ( H5Tclose(c_type_id) < 0) return ret_value;
+ c_type_id = floatingtypes[i];
+ if ( H5Tclose(c_type_id) < 0) return ret_value;
}
for (i = 0; i < *integerlen; i++) {
- c_type_id = integertypes[i];
- if ( H5Tclose(c_type_id) < 0) return ret_value;
+ c_type_id = integertypes[i];
+ if ( H5Tclose(c_type_id) < 0) return ret_value;
}
ret_value = 0;
return ret_value;
@@ -368,7 +435,7 @@ nh5close_types_c( hid_t_f * types, int_f *lentypes,
* SOURCE
*/
int_f
-nh5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags,
+h5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags,
int_f *h5e_flags, hid_t_f *h5e_hid_flags, int_f *h5f_flags,
int_f *h5fd_flags, hid_t_f *h5fd_hid_flags,
int_f *h5g_flags, int_f *h5i_flags, int_f *h5l_flags, int_f *h5o_flags,
@@ -713,7 +780,7 @@ nh5init_flags_c( int_f *h5d_flags, size_t_f *h5d_size_flags,
}
int_f
-nh5init1_flags_c(int_f *h5lib_flags)
+h5init1_flags_c(int_f *h5lib_flags)
/******/
{
int ret_value = -1;
@@ -739,7 +806,7 @@ nh5init1_flags_c(int_f *h5lib_flags)
* SOURCE
*/
int_f
-nh5open_c(void)
+h5open_c(void)
/******/
{
int ret_value = -1;
@@ -760,7 +827,7 @@ nh5open_c(void)
* SOURCE
*/
int_f
-nh5close_c(void)
+h5close_c(void)
/******/
{
int ret_value = -1;
@@ -793,7 +860,7 @@ nh5close_c(void)
*
*/
int_f
-nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum)
+h5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum)
/******/
{
@@ -831,7 +898,7 @@ nh5get_libversion_c(int_f *majnum, int_f *minnum, int_f *relnum)
* SOURCE
*/
int_f
-nh5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum)
+h5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum)
/******/
{
int ret_value = -1;
@@ -860,7 +927,7 @@ nh5check_version_c(int_f *majnum, int_f *minnum, int_f *relnum)
* SOURCE
*/
int_f
-nh5garbage_collect_c(void)
+h5garbage_collect_c(void)
/******/
{
int ret_value = -1;
@@ -883,7 +950,7 @@ nh5garbage_collect_c(void)
* SOURCE
*/
int_f
-nh5dont_atexit_c(void)
+h5dont_atexit_c(void)
/******/
{
int ret_value = -1;