summaryrefslogtreecommitdiffstats
path: root/hl/fortran/src
diff options
context:
space:
mode:
Diffstat (limited to 'hl/fortran/src')
-rwxr-xr-xhl/fortran/src/H5LTfc.c31
-rw-r--r--hl/fortran/src/Makefile.in6
2 files changed, 27 insertions, 10 deletions
diff --git a/hl/fortran/src/H5LTfc.c b/hl/fortran/src/H5LTfc.c
index 93d65ef..61c7547 100755
--- a/hl/fortran/src/H5LTfc.c
+++ b/hl/fortran/src/H5LTfc.c
@@ -1247,6 +1247,7 @@ nh5ltget_dataset_info_c(hid_t_f *loc_id,
size_t c_type_size;
hsize_t c_dims[32];
int i;
+ int c_rank;
/*
* Convert FORTRAN name to C name
@@ -1261,15 +1262,23 @@ nh5ltget_dataset_info_c(hid_t_f *loc_id,
c_loc_id = (hid_t)*loc_id;
ret = H5LTget_dataset_info(c_loc_id, c_name, c_dims, &c_classtype, &c_type_size);
+ if (ret < 0) return ret_value;
*type_class = c_classtype;
*type_size = (size_t_f)c_type_size;
- for (i = 0; i < 32 ; i++) {
- dims[i] = (hsize_t_f) c_dims[i];
- }
+ /*
+ * Transpose dimension arrays because of C-FORTRAN storage order
+ */
+ ret = H5LTget_dataset_ndims(c_loc_id, c_name, &c_rank);
if (ret < 0) return ret_value;
+
+ for (i = 0; i < c_rank ; i++) {
+ dims[i] = (hsize_t_f) c_dims[c_rank - i - 1];
+ }
+
+
ret_value = 0;
return ret_value;
}
@@ -1375,6 +1384,7 @@ nh5ltget_attribute_info_c(hid_t_f *loc_id,
size_t c_type_size;
hsize_t c_dims[32];
int i;
+ int c_rank;
/*
* Convert FORTRAN name to C name
@@ -1388,20 +1398,27 @@ nh5ltget_attribute_info_c(hid_t_f *loc_id,
if (c_attrname == NULL) return ret_value;
/*
- * Call H5LTget_dataset_ndims function.
+ * Call H5LTget_attribute_info function.
*/
c_loc_id = (hid_t)*loc_id;
ret = H5LTget_attribute_info(c_loc_id,c_name,c_attrname,c_dims,&c_classtype,&c_type_size);
+ if (ret < 0) return ret_value;
*type_class = c_classtype;
*type_size = (size_t_f)c_type_size;
- for (i = 0; i < 32 ; i++) {
- dims[i] = (hsize_t_f) c_dims[i];
- }
+/*
+ * Transpose dimension arrays because of C-FORTRAN storage order
+ */
+ ret = H5LTget_attribute_ndims(c_loc_id,c_name,c_attrname,&c_rank);
if (ret < 0) return ret_value;
+
+ for (i = 0; i < c_rank ; i++) {
+ dims[i] = (hsize_t_f) c_dims[c_rank - i - 1];
+ }
+
ret_value = 0;
return ret_value;
}
diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in
index 0b269a4..4d4b6fc 100644
--- a/hl/fortran/src/Makefile.in
+++ b/hl/fortran/src/Makefile.in
@@ -269,6 +269,8 @@ build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
+
+# Install directories that automake doesn't know about
docdir = $(exec_prefix)/doc
dvidir = @dvidir@
enable_shared = @enable_shared@
@@ -280,9 +282,7 @@ host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
-
-# Install directories that automake doesn't know about
-includedir = $(exec_prefix)/include
+includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@