summaryrefslogtreecommitdiffstats
path: root/fortran/src
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src')
-rw-r--r--fortran/src/H5Df.c161
-rw-r--r--fortran/src/H5Dff.f9022
-rw-r--r--fortran/src/H5Rf.c9
-rw-r--r--fortran/src/H5Rff.f9013
-rw-r--r--fortran/src/H5f90.h1
-rw-r--r--fortran/src/H5f90global.f903
-rw-r--r--fortran/src/H5f90i.h25
-rw-r--r--fortran/src/H5f90proto.h10
-rw-r--r--fortran/src/H5fortran_types.f90.in1
9 files changed, 125 insertions, 120 deletions
diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c
index b7f01f0..ccf9804 100644
--- a/fortran/src/H5Df.c
+++ b/fortran/src/H5Df.c
@@ -205,50 +205,48 @@ nh5dwrite_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_
* dims argumnet being of INTEGER(HSIZE_T) type.
*---------------------------------------------------------------------------*/
int_f
-nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims)
+nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, haddr_t_f *buf, hsize_t_f *dims)
{
- int ret_value = -1;
- herr_t ret;
- hid_t c_dset_id;
- hid_t c_mem_type_id;
- hid_t c_mem_space_id;
- hid_t c_file_space_id;
- hid_t c_xfer_prp;
- hobj_ref_t *buf_c;
- int i, n;
- n = (int)*dims;
-
- /*
- * Define transfer property
- */
- c_xfer_prp = (hid_t)*xfer_prp;
-
- /*
- * Allocate temporary buffer and copy references from Fortran.
- */
- buf_c = (hobj_ref_t*)HDmalloc(sizeof(hobj_ref_t)*(n));
- if ( buf_c != NULL ) {
- for (i = 0; i < n; i++) {
- HDmemcpy(&buf_c[i], buf, H5R_OBJ_REF_BUF_SIZE);
- buf = buf + REF_OBJ_BUF_LEN_F;
- }
- }
- else return ret_value;
-
- /*
- * Call H5Dwrite function.
- */
- c_dset_id = (hid_t)*dset_id;
- c_mem_type_id = (hid_t)*mem_type_id;
- c_mem_space_id = (hid_t)*mem_space_id;
- c_file_space_id = (hid_t)*file_space_id;
- ret = H5Dwrite(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf_c);
- HDfree(buf_c);
- if (ret < 0) return ret_value;
- ret_value = 0;
- return ret_value;
-
+ int ret_value = -1;
+ herr_t ret;
+ hid_t c_dset_id;
+ hid_t c_mem_type_id;
+ hid_t c_mem_space_id;
+ hid_t c_file_space_id;
+ hid_t c_xfer_prp;
+ hobj_ref_t *buf_c;
+ int i, n;
+
+ /*
+ * Define transfer property
+ */
+ c_xfer_prp = (hid_t)*xfer_prp;
+
+ /*
+ * Allocate temporary buffer and copy references from Fortran.
+ */
+ n = (int)*dims;
+ buf_c = (hobj_ref_t*)HDmalloc(sizeof(hobj_ref_t)*(n));
+ if ( buf_c != NULL ) {
+ for (i = 0; i < n; i++)
+ HDmemcpy(&buf_c[i], &buf[i], sizeof(haddr_t));
+ }
+ else return ret_value;
+
+ /*
+ * Call H5Dwrite function.
+ */
+ c_dset_id = (hid_t)*dset_id;
+ c_mem_type_id = (hid_t)*mem_type_id;
+ c_mem_space_id = (hid_t)*mem_space_id;
+ c_file_space_id = (hid_t)*file_space_id;
+ ret = H5Dwrite(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf_c);
+ HDfree(buf_c);
+ if (ret < 0) return ret_value;
+ ret_value = 0;
+ return ret_value;
}
+
/*----------------------------------------------------------------------------
* Name: h5dwrite_ref_reg_c
* Purpose: Call H5Dwrite to write a dataset of dataset region references
@@ -403,47 +401,46 @@ nh5dread_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t
* with the dims parameter being of INTEGER(HSIZE_T_F) size.
*---------------------------------------------------------------------------*/
int_f
-nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f * buf, hsize_t_f *dims)
+nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, haddr_t_f * buf, hsize_t_f *dims)
{
- int ret_value = -1;
- herr_t ret;
- hid_t c_dset_id;
- hid_t c_mem_type_id;
- hid_t c_mem_space_id;
- hid_t c_file_space_id;
- hid_t c_xfer_prp;
- hobj_ref_t *buf_c = NULL;
- hsize_t i,n;
- n = (hsize_t)*dims;
- /*
- * Define transfer property
- */
- c_xfer_prp = (hid_t)*xfer_prp;
-
- /*
- * Allocate temporary buffer.
- */
- buf_c = (hobj_ref_t*)HDmalloc(sizeof(hobj_ref_t)*(size_t)n);
- if ( buf_c != NULL ) {
- /*
- * Call H5Dread function.
- */
- c_dset_id = (hid_t)*dset_id;
- c_mem_type_id = (hid_t)*mem_type_id;
- c_mem_space_id = (hid_t)*mem_space_id;
- c_file_space_id = (hid_t)*file_space_id;
- ret = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf_c);
- if (ret >=0) {
- for (i = 0; i < n; i++) {
- HDmemcpy(buf, &buf_c[i], H5R_OBJ_REF_BUF_SIZE);
- buf = buf + REF_OBJ_BUF_LEN_F;
- }
- }
- if ( buf_c != NULL ) HDfree(buf_c);
- }
- if (ret < 0) return ret_value;
- ret_value = 0;
- return ret_value;
+ int ret_value = -1;
+ herr_t ret;
+ hid_t c_dset_id;
+ hid_t c_mem_type_id;
+ hid_t c_mem_space_id;
+ hid_t c_file_space_id;
+ hid_t c_xfer_prp;
+ hobj_ref_t *buf_c = NULL;
+ hsize_t i,n;
+
+ /*
+ * Define transfer property
+ */
+ c_xfer_prp = (hid_t)*xfer_prp;
+
+ /*
+ * Allocate temporary buffer.
+ */
+ n = (hsize_t)*dims;
+ buf_c = (hobj_ref_t*)HDmalloc(sizeof(hobj_ref_t)*(size_t)n);
+ if ( buf_c != NULL ) {
+ /*
+ * Call H5Dread function.
+ */
+ c_dset_id = (hid_t)*dset_id;
+ c_mem_type_id = (hid_t)*mem_type_id;
+ c_mem_space_id = (hid_t)*mem_space_id;
+ c_file_space_id = (hid_t)*file_space_id;
+ ret = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, buf_c);
+ if (ret >=0) {
+ for (i = 0; i < n; i++)
+ HDmemcpy(&buf[i], &buf_c[i], sizeof(haddr_t));
+ }
+ if ( buf_c != NULL ) HDfree(buf_c);
+ }
+ if (ret < 0) return ret_value;
+ ret_value = 0;
+ return ret_value;
}
/*----------------------------------------------------------------------------
diff --git a/fortran/src/H5Dff.f90 b/fortran/src/H5Dff.f90
index 0001aca..7ceb9f0 100644
--- a/fortran/src/H5Dff.f90
+++ b/fortran/src/H5Dff.f90
@@ -330,7 +330,7 @@
INTEGER(HID_T) :: xfer_prp_default
INTEGER(HID_T) :: mem_space_id_default
INTEGER(HID_T) :: file_space_id_default
- INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf
+ INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf
INTEGER :: i,j
! INTEGER, EXTERNAL :: h5dwrite_ref_obj_c
@@ -349,7 +349,7 @@
INTEGER(HID_T) :: xfer_prp_default
INTEGER(HID_T) :: mem_space_id_default
INTEGER(HID_T) :: file_space_id_default
- INTEGER, DIMENSION(*) :: ref_buf
+ INTEGER(HADDR_T), DIMENSION(*) :: ref_buf
INTEGER(HSIZE_T), DIMENSION(*) :: dims
END FUNCTION h5dwrite_ref_obj_c
END INTERFACE
@@ -362,15 +362,13 @@
if (present(mem_space_id)) mem_space_id_default = mem_space_id
if (present(file_space_id)) file_space_id_default = file_space_id
- allocate(ref_buf(REF_OBJ_BUF_LEN*dims(1)), stat=hdferr)
+ allocate(ref_buf(dims(1)), stat=hdferr)
if (hdferr .NE. 0 ) then
hdferr = -1
return
else
do j = 1, dims(1)
- do i = 1, REF_OBJ_BUF_LEN
- ref_buf(REF_OBJ_BUF_LEN*(j-1) + i ) = buf(j)%ref(i)
- enddo
+ ref_buf(j) = buf(j)%ref
enddo
endif
hdferr = h5dwrite_ref_obj_c(dset_id, mem_type_id, mem_space_id_default, &
@@ -2500,7 +2498,7 @@
INTEGER(HID_T) :: xfer_prp_default
INTEGER(HID_T) :: mem_space_id_default
INTEGER(HID_T) :: file_space_id_default
- INTEGER, ALLOCATABLE, DIMENSION(:) :: ref_buf
+ INTEGER(HADDR_T), ALLOCATABLE, DIMENSION(:) :: ref_buf
INTEGER :: i,j
! INTEGER, EXTERNAL :: h5dread_ref_obj_c
@@ -2519,12 +2517,12 @@
INTEGER(HID_T) :: xfer_prp_default
INTEGER(HID_T) :: mem_space_id_default
INTEGER(HID_T) :: file_space_id_default
- INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims
- INTEGER, DIMENSION(*) :: ref_buf
+ INTEGER(HSIZE_T), INTENT(IN), DIMENSION(*) :: dims
+ INTEGER(HADDR_T), DIMENSION(*) :: ref_buf
END FUNCTION h5dread_ref_obj_c
END INTERFACE
- allocate(ref_buf(REF_OBJ_BUF_LEN*dims(1)), stat=hdferr)
+ allocate(ref_buf(dims(1)), stat=hdferr)
if (hdferr .NE. 0) then
hdferr = -1
return
@@ -2541,9 +2539,7 @@
hdferr = h5dread_ref_obj_c(dset_id, mem_type_id, mem_space_id_default, &
file_space_id_default, xfer_prp_default, ref_buf, dims)
do j = 1, dims(1)
- do i = 1, REF_OBJ_BUF_LEN
- buf(j)%ref(i) = ref_buf(REF_OBJ_BUF_LEN*(j-1) + i)
- enddo
+ buf(j)%ref = ref_buf(j)
enddo
deallocate(ref_buf)
END SUBROUTINE h5dread_reference_obj
diff --git a/fortran/src/H5Rf.c b/fortran/src/H5Rf.c
index 070efdd..843c2ea 100644
--- a/fortran/src/H5Rf.c
+++ b/fortran/src/H5Rf.c
@@ -29,7 +29,7 @@
* Modifications:
*---------------------------------------------------------------------------*/
int_f
-nh5rcreate_object_c (int_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen)
+nh5rcreate_object_c (haddr_t_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen)
{
int ret_value = -1;
hid_t c_loc_id;
@@ -53,11 +53,10 @@ nh5rcreate_object_c (int_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen)
HDfree(c_name);
if (ret_value_c >= 0) {
- *ref=(int_f)ref_c;
+ *ref=(haddr_t_f)ref_c;
ret_value = 0;
}
- ret_value = 0;
return ret_value;
}
@@ -153,7 +152,7 @@ nh5rdereference_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *obj_id)
* Modifications:
*---------------------------------------------------------------------------*/
int_f
-nh5rdereference_object_c (hid_t_f *dset_id, int_f *ref, hid_t_f *obj_id)
+nh5rdereference_object_c (hid_t_f *dset_id, haddr_t_f *ref, hid_t_f *obj_id)
{
int ret_value = -1;
hid_t c_dset_id;
@@ -218,7 +217,7 @@ nh5rget_region_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *space_id)
* Modifications:
*---------------------------------------------------------------------------*/
int_f
-nh5rget_object_type_obj_c (hid_t_f *dset_id, int_f *ref, int_f *obj_type)
+nh5rget_object_type_obj_c (hid_t_f *dset_id, haddr_t_f *ref, int_f *obj_type)
{
int ret_value = -1;
hid_t c_dset_id;
diff --git a/fortran/src/H5Rff.f90 b/fortran/src/H5Rff.f90
index 97cebe1..08c85df 100644
--- a/fortran/src/H5Rff.f90
+++ b/fortran/src/H5Rff.f90
@@ -102,7 +102,7 @@
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: namelen ! Name length
- INTEGER :: ref_f(REF_OBJ_BUF_LEN) ! Local buffer to pass reference
+ INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference
! INTEGER, EXTERNAL :: h5fcreate_object_c
! Interface is needed for MS FORTRAN
@@ -114,8 +114,7 @@
!MS$ATTRIBUTES C,reference,alias:'_H5RCREATE_OBJECT_C':: h5rcreate_object_c
!DEC$ ENDIF
!DEC$ATTRIBUTES reference :: name
-! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2
- INTEGER :: ref_f(REF_OBJ_BUF_LEN)
+ INTEGER(HADDR_T) :: ref_f
INTEGER(HID_T), INTENT(IN) :: loc_id
CHARACTER(LEN=*), INTENT(IN) :: name
INTEGER :: namelen
@@ -244,7 +243,7 @@
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTEGER :: ref_type ! Reference type
- INTEGER :: ref_f(REF_OBJ_BUF_LEN) ! Local buffer to pass reference
+ INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference
! INTEGER, EXTERNAL :: h5h5rdereference_object_c
! Interface is needed for MS FORTRAN
@@ -257,7 +256,7 @@
!DEC$ ENDIF
! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2
INTEGER(HID_T), INTENT(IN) :: dset_id
- INTEGER :: ref_f(REF_OBJ_BUF_LEN)
+ INTEGER(HADDR_T) :: ref_f
INTEGER(HID_T), INTENT(OUT) :: obj_id
END FUNCTION h5rdereference_object_c
END INTERFACE
@@ -452,7 +451,7 @@
! H5G_TYPE_F 3
INTEGER, INTENT(OUT) :: hdferr ! Error code
- INTEGER :: ref_f(REF_OBJ_BUF_LEN) ! Local buffer to pass reference
+ INTEGER(HADDR_T) :: ref_f ! Local buffer to pass reference
! INTEGER, EXTERNAL :: h5rget_object_type_obj_c
! Interface is needed for MS FORTRAN
@@ -465,7 +464,7 @@
!DEC$ ENDIF
! INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2
INTEGER(HID_T), INTENT(IN) :: dset_id
- INTEGER :: ref_f(REF_OBJ_BUF_LEN)
+ INTEGER(HADDR_T) :: ref_f
INTEGER, INTENT(OUT) :: obj_type
END FUNCTION h5rget_object_type_obj_c
END INTERFACE
diff --git a/fortran/src/H5f90.h b/fortran/src/H5f90.h
index 82983e1..a56cb0c 100644
--- a/fortran/src/H5f90.h
+++ b/fortran/src/H5f90.h
@@ -21,7 +21,6 @@
#include "H5f90proto.h"
/* Constants used in H5Rff.f90 and H5Rf.c files */
-#define REF_OBJ_BUF_LEN_F 2
#define REF_REG_BUF_LEN_F 3
/* Constants used in H5Gf.c files */
diff --git a/fortran/src/H5f90global.f90 b/fortran/src/H5f90global.f90
index b224045..46591b2 100644
--- a/fortran/src/H5f90global.f90
+++ b/fortran/src/H5f90global.f90
@@ -18,11 +18,10 @@
! Definitions for reference datatypes.
! If you change the value of these parameters, do not forget to change corresponding
! values in the H5f90.h file.
- INTEGER, PARAMETER :: REF_OBJ_BUF_LEN = 2
INTEGER, PARAMETER :: REF_REG_BUF_LEN = 3
TYPE hobj_ref_t_f
- INTEGER ref(REF_OBJ_BUF_LEN)
+ INTEGER(HADDR_T) ref
END TYPE
TYPE hdset_reg_ref_t_f
diff --git a/fortran/src/H5f90i.h b/fortran/src/H5f90i.h
index 21498eb..77d6714 100644
--- a/fortran/src/H5f90i.h
+++ b/fortran/src/H5f90i.h
@@ -27,6 +27,7 @@
#include <fortran.h>
/*typedef char* _fcd;*/
+typedef long haddr_t_f;
typedef long hsize_t_f;
typedef long hssize_t_f;
typedef long size_t_f;
@@ -41,6 +42,7 @@ typedef double real_f;
#if defined(IBM6000) || defined(_AIX)
typedef char *_fcd;
+typedef long long haddr_t_f;
typedef long long hsize_t_f;
typedef long long hssize_t_f;
typedef int size_t_f;
@@ -53,6 +55,7 @@ typedef float real_f;
/* MAC APPLE definitions with IBM XL compiler*/
#if defined(__APPLE__)
typedef char *_fcd;
+typedef long long haddr_t_f;
typedef long long hsize_t_f;
typedef long long hssize_t_f;
typedef int size_t_f;
@@ -80,6 +83,7 @@ typedef float real_f;
/* IA32 specific definitions */
#if (defined(i386) || defined(__i386) || defined(__i386__))
+typedef long long haddr_t_f;
typedef long long hsize_t_f;
typedef long long hssize_t_f;
typedef int size_t_f;
@@ -92,6 +96,7 @@ typedef int size_t_f;
/* AMD64 specific definitions */
#elif defined __x86_64__
+typedef long long haddr_t_f;
typedef long long hsize_t_f;
typedef long long hssize_t_f;
typedef int size_t_f;
@@ -100,6 +105,7 @@ typedef int size_t_f;
/* IA64 specific definitions */
#elif defined __ia64
+typedef long haddr_t_f;
typedef long hsize_t_f;
typedef long hssize_t_f;
typedef long size_t_f;
@@ -111,6 +117,7 @@ typedef long size_t_f;
#if defined(IRIX) || defined(IRIS4) || defined(sgi) || defined(__sgi__) || defined(__sgi)
typedef char *_fcd;
+typedef long haddr_t_f;
typedef long hsize_t_f;
typedef long hssize_t_f;
typedef long size_t_f;
@@ -124,6 +131,7 @@ typedef float real_f;
#if (defined(SUN) || defined(sun) || defined(__sun__) || defined(__SUNPRO_C)) & !defined(__i386)
typedef char *_fcd;
+typedef long long haddr_t_f;
typedef long long hssize_t_f;
typedef long long hsize_t_f;
typedef int size_t_f;
@@ -138,6 +146,7 @@ typedef float real_f;
#if defined DEC_ALPHA || (defined __alpha && defined __unix__ && !defined __linux__)
typedef char *_fcd;
+typedef long haddr_t_f;
typedef long hsize_t_f;
typedef long hssize_t_f;
typedef long size_t_f;
@@ -152,9 +161,10 @@ typedef float real_f;
#if defined __alpha__ && defined __linux__
typedef char *_fcd;
-typedef long long hsize_t_f;
-typedef long long hssize_t_f;
-typedef long long size_t_f;
+typedef long long haddr_t_f;
+typedef long long hsize_t_f;
+typedef long long hssize_t_f;
+typedef long long size_t_f;
typedef int int_f;
typedef int hid_t_f;
typedef float real_f;
@@ -166,8 +176,9 @@ typedef float real_f;
#if defined(HP9000) || (!defined(__convexc__) && (defined(hpux) || defined(__hpux)))
typedef char *_fcd;
-typedef long long hsize_t_f;
-typedef long long hssize_t_f;
+typedef long long haddr_t_f;
+typedef long long hsize_t_f;
+typedef long long hssize_t_f;
typedef long size_t_f;
typedef int int_f;
typedef int hid_t_f;
@@ -180,6 +191,7 @@ typedef float real_f;
#if defined _WINDOWS || defined WIN32
typedef char *_fcd;
+typedef int haddr_t_f;
typedef int hsize_t_f;
typedef int hssize_t_f;
typedef int size_t_f;
@@ -204,16 +216,19 @@ typedef float real_f;
/* IA32 specific definitions */
#if (defined(i386) || defined(__i386) || defined(__i386__))
+typedef long long haddr_t_f;
typedef long long hsize_t_f;
typedef long long hssize_t_f;
typedef int size_t_f;
/* AMD64 specific definitions */
#elif defined __x86_64__
+typedef long long haddr_t_f;
typedef long long hsize_t_f;
typedef long long hssize_t_f;
typedef int size_t_f;
/* IA64 specific definitions */
#elif defined __ia64
+typedef long haddr_t_f;
typedef long hsize_t_f;
typedef long hssize_t_f;
typedef long size_t_f;
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index 8876e67..437795c 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -244,14 +244,14 @@ H5_FCDLL int_f nh5dwrite_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem
H5_FCDLL int_f nh5dwrite_vl_integer_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims, size_t_f *len);
H5_FCDLL int_f nh5dwrite_vl_real_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, real_f *buf, hsize_t_f *dims, size_t_f *len);
H5_FCDLL int_f nh5dwrite_vl_string_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims, size_t_f *len);
-H5_FCDLL int_f nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims);
+H5_FCDLL int_f nh5dwrite_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, haddr_t_f *buf, hsize_t_f *dims);
H5_FCDLL int_f nh5dwrite_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims);
H5_FCDLL int_f nh5dwritec_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims);
H5_FCDLL int_f nh5dread_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, void *buf, hsize_t_f *dims);
H5_FCDLL int_f nh5dread_vl_integer_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f *buf, hsize_t_f *dims, size_t_f *len);
H5_FCDLL int_f nh5dread_vl_real_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, real_f *buf, hsize_t_f *dims, size_t_f *len);
H5_FCDLL int_f nh5dread_vl_string_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims, size_t_f *len);
-H5_FCDLL int_f nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f * buf, hsize_t_f *dims);
+H5_FCDLL int_f nh5dread_ref_obj_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, haddr_t_f * buf, hsize_t_f *dims);
H5_FCDLL int_f nh5dread_ref_reg_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, int_f * buf, hsize_t_f *dims);
H5_FCDLL int_f nh5dreadc_c (hid_t_f *dset_id, hid_t_f *mem_type_id, hid_t_f *mem_space_id, hid_t_f *file_space_id, hid_t_f *xfer_prp, _fcd buf, hsize_t_f *dims);
H5_FCDLL int_f nh5dget_space_c ( hid_t_f *dset_id , hid_t_f *space_id);
@@ -890,12 +890,12 @@ H5_FCDLL int_f nh5pfill_value_defined_c ( hid_t_f *prp_id , int_f *flag);
#endif /* DF_CAPFNAMES */
#endif /* H5Rf90_FNAMES */
-H5_FCDLL int_f nh5rcreate_object_c (int_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen);
+H5_FCDLL int_f nh5rcreate_object_c (haddr_t_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen);
H5_FCDLL int_f nh5rcreate_region_c (int_f *ref, hid_t_f *loc_id, _fcd name, int_f *namelen, hid_t_f *space_id);
H5_FCDLL int_f nh5rdereference_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *obj_id);
-H5_FCDLL int_f nh5rdereference_object_c (hid_t_f *dset_id, int_f *ref, hid_t_f *obj_id);
+H5_FCDLL int_f nh5rdereference_object_c (hid_t_f *dset_id, haddr_t_f *ref, hid_t_f *obj_id);
H5_FCDLL int_f nh5rget_region_region_c (hid_t_f *dset_id, int_f *ref, hid_t_f *space_id);
-H5_FCDLL int_f nh5rget_object_type_obj_c (hid_t_f *dset_id, int_f *ref, int_f *obj_type);
+H5_FCDLL int_f nh5rget_object_type_obj_c (hid_t_f *dset_id, haddr_t_f *ref, int_f *obj_type);
/*
* Functions from H5If.c
diff --git a/fortran/src/H5fortran_types.f90.in b/fortran/src/H5fortran_types.f90.in
index 4ff2ef2..0aaabb6 100644
--- a/fortran/src/H5fortran_types.f90.in
+++ b/fortran/src/H5fortran_types.f90.in
@@ -30,6 +30,7 @@
!
INTEGER, PARAMETER :: R_LARGE = @R_LARGE@
INTEGER, PARAMETER :: R_INTEGER = @R_INTEGER@
+ INTEGER, PARAMETER :: HADDR_T = @HADDR_T@
INTEGER, PARAMETER :: HSIZE_T = @HSIZE_T@
INTEGER, PARAMETER :: HSSIZE_T = @HSSIZE_T@
INTEGER, PARAMETER :: HID_T = @HID_T@