ESMF_HConfigIterEQ Function

private function ESMF_HConfigIterEQ(HConfig1, HConfig2)

Arguments

Type IntentOptional Attributes Name
type(ESMF_HConfigIter), intent(in) :: HConfig1
type(ESMF_HConfigIter), intent(in) :: HConfig2

Return Value logical


Calls

proc~~esmf_hconfigitereq~~CallsGraph proc~esmf_hconfigitereq ESMF_HConfigIterEQ interface~c_esmc_hconfigequal c_ESMC_HConfigEqual proc~esmf_hconfigitereq->interface~c_esmc_hconfigequal proc~esmf_hconfigitergetinit ESMF_HConfigIterGetInit proc~esmf_hconfigitereq->proc~esmf_hconfigitergetinit

Called by

proc~~esmf_hconfigitereq~~CalledByGraph proc~esmf_hconfigitereq ESMF_HConfigIterEQ interface~operator(==)~6 operator(==) interface~operator(==)~6->proc~esmf_hconfigitereq proc~esmf_hconfigiterne ESMF_HConfigIterNE proc~esmf_hconfigiterne->proc~esmf_hconfigitereq interface~operator(SLASH=)~6 operator(/=) interface~operator(SLASH=)~6->proc~esmf_hconfigiterne

Source Code

  function ESMF_HConfigIterEQ(HConfig1, HConfig2)
!
! !RETURN VALUE:
    logical :: ESMF_HConfigIterEQ

! !ARGUMENTS:
    type(ESMF_HConfigIter), intent(in) :: HConfig1
    type(ESMF_HConfigIter), intent(in) :: HConfig2

! !DESCRIPTION:
!   Test if both {\tt HConfig1} and {\tt HConfig2} alias the same
!   ESMF HConfigIter object.
!
!EOPI
!-------------------------------------------------------------------------------

    ESMF_INIT_TYPE init1, init2
    type(ESMF_Logical) :: isEqual

    ! Use the following logic, rather than "ESMF-INIT-CHECK-DEEP", to gain
    ! init checks on both args, and in the case where both are uninitialized,
    ! to distinguish equality based on uninitialized type (uncreated,
    ! deleted).

    ! check inputs
    init1 = ESMF_HConfigIterGetInit(HConfig1)
    init2 = ESMF_HConfigIterGetInit(HConfig2)

    ! initialize return value
    ESMF_HConfigIterEQ = .false.

    ! TODO: this line must remain split in two for SunOS f90 8.3 127000-03
    if (init1 .eq. ESMF_INIT_CREATED .and. &
      init2 .eq. ESMF_INIT_CREATED) then

       ! Call into the C++ interface to determine equality
       ! For now use HConfig equality since HConfig iterators and HConfig are
       ! stored in the same class
       call c_ESMC_HConfigEqual(HConfig1, HConfig2, isEqual)

       ! Translate from ESMF logical to Fortran logical
       ESMF_HConfigIterEQ = isEqual

    endif

  end function ESMF_HConfigIterEQ