mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-12 15:04:59 +08:00
[svn-r23293] Fix for HDFFV-8268: Fortran wrapper for H5Fget_file_image function.
Tested: (jam, gnu,intel compilers)
This commit is contained in:
parent
32da9c96ae
commit
a976ca99a9
3
MANIFEST
3
MANIFEST
@ -293,6 +293,8 @@
|
||||
./fortran/src/H5FDmpioff.f90
|
||||
./fortran/src/H5Ff.c
|
||||
./fortran/src/H5Fff.f90
|
||||
./fortran/src/H5Fff_F90.f90
|
||||
./fortran/src/H5Fff_F03.f90
|
||||
./fortran/src/H5Gf.c
|
||||
./fortran/src/H5Gff.f90
|
||||
./fortran/src/H5If.c
|
||||
@ -354,6 +356,7 @@
|
||||
./fortran/test/tH5E_F03.f90
|
||||
./fortran/test/tH5E.f90
|
||||
./fortran/test/tH5F.f90
|
||||
./fortran/test/tH5F_F03.f90
|
||||
./fortran/test/tH5G.f90
|
||||
./fortran/test/tH5G_1_8.f90
|
||||
./fortran/test/tH5I.f90
|
||||
|
@ -70,7 +70,7 @@ PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(srcdir)/run-fortran-ex.sh.in $(srcdir)/testh5fc.sh.in \
|
||||
$(top_srcdir)/bin/mkinstalldirs \
|
||||
$(top_srcdir)/config/commence.am \
|
||||
|
@ -188,6 +188,7 @@ SET (f90_F_SRCS
|
||||
${HDF5_F90_SRC_SOURCE_DIR}/H5Aff${F_STATUS}.f90
|
||||
${HDF5_F90_SRC_SOURCE_DIR}/H5Dff${F_STATUS}.f90
|
||||
${HDF5_F90_SRC_SOURCE_DIR}/H5Eff${F_STATUS}.f90
|
||||
${HDF5_F90_SRC_SOURCE_DIR}/H5Fff${F_STATUS}.f90
|
||||
${HDF5_F90_SRC_SOURCE_DIR}/H5Lff${F_STATUS}.f90
|
||||
${HDF5_F90_SRC_SOURCE_DIR}/H5Off${F_STATUS}.f90
|
||||
${HDF5_F90_SRC_SOURCE_DIR}/H5Pff${F_STATUS}.f90
|
||||
|
@ -679,3 +679,37 @@ nh5fget_filesize_c(hid_t_f *file_id, hsize_t_f *size)
|
||||
done:
|
||||
return ret_value;
|
||||
}
|
||||
|
||||
/****if* H5Ff/h5fget_file_image_c
|
||||
* NAME
|
||||
* h5fget_file_image_c
|
||||
* PURPOSE
|
||||
* Calls h5fget_file_image
|
||||
* INPUTS
|
||||
* file_id - Target file identifier.
|
||||
* buf_ptr - Pointer to the buffer into which the image of the HDF5 file is to be copied.
|
||||
* buf_len - Size of the supplied buffer.
|
||||
* OUTPUTS
|
||||
* buf_req - The size in bytes of the buffer required to store the file image.
|
||||
* RETURNS
|
||||
* 0 on success, -1 on failure
|
||||
* AUTHOR
|
||||
* M. Scot Breitenfeld
|
||||
* November 26, 2012
|
||||
* SOURCE
|
||||
*/
|
||||
int_f
|
||||
nh5fget_file_image_c(hid_t_f *file_id, void *buf_ptr, size_t_f *buf_len, size_t_f *buf_req)
|
||||
/******/
|
||||
{
|
||||
herr_t ret_value=0; /* Return value */
|
||||
|
||||
/*
|
||||
* Call h5fget_file_image function
|
||||
*/
|
||||
if ((*buf_req = (size_t_f)H5Fget_file_image((hid_t)*file_id, buf_ptr, (size_t)*buf_len)) < 0)
|
||||
HGOTO_DONE(FAIL);
|
||||
|
||||
done:
|
||||
return ret_value;
|
||||
}
|
||||
|
104
fortran/src/H5Fff_F03.f90
Normal file
104
fortran/src/H5Fff_F03.f90
Normal file
@ -0,0 +1,104 @@
|
||||
!****h* ROBODoc/H5F (F03)
|
||||
!
|
||||
! NAME
|
||||
! H5F_PROVISIONAL
|
||||
!
|
||||
! PURPOSE
|
||||
! This file contains Fortran 2003 interfaces for H5F functions.
|
||||
!
|
||||
! COPYRIGHT
|
||||
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
! Copyright by The HDF Group. *
|
||||
! Copyright by the Board of Trustees of the University of Illinois. *
|
||||
! All rights reserved. *
|
||||
! *
|
||||
! This file is part of HDF5. The full HDF5 copyright notice, including *
|
||||
! terms governing use, modification, and redistribution, is contained in *
|
||||
! the files COPYING and Copyright.html. COPYING can be found at the root *
|
||||
! of the source code distribution tree; Copyright.html can be found at the *
|
||||
! root level of an installed copy of the electronic HDF5 document set and *
|
||||
! 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. *
|
||||
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
!
|
||||
! NOTES
|
||||
! *** IMPORTANT ***
|
||||
! If you add a new H5T function you must add the function name to the
|
||||
! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
|
||||
! This is needed for Windows based operating systems.
|
||||
!
|
||||
!*****
|
||||
|
||||
|
||||
MODULE H5F_PROVISIONAL
|
||||
|
||||
USE H5GLOBAL
|
||||
USE, INTRINSIC :: ISO_C_BINDING
|
||||
|
||||
|
||||
CONTAINS
|
||||
!****s* H5F (F03)/h5fget_file_image_f_F03
|
||||
!
|
||||
! NAME
|
||||
! h5fget_file_image_f
|
||||
!
|
||||
! PURPOSE
|
||||
! Retrieves a copy of the image of an existing, open file.
|
||||
!
|
||||
! Inputs:
|
||||
! file_id - Target file identifier.
|
||||
! buf_ptr - Pointer to the buffer into which the image of the HDF5 file is to be copied.
|
||||
! buf_len - Size of the supplied buffer.
|
||||
!
|
||||
! Outputs:
|
||||
! hdferr - error code:
|
||||
! 0 on success and -1 on failure
|
||||
! Optional:
|
||||
! buf_size - The size in bytes of the buffer required to store the file image.
|
||||
!
|
||||
! AUTHOR
|
||||
! M. Scot Breitenfeld
|
||||
! November 26, 2012
|
||||
!
|
||||
! Fortran2003 Interface:
|
||||
SUBROUTINE h5fget_file_image_f(file_id, buf_ptr, buf_len, hdferr, buf_size)
|
||||
USE, INTRINSIC :: ISO_C_BINDING
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T) , INTENT(IN) :: file_id
|
||||
TYPE(C_PTR) , INTENT(INOUT) :: buf_ptr
|
||||
INTEGER(SIZE_T) , INTENT(IN) :: buf_len
|
||||
INTEGER(SIZE_T) , INTENT(OUT), OPTIONAL :: buf_size
|
||||
INTEGER , INTENT(OUT) :: hdferr
|
||||
!*****
|
||||
|
||||
INTEGER(SIZE_T) :: buf_size_default
|
||||
|
||||
INTERFACE
|
||||
INTEGER FUNCTION h5fget_file_image_c(file_id, buf_ptr, buf_len, buf_size)
|
||||
USE, INTRINSIC :: ISO_C_BINDING
|
||||
USE H5GLOBAL
|
||||
!DEC$IF DEFINED(HDF5F90_WINDOWS)
|
||||
!DEC$ATTRIBUTES C,reference,decorate,alias:'H5FGET_FILE_IMAGE_C'::h5fget_file_image_c
|
||||
!DEC$ENDIF
|
||||
INTEGER(HID_T) , INTENT(IN) :: file_id
|
||||
TYPE(C_PTR) , VALUE :: buf_ptr
|
||||
INTEGER(SIZE_T) , INTENT(IN) :: buf_len
|
||||
INTEGER(SIZE_T), INTENT(IN) :: buf_size
|
||||
END FUNCTION h5fget_file_image_c
|
||||
END INTERFACE
|
||||
|
||||
|
||||
IF(PRESENT(buf_size))THEN
|
||||
buf_ptr = C_NULL_PTR
|
||||
ENDIF
|
||||
|
||||
hdferr = h5fget_file_image_c(file_id, buf_ptr, buf_len, buf_size_default)
|
||||
|
||||
IF(PRESENT(buf_size))THEN
|
||||
buf_size = buf_size_default
|
||||
ENDIF
|
||||
|
||||
END SUBROUTINE h5fget_file_image_f
|
||||
|
||||
END MODULE H5F_PROVISIONAL
|
43
fortran/src/H5Fff_F90.f90
Normal file
43
fortran/src/H5Fff_F90.f90
Normal file
@ -0,0 +1,43 @@
|
||||
!****h* ROBODoc/H5F (F90)
|
||||
!
|
||||
! NAME
|
||||
! H5F_PROVISIONAL
|
||||
!
|
||||
! PURPOSE
|
||||
! This file contains Fortran 90 interfaces for H5F functions. It
|
||||
! containsthe same functions as H5Fff_F03.f90, when applicable,
|
||||
! but excludes the Fortran 2003 functions and the interface listings.
|
||||
! This file will be compiled instead of H5Fff_F03.f90 if Fortran 2003
|
||||
! functions are not enabled.
|
||||
!
|
||||
! COPYRIGHT
|
||||
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
! Copyright by The HDF Group. *
|
||||
! Copyright by the Board of Trustees of the University of Illinois. *
|
||||
! All rights reserved. *
|
||||
! *
|
||||
! This file is part of HDF5. The full HDF5 copyright notice, including *
|
||||
! terms governing use, modification, and redistribution, is contained in *
|
||||
! the files COPYING and Copyright.html. COPYING can be found at the root *
|
||||
! of the source code distribution tree; Copyright.html can be found at the *
|
||||
! root level of an installed copy of the electronic HDF5 document set and *
|
||||
! 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. *
|
||||
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
!
|
||||
! NOTES
|
||||
! *** IMPORTANT ***
|
||||
! If you add a new H5F function you must add the function name to the
|
||||
! Windows dll file 'hdf5_fortrandll.def' in the fortran/src directory.
|
||||
! This is needed for Windows based operating systems.
|
||||
!
|
||||
!*****
|
||||
|
||||
|
||||
MODULE H5F_PROVISIONAL
|
||||
|
||||
USE H5GLOBAL
|
||||
IMPLICIT NONE
|
||||
|
||||
END MODULE H5F_PROVISIONAL
|
@ -725,7 +725,7 @@ nh5lget_name_by_idx_c(hid_t_f *loc_id, _fcd group_name, size_t_f *group_namelen,
|
||||
if(NULL == (c_name = (char *)HDmalloc(c_size)))
|
||||
HGOTO_DONE(FAIL)
|
||||
|
||||
if((*size = (size_t)H5Lget_name_by_idx((hid_t)*loc_id, c_group_name, (H5_index_t)*index_field,
|
||||
if((*size = (size_t_f)H5Lget_name_by_idx((hid_t)*loc_id, c_group_name, (H5_index_t)*index_field,
|
||||
(H5_iter_order_t)*order, (hsize_t)*n,c_name, c_size, (hid_t)*lapl_id)) < 0)
|
||||
HGOTO_DONE(FAIL)
|
||||
|
||||
|
@ -93,6 +93,7 @@ typedef struct H5O_info_t_f {
|
||||
#define nh5fget_obj_count_c H5_FC_FUNC_(h5fget_obj_count_c, H5FGET_OBJ_COUNT_C)
|
||||
#define nh5fget_obj_ids_c H5_FC_FUNC_(h5fget_obj_ids_c, H5FGET_OBJ_IDS_C)
|
||||
#define nh5fget_freespace_c H5_FC_FUNC_(h5fget_freespace_c, H5FGET_FREESPACE_C)
|
||||
#define nh5fget_file_image_c H5_FC_FUNC_(h5fget_file_image_c, H5FGET_FILE_IMAGE_C)
|
||||
#define nh5fget_name_c H5_FC_FUNC_(h5fget_name_c, H5FGET_NAME_C)
|
||||
#define nh5fget_filesize_c H5_FC_FUNC_(h5fget_filesize_c, H5FGET_FILESIZE_C)
|
||||
|
||||
@ -108,6 +109,7 @@ 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, 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 nh5fget_file_image_c(hid_t_f *file_id, void *buf_ptr, size_t_f *buf_len, size_t_f *buf_req);
|
||||
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);
|
||||
H5_FCDLL int_f nh5fget_filesize_c(hid_t_f *file_id, hsize_t_f *size);
|
||||
|
@ -30,6 +30,7 @@
|
||||
MODULE HDF5
|
||||
USE H5GLOBAL
|
||||
USE H5F
|
||||
USE H5F_PROVISIONAL
|
||||
USE H5G
|
||||
USE H5E
|
||||
USE H5E_PROVISIONAL
|
||||
|
@ -76,7 +76,7 @@ libhdf5_fortran_la_SOURCES=H5f90global.f90 \
|
||||
H5_DBLE_Interface$(F_DBLE).f90 \
|
||||
H5f90kit.c H5_f.c H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c \
|
||||
H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \
|
||||
H5Aff$(F_STATUS).f90 H5Dff$(F_STATUS).f90 H5Eff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 \
|
||||
H5Aff$(F_STATUS).f90 H5Dff$(F_STATUS).f90 H5Eff$(F_STATUS).f90 H5Fff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 \
|
||||
H5Off$(F_STATUS).f90 H5Pff$(F_STATUS).f90 H5Rff$(F_STATUS).f90 H5Tff$(F_STATUS).f90 $(PARALLEL_COND_SRC)
|
||||
|
||||
# HDF5 Fortran library depends on HDF5 Library.
|
||||
@ -201,6 +201,7 @@ H5Dff.lo: $(srcdir)/H5Dff.f90 H5f90global.lo
|
||||
H5Aff$(F_STATUS).lo: $(srcdir)/H5Aff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Dff$(F_STATUS).lo: $(srcdir)/H5Dff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Eff$(F_STATUS).lo: $(srcdir)/H5Eff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Fff$(F_STATUS).lo: $(srcdir)/H5Fff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Lff$(F_STATUS).lo: $(srcdir)/H5Lff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Off$(F_STATUS).lo: $(srcdir)/H5Off$(F_STATUS).f90 H5f90global.lo
|
||||
H5Pff$(F_STATUS).lo: $(srcdir)/H5Pff$(F_STATUS).f90 H5f90global.lo
|
||||
@ -217,11 +218,11 @@ H5Rff.lo: $(srcdir)/H5Rff.f90 H5f90global.lo
|
||||
H5Sff.lo: $(srcdir)/H5Sff.f90 H5f90global.lo
|
||||
H5Tff.lo: $(srcdir)/H5Tff.f90 H5f90global.lo
|
||||
H5Zff.lo: $(srcdir)/H5Zff.f90 H5f90global.lo
|
||||
H5_DBLE_Interface$(F_DBLE).lo: $(srcdir)/H5_DBLE_Interface$(F_DBLE).f90 H5Aff$(F_STATUS).lo H5Dff$(F_STATUS).lo H5Eff$(F_STATUS).lo H5Pff$(F_STATUS).lo
|
||||
H5_DBLE_Interface$(F_DBLE).lo: $(srcdir)/H5_DBLE_Interface$(F_DBLE).f90 H5Aff$(F_STATUS).lo H5Dff$(F_STATUS).lo H5Fff$(F_STATUS).lo H5Eff$(F_STATUS).lo H5Pff$(F_STATUS).lo
|
||||
HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5_ff$(F_STATUS).lo H5_ff.lo H5Aff.lo H5Aff$(F_STATUS).lo \
|
||||
H5Dff.lo H5Dff$(F_STATUS).lo \
|
||||
H5Eff.lo H5Eff$(F_STATUS).lo \
|
||||
H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \
|
||||
H5Fff.lo H5Fff$(F_STATUS).lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \
|
||||
H5Off.lo H5Off$(F_STATUS).lo H5Pff.lo H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Rff.lo \
|
||||
H5Sff.lo H5Tff.lo H5Tff$(F_STATUS).lo H5Zff.lo \
|
||||
H5_DBLE_Interface$(F_DBLE).lo
|
||||
@ -230,7 +231,7 @@ HDF5mpio.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo H5_ff$(F_STATUS).lo
|
||||
H5Aff.lo H5Aff$(F_STATUS).lo \
|
||||
H5Dff.lo H5Dff$(F_STATUS).lo \
|
||||
H5Eff.lo H5Eff$(F_STATUS).lo \
|
||||
H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \
|
||||
H5Fff.lo H5Fff$(F_STATUS).lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \
|
||||
H5Off.lo H5Off$(F_STATUS).lo H5Pff.lo H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Rff.lo \
|
||||
H5Sff.lo H5Tff.lo H5Tff$(F_STATUS).lo H5Zff.lo \
|
||||
H5_DBLE_Interface$(F_DBLE).lo H5FDmpioff.lo
|
||||
|
@ -128,9 +128,10 @@ am__libhdf5_fortran_la_SOURCES_DIST = H5f90global.f90 \
|
||||
H5_DBLE_Interface$(F_DBLE).f90 H5f90kit.c H5_f.c H5Af.c H5Df.c \
|
||||
H5Ef.c H5Ff.c H5Gf.c H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c \
|
||||
H5Tf.c H5Zf.c H5Aff$(F_STATUS).f90 H5Dff$(F_STATUS).f90 \
|
||||
H5Eff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 H5Off$(F_STATUS).f90 \
|
||||
H5Pff$(F_STATUS).f90 H5Rff$(F_STATUS).f90 H5Tff$(F_STATUS).f90 \
|
||||
HDF5.f90 H5FDmpiof.c HDF5mpio.f90 H5FDmpioff.f90
|
||||
H5Eff$(F_STATUS).f90 H5Fff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 \
|
||||
H5Off$(F_STATUS).f90 H5Pff$(F_STATUS).f90 H5Rff$(F_STATUS).f90 \
|
||||
H5Tff$(F_STATUS).f90 HDF5.f90 H5FDmpiof.c HDF5mpio.f90 \
|
||||
H5FDmpioff.f90
|
||||
@BUILD_PARALLEL_CONDITIONAL_FALSE@am__objects_1 = HDF5.lo
|
||||
@BUILD_PARALLEL_CONDITIONAL_TRUE@am__objects_1 = H5FDmpiof.lo \
|
||||
@BUILD_PARALLEL_CONDITIONAL_TRUE@ HDF5mpio.lo H5FDmpioff.lo
|
||||
@ -141,9 +142,9 @@ am_libhdf5_fortran_la_OBJECTS = H5f90global.lo H5fortran_types.lo \
|
||||
H5f90kit.lo H5_f.lo H5Af.lo H5Df.lo H5Ef.lo H5Ff.lo H5Gf.lo \
|
||||
H5If.lo H5Lf.lo H5Of.lo H5Pf.lo H5Rf.lo H5Sf.lo H5Tf.lo \
|
||||
H5Zf.lo H5Aff$(F_STATUS).lo H5Dff$(F_STATUS).lo \
|
||||
H5Eff$(F_STATUS).lo H5Lff$(F_STATUS).lo H5Off$(F_STATUS).lo \
|
||||
H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Tff$(F_STATUS).lo \
|
||||
$(am__objects_1)
|
||||
H5Eff$(F_STATUS).lo H5Fff$(F_STATUS).lo H5Lff$(F_STATUS).lo \
|
||||
H5Off$(F_STATUS).lo H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo \
|
||||
H5Tff$(F_STATUS).lo $(am__objects_1)
|
||||
libhdf5_fortran_la_OBJECTS = $(am_libhdf5_fortran_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
@ -556,7 +557,7 @@ libhdf5_fortran_la_SOURCES = H5f90global.f90 \
|
||||
H5_DBLE_Interface$(F_DBLE).f90 \
|
||||
H5f90kit.c H5_f.c H5Af.c H5Df.c H5Ef.c H5Ff.c H5Gf.c \
|
||||
H5If.c H5Lf.c H5Of.c H5Pf.c H5Rf.c H5Sf.c H5Tf.c H5Zf.c \
|
||||
H5Aff$(F_STATUS).f90 H5Dff$(F_STATUS).f90 H5Eff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 \
|
||||
H5Aff$(F_STATUS).f90 H5Dff$(F_STATUS).f90 H5Eff$(F_STATUS).f90 H5Fff$(F_STATUS).f90 H5Lff$(F_STATUS).f90 \
|
||||
H5Off$(F_STATUS).f90 H5Pff$(F_STATUS).f90 H5Rff$(F_STATUS).f90 H5Tff$(F_STATUS).f90 $(PARALLEL_COND_SRC)
|
||||
|
||||
|
||||
@ -1101,6 +1102,7 @@ H5Dff.lo: $(srcdir)/H5Dff.f90 H5f90global.lo
|
||||
H5Aff$(F_STATUS).lo: $(srcdir)/H5Aff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Dff$(F_STATUS).lo: $(srcdir)/H5Dff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Eff$(F_STATUS).lo: $(srcdir)/H5Eff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Fff$(F_STATUS).lo: $(srcdir)/H5Fff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Lff$(F_STATUS).lo: $(srcdir)/H5Lff$(F_STATUS).f90 H5f90global.lo
|
||||
H5Off$(F_STATUS).lo: $(srcdir)/H5Off$(F_STATUS).f90 H5f90global.lo
|
||||
H5Pff$(F_STATUS).lo: $(srcdir)/H5Pff$(F_STATUS).f90 H5f90global.lo
|
||||
@ -1117,11 +1119,11 @@ H5Rff.lo: $(srcdir)/H5Rff.f90 H5f90global.lo
|
||||
H5Sff.lo: $(srcdir)/H5Sff.f90 H5f90global.lo
|
||||
H5Tff.lo: $(srcdir)/H5Tff.f90 H5f90global.lo
|
||||
H5Zff.lo: $(srcdir)/H5Zff.f90 H5f90global.lo
|
||||
H5_DBLE_Interface$(F_DBLE).lo: $(srcdir)/H5_DBLE_Interface$(F_DBLE).f90 H5Aff$(F_STATUS).lo H5Dff$(F_STATUS).lo H5Eff$(F_STATUS).lo H5Pff$(F_STATUS).lo
|
||||
H5_DBLE_Interface$(F_DBLE).lo: $(srcdir)/H5_DBLE_Interface$(F_DBLE).f90 H5Aff$(F_STATUS).lo H5Dff$(F_STATUS).lo H5Fff$(F_STATUS).lo H5Eff$(F_STATUS).lo H5Pff$(F_STATUS).lo
|
||||
HDF5.lo: $(srcdir)/HDF5.f90 H5f90global.lo H5_ff$(F_STATUS).lo H5_ff.lo H5Aff.lo H5Aff$(F_STATUS).lo \
|
||||
H5Dff.lo H5Dff$(F_STATUS).lo \
|
||||
H5Eff.lo H5Eff$(F_STATUS).lo \
|
||||
H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \
|
||||
H5Fff.lo H5Fff$(F_STATUS).lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \
|
||||
H5Off.lo H5Off$(F_STATUS).lo H5Pff.lo H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Rff.lo \
|
||||
H5Sff.lo H5Tff.lo H5Tff$(F_STATUS).lo H5Zff.lo \
|
||||
H5_DBLE_Interface$(F_DBLE).lo
|
||||
@ -1130,7 +1132,7 @@ HDF5mpio.lo: $(srcdir)/H5FDmpioff.f90 H5f90global.lo H5_ff$(F_STATUS).lo
|
||||
H5Aff.lo H5Aff$(F_STATUS).lo \
|
||||
H5Dff.lo H5Dff$(F_STATUS).lo \
|
||||
H5Eff.lo H5Eff$(F_STATUS).lo \
|
||||
H5Fff.lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \
|
||||
H5Fff.lo H5Fff$(F_STATUS).lo H5Gff.lo H5Iff.lo H5Lff.lo H5Lff$(F_STATUS).lo \
|
||||
H5Off.lo H5Off$(F_STATUS).lo H5Pff.lo H5Pff$(F_STATUS).lo H5Rff$(F_STATUS).lo H5Rff.lo \
|
||||
H5Sff.lo H5Tff.lo H5Tff$(F_STATUS).lo H5Zff.lo \
|
||||
H5_DBLE_Interface$(F_DBLE).lo H5FDmpioff.lo
|
||||
|
@ -233,8 +233,12 @@ for arg in $@ ; do
|
||||
*) allargs="$allargs $arg"
|
||||
if [ -s "$arg" ] ; then
|
||||
ext=`expr "$arg" : '.*\(\..*\)'`
|
||||
if [ "$ext" = ".f" -o "$ext" = ".F" -o "$ext" = ".f90" -o \
|
||||
"$ext" = ".for" -o "$ext" = ".FOR" -o "$ext" = ".F90" ] ; then
|
||||
if [ "$ext" = ".f" -o "$ext" = ".F" -o \
|
||||
"$ext" = ".for" -o "$ext" = ".FOR" -o \
|
||||
"$ext" = ".ftn" -o "$ext" = ".FTN" -o \
|
||||
["$ext" = ".f[0-9][0-9]"] -o \
|
||||
["$ext" = ".F[0-9][0-9]"] \
|
||||
] ; then
|
||||
do_compile="yes"
|
||||
compile_args="$compile_args $arg"
|
||||
fname=`basename $arg $ext`
|
||||
|
@ -228,6 +228,7 @@ H5F_mp_H5FGET_ACCESS_PLIST_F
|
||||
H5F_mp_H5FIS_HDF5_F
|
||||
H5F_mp_H5FGET_NAME_F
|
||||
H5F_mp_H5FGET_FILESIZE_F
|
||||
@H5_NOF03EXP@H5F_PROVISIONAL_mp_H5FGET_FILE_IMAGE_F
|
||||
; H5G
|
||||
H5G_mp_H5GOPEN_F
|
||||
H5G_mp_H5GCREATE_F
|
||||
|
@ -105,6 +105,7 @@ IF (HDF5_ENABLE_F2003)
|
||||
fortranlib_test_F03.f90
|
||||
tH5F.f90
|
||||
tH5E_F03.f90
|
||||
tH5F_F03.f90
|
||||
tH5L_F03.f90
|
||||
tH5O_F03.f90
|
||||
tH5P_F03.f90
|
||||
|
@ -68,7 +68,7 @@ fortranlib_test_1_8_SOURCES = fortranlib_test_1_8.f90 \
|
||||
|
||||
if FORTRAN_2003_CONDITIONAL_F
|
||||
fortranlib_test_F03_SOURCES = fortranlib_test_F03.f90 \
|
||||
tH5F.f90 tH5E_F03.f90 tH5L_F03.f90 tH5O_F03.f90 tH5P_F03.f90 tH5T_F03.f90
|
||||
tH5F.f90 tH5E_F03.f90 tH5F_F03.f90 tH5L_F03.f90 tH5O_F03.f90 tH5P_F03.f90 tH5T_F03.f90
|
||||
endif
|
||||
|
||||
|
||||
|
@ -136,11 +136,12 @@ fortranlib_test_1_8_LDADD = $(LDADD)
|
||||
fortranlib_test_1_8_DEPENDENCIES = libh5test_fortran.la $(LIBH5TEST) \
|
||||
$(LIBH5F) $(LIBHDF5)
|
||||
am__fortranlib_test_F03_SOURCES_DIST = fortranlib_test_F03.f90 \
|
||||
tH5F.f90 tH5E_F03.f90 tH5L_F03.f90 tH5O_F03.f90 tH5P_F03.f90 \
|
||||
tH5T_F03.f90
|
||||
tH5F.f90 tH5E_F03.f90 tH5F_F03.f90 tH5L_F03.f90 tH5O_F03.f90 \
|
||||
tH5P_F03.f90 tH5T_F03.f90
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@am_fortranlib_test_F03_OBJECTS = fortranlib_test_F03.$(OBJEXT) \
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5F.$(OBJEXT) \
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5E_F03.$(OBJEXT) \
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5F_F03.$(OBJEXT) \
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5L_F03.$(OBJEXT) \
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5O_F03.$(OBJEXT) \
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5P_F03.$(OBJEXT) \
|
||||
@ -527,7 +528,7 @@ fortranlib_test_1_8_SOURCES = fortranlib_test_1_8.f90 \
|
||||
tH5F.f90 tH5O.f90 tH5A_1_8.f90 tH5G_1_8.f90
|
||||
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@fortranlib_test_F03_SOURCES = fortranlib_test_F03.f90 \
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5F.f90 tH5E_F03.f90 tH5L_F03.f90 tH5O_F03.f90 tH5P_F03.f90 tH5T_F03.f90
|
||||
@FORTRAN_2003_CONDITIONAL_F_TRUE@ tH5F.f90 tH5E_F03.f90 tH5F_F03.f90 tH5L_F03.f90 tH5O_F03.f90 tH5P_F03.f90 tH5T_F03.f90
|
||||
|
||||
fflush1_SOURCES = fflush1.f90
|
||||
fflush2_SOURCES = fflush2.f90
|
||||
|
@ -163,6 +163,11 @@ PROGRAM fortranlibtest_F03
|
||||
CALL obj_info(ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing object info functions ', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_get_file_image(ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Testing get file image ', total_error)
|
||||
|
||||
|
||||
WRITE(*,*)
|
||||
|
||||
WRITE(*,*) ' ============================================ '
|
||||
|
171
fortran/test/tH5F_F03.f90
Normal file
171
fortran/test/tH5F_F03.f90
Normal file
@ -0,0 +1,171 @@
|
||||
!****h* root/fortran/test/tH5F_F03.f90
|
||||
!
|
||||
! NAME
|
||||
! tH5F_F03.f90
|
||||
!
|
||||
! FUNCTION
|
||||
! Test FORTRAN HDF5 H5F APIs which are dependent on FORTRAN 2003
|
||||
! features.
|
||||
!
|
||||
! COPYRIGHT
|
||||
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
! Copyright by The HDF Group. *
|
||||
! Copyright by the Board of Trustees of the University of Illinois. *
|
||||
! All rights reserved. *
|
||||
! *
|
||||
! This file is part of HDF5. The full HDF5 copyright notice, including *
|
||||
! terms governing use, modification, and redistribution, is contained in *
|
||||
! the files COPYING and Copyright.html. COPYING can be found at the root *
|
||||
! of the source code distribution tree; Copyright.html can be found at the *
|
||||
! root level of an installed copy of the electronic HDF5 document set and *
|
||||
! 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. *
|
||||
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
!
|
||||
! NOTES
|
||||
! Tests the H5F APIs functionalities of:
|
||||
! h5fget_file_image_f
|
||||
!
|
||||
! CONTAINS SUBROUTINES
|
||||
! test_get_file_image
|
||||
!
|
||||
!*****
|
||||
|
||||
! *****************************************
|
||||
! *** H 5 F T E S T S
|
||||
! *****************************************
|
||||
|
||||
SUBROUTINE test_get_file_image(total_error)
|
||||
!
|
||||
! Tests the wrapper for h5fget_file_image
|
||||
!
|
||||
USE HDF5
|
||||
USE ISO_C_BINDING
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
INTEGER, INTENT(INOUT) :: total_error ! returns error
|
||||
|
||||
CHARACTER(kind=c_char), ALLOCATABLE, DIMENSION(:), TARGET :: file_image_ptr ! Image from file
|
||||
CHARACTER(kind=c_char), ALLOCATABLE, DIMENSION(:), TARGET :: image_ptr ! Image from h5fget_file_image_f
|
||||
|
||||
INTEGER, DIMENSION(1:100), TARGET :: data ! Write data
|
||||
INTEGER :: i, file_sz
|
||||
INTEGER(hid_t) :: file_id = -1 ! File identifier
|
||||
INTEGER(hid_t) :: dset_id = -1 ! Dataset identifier
|
||||
INTEGER(hid_t) :: space_id = -1 ! Dataspace identifier
|
||||
INTEGER(hsize_t), DIMENSION(1:2) :: dims ! Dataset dimensions
|
||||
INTEGER(size_t) :: itmp_a, itmp_b ! General purpose integers
|
||||
INTEGER(size_t) :: image_size ! Size of image
|
||||
TYPE(C_PTR) :: f_ptr ! Pointer
|
||||
INTEGER(hid_t) :: fapl ! File access property
|
||||
INTEGER :: error ! Error flag
|
||||
|
||||
! Create new properties for file access
|
||||
CALL h5pcreate_f(H5P_FILE_ACCESS_F, fapl, error)
|
||||
CALL check("h5pcreate_f", error, total_error)
|
||||
|
||||
! Set standard I/O driver
|
||||
CALL h5pset_fapl_stdio_f(fapl, error)
|
||||
CALL check("h5pset_fapl_stdio_f", error, total_error)
|
||||
|
||||
! Create the file
|
||||
CALL h5fcreate_f("tget_file_image.h5", H5F_ACC_TRUNC_F, file_id, error, H5P_DEFAULT_F, fapl)
|
||||
CALL check("h5fcreate_f", error, total_error)
|
||||
|
||||
! Set up data space for new data set
|
||||
dims(1:2) = (/10,10/)
|
||||
|
||||
CALL h5screate_simple_f(2, dims, space_id, error)
|
||||
CALL check("h5screate_simple_f", error, total_error)
|
||||
|
||||
! Create a dataset
|
||||
CALL h5dcreate_f(file_id, "dset 0", H5T_NATIVE_INTEGER, space_id, dset_id, error)
|
||||
CALL check("h5dcreate_f", error, total_error)
|
||||
|
||||
! Write some data to the data set
|
||||
DO i = 1, 100
|
||||
data(i) = i
|
||||
ENDDO
|
||||
|
||||
f_ptr = C_LOC(data(1))
|
||||
CALL h5dwrite_f(dset_id, H5T_NATIVE_INTEGER, f_ptr, error)
|
||||
CALL check("h5dwrite_f",error, total_error)
|
||||
|
||||
! Flush the file
|
||||
CALL h5fflush_f(file_id, H5F_SCOPE_GLOBAL_F, error)
|
||||
CALL check("h5fflush_f",error, total_error)
|
||||
|
||||
! Open the test file using standard I/O calls
|
||||
OPEN(UNIT=10,FILE='tget_file_image.h5', ACCESS='STREAM')
|
||||
! Get the size of the test file
|
||||
!
|
||||
! Since we use the eoa to calculate the image size, the file size
|
||||
! may be larger. This is OK, as long as (in this specialized instance)
|
||||
! the remainder of the file is all '\0's.
|
||||
!
|
||||
! With latest mods to truncate call in core file drive,
|
||||
! file size should match image size; get the file size
|
||||
INQUIRE(UNIT=10, SIZE=file_sz)
|
||||
CLOSE(UNIT=10)
|
||||
|
||||
! I. Get buffer size needed to hold the buffer
|
||||
|
||||
! A. Preferred way to get the size
|
||||
f_ptr = C_NULL_PTR
|
||||
CALL h5fget_file_image_f(file_id, f_ptr, INT(0, size_t), error, image_size)
|
||||
CALL check("h5fget_file_image_f",error, total_error)
|
||||
CALL verify("h5fget_file_image_f", file_sz, INT(image_size), total_error)
|
||||
|
||||
! B. f_ptr set to point to an incorrect buffer, should pass anyway
|
||||
f_ptr = C_LOC(data(1))
|
||||
itmp_a = 1
|
||||
CALL h5fget_file_image_f(file_id, f_ptr, itmp_a, error, image_size)
|
||||
CALL check("h5fget_file_image_f",error, total_error)
|
||||
CALL VERIFY("h5fget_file_image_f", INT(itmp_a), 1, total_error) ! Routine should not change the value
|
||||
CALL VERIFY("h5fget_file_image_f", file_sz, INT(image_size), total_error)
|
||||
|
||||
! Allocate a buffer of the appropriate size
|
||||
ALLOCATE(image_ptr(1:image_size))
|
||||
|
||||
! Load the image of the file into the buffer
|
||||
f_ptr = C_LOC(image_ptr(1)(1:1))
|
||||
CALL h5fget_file_image_f(file_id, f_ptr, image_size, error)
|
||||
CALL check("h5fget_file_image_f",error, total_error)
|
||||
|
||||
! Close dset and space
|
||||
CALL h5dclose_f(dset_id, error)
|
||||
CALL check("h5dclose_f", error, total_error)
|
||||
CALL h5sclose_f(space_id, error)
|
||||
CALL check("h5sclose_f", error, total_error)
|
||||
! Close the test file
|
||||
CALL h5fclose_f(file_id, error)
|
||||
CALL check("h5fclose_f",error, total_error)
|
||||
|
||||
! Allocate a buffer for the test file image
|
||||
ALLOCATE(file_image_ptr(1:image_size))
|
||||
|
||||
! Open the test file using standard I/O calls
|
||||
OPEN(UNIT=10,FILE='tget_file_image.h5', ACCESS='STREAM')
|
||||
|
||||
! Read the test file from disk into the buffer
|
||||
DO i = 1, image_size
|
||||
READ(10) file_image_ptr(i)
|
||||
ENDDO
|
||||
|
||||
CLOSE(10)
|
||||
|
||||
! verify the file and the image contain the same data
|
||||
DO i = 1, image_size
|
||||
! convert one byte to an unsigned integer
|
||||
IF( ICHAR(file_image_ptr(i)) .NE. ICHAR(image_ptr(i)))THEN
|
||||
total_error = total_error + 1
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
! release resources
|
||||
DEALLOCATE(file_image_ptr,image_ptr)
|
||||
|
||||
END SUBROUTINE test_get_file_image
|
Loading…
Reference in New Issue
Block a user