summaryrefslogtreecommitdiffstats
path: root/fortran
diff options
context:
space:
mode:
authorRaymond Lu <songyulu@hdfgroup.org>2008-09-26 18:55:32 (GMT)
committerRaymond Lu <songyulu@hdfgroup.org>2008-09-26 18:55:32 (GMT)
commit6f5d0e22f344efc95167f6eee34c788a791bc1bb (patch)
tree294301199f01015d4aab27e9f1e28c1df48ea56c /fortran
parentf9f71a001ba65fbc515b440bf5cbace452947800 (diff)
downloadhdf5-6f5d0e22f344efc95167f6eee34c788a791bc1bb.zip
hdf5-6f5d0e22f344efc95167f6eee34c788a791bc1bb.tar.gz
hdf5-6f5d0e22f344efc95167f6eee34c788a791bc1bb.tar.bz2
[svn-r15704] I changed the return values of H5Fget_obj_ids and H5Fget_obj_count to ssize_t and modified
C++ and Fortran API functions. This is for bug #1245. Tested on smirom, linew, and kagiso.
Diffstat (limited to 'fortran')
-rw-r--r--fortran/src/H5Ff.c26
-rw-r--r--fortran/src/H5Fff.f9030
-rw-r--r--fortran/src/H5f90proto.h4
-rw-r--r--fortran/test/tH5F.f902
4 files changed, 43 insertions, 19 deletions
diff --git a/fortran/src/H5Ff.c b/fortran/src/H5Ff.c
index 2190d05..674d702 100644
--- a/fortran/src/H5Ff.c
+++ b/fortran/src/H5Ff.c
@@ -411,21 +411,23 @@ nh5fclose_c ( hid_t_f *file_id )
* Programmer: Elena Pourmal
* Monday, September 30, 2002
* Modifications:
+ * Changed type of obj_count to size_t_f
+ * Thursday, September 25, 2008
*---------------------------------------------------------------------------*/
int_f
-nh5fget_obj_count_c ( hid_t_f *file_id , int_f *obj_type, int_f * obj_count)
+nh5fget_obj_count_c ( hid_t_f *file_id , int_f *obj_type, size_t_f * obj_count)
{
int ret_value = 0;
hid_t c_file_id;
unsigned c_obj_type;
- int c_obj_count;
+ ssize_t c_obj_count;
c_file_id = (hid_t)*file_id;
c_obj_type = (unsigned) *obj_type;
if ( (c_obj_count=H5Fget_obj_count(c_file_id, c_obj_type)) < 0 ) ret_value = -1;
- *obj_count = (int_f)c_obj_count;
+ *obj_count = (size_t_f)c_obj_count;
return ret_value;
}
/*----------------------------------------------------------------------------
@@ -438,24 +440,34 @@ nh5fget_obj_count_c ( hid_t_f *file_id , int_f *obj_type, int_f * obj_count)
* Programmer: Elena Pourmal
* Monday, September 30, 2002
* Modifications:
+ * Changed type of max_obj to size_t_f; added parameter for the
+ * number of open objects
+ * Thursday, September 25, 2008 EIP
*---------------------------------------------------------------------------*/
int_f
-nh5fget_obj_ids_c ( hid_t_f *file_id , int_f *obj_type, int_f *max_objs, hid_t_f *obj_ids)
+nh5fget_obj_ids_c ( hid_t_f *file_id , int_f *obj_type, size_t_f *max_objs, hid_t_f *obj_ids, size_t_f *num_objs)
{
int ret_value = 0;
hid_t c_file_id;
unsigned c_obj_type;
- int c_max_objs, i;
+ int i;
+ size_t c_max_objs;
+ ssize_t c_num_objs;
hid_t *c_obj_ids;
c_file_id = (hid_t)*file_id;
c_obj_type = (unsigned) *obj_type;
- c_max_objs = (int)*max_objs;
+ c_max_objs = (size_t)*max_objs;
c_obj_ids = (hid_t *)HDmalloc(sizeof(hid_t)*c_max_objs);
- if ( H5Fget_obj_ids(c_file_id, c_obj_type, c_max_objs, c_obj_ids) < 0 ) ret_value = -1;
+
+ c_num_objs = H5Fget_obj_ids(c_file_id, c_obj_type, c_max_objs, c_obj_ids);
+ if ( c_num_objs < 0 ) ret_value = -1;
for (i=0; i< c_max_objs; i++) obj_ids[i] = (hid_t_f)c_obj_ids[i];
+
HDfree(c_obj_ids);
+ *num_objs = (size_t_f)c_num_objs;
+
return ret_value;
}
/*----------------------------------------------------------------------------
diff --git a/fortran/src/H5Fff.f90 b/fortran/src/H5Fff.f90
index b48beb8..86d9c0e 100644
--- a/fortran/src/H5Fff.f90
+++ b/fortran/src/H5Fff.f90
@@ -638,7 +638,8 @@
! September 30, 2002
!
! Modifications:
-!
+! Changed the type of obj_count to INTEGER(SIZE_T)
+! September 25, 2008 EIP
! Comment:
!----------------------------------------------------------------------
@@ -646,7 +647,8 @@
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
INTEGER, INTENT(IN) :: obj_type ! Object type
- INTEGER, INTENT(OUT) :: obj_count ! Number of open objects
+ INTEGER(SIZE_T), INTENT(OUT) :: obj_count
+ ! Number of open objects
INTEGER, INTENT(OUT) :: hdferr ! Error code
INTERFACE
@@ -657,7 +659,8 @@
!DEC$ ENDIF
INTEGER(HID_T), INTENT(IN) :: file_id
INTEGER, INTENT(IN) :: obj_type ! Object type
- INTEGER, INTENT(OUT) :: obj_count ! Number of open objects
+ INTEGER(SIZE_T), INTENT(OUT) :: obj_count
+ ! Number of open objects
END FUNCTION h5fget_obj_count_c
END INTERFACE
@@ -690,33 +693,42 @@
! September 30, 2002
!
! Modifications:
+! Added optional parameter num_objs for number of open objects
+! of the specified type and changed type of max_obj to
+! INTEGER(SIZE_T)
+! September 25, 2008 EIP
!
! Comment:
!----------------------------------------------------------------------
- SUBROUTINE h5fget_obj_ids_f(file_id, obj_type, max_objs, obj_ids, hdferr)
+ SUBROUTINE h5fget_obj_ids_f(file_id, obj_type, max_objs, obj_ids, hdferr, num_objs)
IMPLICIT NONE
INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
INTEGER, INTENT(IN) :: obj_type ! Object type
- INTEGER, INTENT(IN) :: max_objs ! Maximum # of objects to retrieve
+ INTEGER(SIZE_T), INTENT(IN) :: max_objs ! Maximum # of objects to retrieve
INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids
! Array of open objects iidentifiers
- INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER, INTENT(OUT) :: hdferr ! Error code
+ INTEGER(SIZE_T), INTENT(OUT), OPTIONAL :: num_objs
+ INTEGER(SIZE_T) :: c_num_objs
+ ! Number of open objects of the specified type
INTERFACE
- INTEGER FUNCTION h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids)
+ INTEGER FUNCTION h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs)
USE H5GLOBAL
!DEC$ IF DEFINED(HDF5F90_WINDOWS)
!DEC$ ATTRIBUTES C,reference,decorate,alias:'H5FGET_OBJ_IDS_C':: h5fget_obj_ids_c
!DEC$ ENDIF
INTEGER(HID_T), INTENT(IN) :: file_id
INTEGER, INTENT(IN) :: obj_type
- INTEGER, INTENT(IN) :: max_objs
+ INTEGER(SIZE_T), INTENT(IN) :: max_objs
INTEGER(HID_T), DIMENSION(*), INTENT(INOUT) :: obj_ids
+ INTEGER(SIZE_T), INTENT(OUT) :: c_num_objs
END FUNCTION h5fget_obj_ids_c
END INTERFACE
- hdferr = h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids)
+ hdferr = h5fget_obj_ids_c(file_id, obj_type, max_objs, obj_ids, c_num_objs)
+ if (present(num_objs)) num_objs= c_num_objs
END SUBROUTINE h5fget_obj_ids_f
diff --git a/fortran/src/H5f90proto.h b/fortran/src/H5f90proto.h
index f812b29..b29af89 100644
--- a/fortran/src/H5f90proto.h
+++ b/fortran/src/H5f90proto.h
@@ -54,8 +54,8 @@ H5_FCDLL int_f nh5funmount_c (hid_t_f *loc_id, _fcd dsetname, int_f *namelen);
H5_FCDLL int_f nh5freopen_c (hid_t_f *file_id1, hid_t_f *file_id2);
H5_FCDLL int_f nh5fget_create_plist_c (hid_t_f *file_id, hid_t_f *prop_id);
H5_FCDLL int_f nh5fget_access_plist_c (hid_t_f *file_id, hid_t_f *access_id);
-H5_FCDLL int_f nh5fget_obj_count_c (hid_t_f *file_id, int_f *obj_type, int_f *obj_count);
-H5_FCDLL int_f nh5fget_obj_ids_c (hid_t_f *file_id, int_f *obj_type, int_f *max_objs, hid_t_f *obj_ids);
+H5_FCDLL int_f nh5fget_obj_count_c (hid_t_f *file_id, int_f *obj_type, size_t_f *obj_count);
+H5_FCDLL int_f nh5fget_obj_ids_c (hid_t_f *file_id, int_f *obj_type, size_t_f *max_objs, hid_t_f *obj_ids, size_t_f *num_objs);
H5_FCDLL int_f nh5fget_freespace_c (hid_t_f *file_id, hssize_t_f *free_space);
H5_FCDLL int_f nh5fflush_c (hid_t_f *obj_id, int_f *scope);
H5_FCDLL int_f nh5fget_name_c(hid_t_f *obj_id, size_t_f *size, _fcd buf, size_t_f *buflen);
diff --git a/fortran/test/tH5F.f90 b/fortran/test/tH5F.f90
index 859d66e..e39d0ee 100644
--- a/fortran/test/tH5F.f90
+++ b/fortran/test/tH5F.f90
@@ -578,7 +578,7 @@
INTEGER(HID_T) :: fapl, fapl1, fapl2, fapl3 ! File access identifiers
INTEGER(HID_T) :: fid_d_fapl, fid1_fapl ! File access identifiers
LOGICAL :: flag
- INTEGER :: obj_count, obj_countf
+ INTEGER(SIZE_T) :: obj_count, obj_countf
INTEGER(HID_T), ALLOCATABLE, DIMENSION(:) :: obj_ids
INTEGER :: i