Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_LocStreamType), | pointer | :: | lstypep | |||
integer, | intent(out), | optional | :: | rc |
subroutine ESMF_LocStreamDestruct(lstypep,rc) ! ! !ARGUMENTS: type (ESMF_LocStreamType), pointer :: lstypep integer, intent(out), optional :: rc ! ! !DESCRIPTION: ! Destruct an {\tt ESMF\_LocStream} object and all appropriate ! internal structures. ! ! The arguments are: ! \begin{description} ! \item[lstypep] ! locstream to destruct ! \item[{[rc]}] ! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. ! \end{description} ! !EOPI integer :: localrc ! Error status integer :: i type(ESMF_Status) :: status ! Initialize return code; assume failure until success is certain if (present(rc)) rc = ESMF_RC_NOT_IMPL call ESMF_BaseGetStatus(lstypep%base, status, rc=localrc) if (ESMF_LogFoundError(localrc, & ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return if (status .eq. ESMF_STATUS_READY) then ! Destroy key Arrays do i=1,lstypep%keyCount if (lstypep%destroyKeys(i)) then call ESMF_ArrayDestroy(lstypep%keys(i), rc=localrc) if (ESMF_LogFoundError(localrc, & ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return endif enddo ! destroy distgrid if (lstypep%destroyDistGrid) then !! destroy distgrid call ESMF_DistGridDestroy(lstypep%distgrid, rc=localrc) if (ESMF_LogFoundError(localrc, & ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return endif ! Deallocate space for key data (if its been allocated) if (lstypep%keyCount .gt. 0) then deallocate (lstypep%keyNames) deallocate (lstypep%keyUnits) deallocate (lstypep%keyLongNames) deallocate( lstypep%keys) deallocate( lstypep%destroyKeys) endif endif ! mark object invalid call ESMF_BaseSetStatus(lstypep%base, ESMF_STATUS_INVALID, rc=localrc) if (ESMF_LogFoundError(localrc, & ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return ! return successfully if (present(rc)) rc = ESMF_SUCCESS end subroutine ESMF_LocStreamDestruct