subroutine ESMF_StateItemGet(stateItem, name, rc)
!
! !ARGUMENTS:
type(ESMF_StateItem), intent(in) :: stateItem
character(len=*), intent(out), optional :: name
integer, intent(out), optional :: rc
!
! !DESCRIPTION:
! Query a StateItem for information.
!
! The arguments are:
! \begin{description}
! \item[stateItem]
! {\tt ESMF\_StateItem} queried.
! \item [{[name]}]
! Name of the contained State item.
! \item[{[rc]}]
! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
! \end{description}
!
!EOPI
!------------------------------------------------------------------------------
integer :: localrc ! local return code
! Initialize return code; assume failure until success is certain
localrc = ESMF_RC_NOT_IMPL
if (present(rc)) rc = ESMF_RC_NOT_IMPL
select case (stateItem%otype%ot)
case (ESMF_STATEITEM_FIELD%ot)
call ESMF_FieldGet(stateItem%datap%fp, name=name, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) &
return
case (ESMF_STATEITEM_FIELDBUNDLE%ot)
call ESMF_FieldBundleGet(stateItem%datap%fbp, name=name, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) &
return
case (ESMF_STATEITEM_ARRAY%ot)
call ESMF_ArrayGet(stateItem%datap%ap, name=name, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) &
return
case (ESMF_STATEITEM_ARRAYBUNDLE%ot)
call ESMF_ArrayBundleGet(stateItem%datap%abp, name=name, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) &
return
case (ESMF_STATEITEM_ROUTEHANDLE%ot)
call ESMF_RouteHandleGet(stateItem%datap%rp, name=name, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) &
return
case (ESMF_STATEITEM_STATE%ot)
if (present(name)) then
name = stateItem%namep
endif
case default
call ESMF_LogSetError(rcToCheck=ESMF_RC_INTNRL_BAD, &
msg="- unsupported StateItemType", &
ESMF_CONTEXT, rcToReturn=rc)
name = '(unknown)'
return ! bail out
end select
! Return successfully
if (present(rc)) rc = ESMF_SUCCESS
end subroutine ESMF_StateItemGet