From 4e42b24ccea4bd39b0c60924ec9e5cffc8b66fb1 Mon Sep 17 00:00:00 2001 From: Scot Breitenfeld Date: Fri, 17 Apr 2009 09:26:52 -0500 Subject: [svn-r16774] Description: Added Fortran API H5Iis_valid_f Platforms tested: smirom - ifort pgf90 --- fortran/src/H5If.c | 30 ++++++++++++++++++++++++++++++ fortran/src/H5Iff.f90 | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/fortran/src/H5If.c b/fortran/src/H5If.c index 5368861..e8b54f0 100644 --- a/fortran/src/H5If.c +++ b/fortran/src/H5If.c @@ -211,3 +211,33 @@ nh5iget_file_id_c(hid_t_f *obj_id, hid_t_f *file_id) done: return ret_value; } + +/*---------------------------------------------------------------------------- + * Name: h5iis_valid_c + * Purpose: Calls H5Iis_valid + * Inputs: obj_id - object identifier + * Outputs: 0 = false, 1 = true + * Returns: 0 on success, -1 on failure + * Programmer: Elena Pourmal + * Tuesday, August 24, 2004 + * Modifications: + *---------------------------------------------------------------------------*/ +int_f +nh5iis_valid_c(hid_t_f *obj_id, int_f *c_valid) +{ + int ret_value; + htri_t c_ret_value; + + /* + * Call H5Iis_valid + */ + if ((c_ret_value = H5Iis_valid(*obj_id)) < 0) + HGOTO_DONE(FAIL); + + /* Set output & return values */ + *c_valid = (int_f)c_ret_value; + ret_value=0; + +done: + return ret_value; +} diff --git a/fortran/src/H5Iff.f90 b/fortran/src/H5Iff.f90 index 0b70f8b..83587ce 100644 --- a/fortran/src/H5Iff.f90 +++ b/fortran/src/H5Iff.f90 @@ -306,5 +306,47 @@ hdferr = h5iget_file_id_c(obj_id, file_id) END SUBROUTINE h5iget_file_id_f +!---------------------------------------------------------------------- +! Name: H5Iis_valid_f +! +! Purpose: Check if an ID is valid without producing an error message +! +! Inputs: id - identifier +! Outputs: +! valid - status of id as a valid identifier +! hdferr: - error code +! Success: 0 +! Failure: -1 +! Programmer: M. Scot Breitenfeld +! April 13, 2009 +! +! Comment: +!---------------------------------------------------------------------- + SUBROUTINE h5iis_valid_f(id, valid, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: id ! Identifier + LOGICAL, INTENT(OUT) :: valid ! Status of id as a valid identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + INTEGER :: c_valid ! 0 = .false, 1 = .true. + + INTERFACE + INTEGER FUNCTION h5iis_valid_c(id, c_valid) + USE H5GLOBAL + !DEC$IF DEFINED(HDF5F90_WINDOWS) + !DEC$ATTRIBUTES C,reference,decorate,alias:'H5IIS_VALID_C':: h5iis_valid_c + !DEC$ENDIF + INTEGER(HID_T), INTENT(IN) :: id ! Identifier + INTEGER :: c_valid + END FUNCTION h5iis_valid_c + END INTERFACE + + hdferr = h5iis_valid_c(id, c_valid) + + valid = .FALSE. ! Default + IF(c_valid.EQ.1) valid = .TRUE. + + END SUBROUTINE h5iis_valid_f + + END MODULE H5I -- cgit v0.12