get_itemtype Function

public function get_itemtype(state, short_name, rc) result(itemtype)

Arguments

Type IntentOptional Attributes Name
type(ESMF_State) :: state
character(len=*), intent(in) :: short_name
integer, intent(out) :: rc

Return Value type(ESMF_StateItem_Flag)


Calls

proc~~get_itemtype~~CallsGraph proc~get_itemtype get_itemtype anyexceptions anyexceptions proc~get_itemtype->anyexceptions assert_that assert_that proc~get_itemtype->assert_that esmf_stateget esmf_stateget proc~get_itemtype->esmf_stateget sourcelocation sourcelocation proc~get_itemtype->sourcelocation

Called by

proc~~get_itemtype~~CalledByGraph proc~get_itemtype get_itemtype proc~check_field_value check_field_value proc~check_field_value->proc~get_itemtype proc~check_item_type check_item_type proc~check_item_type->proc~get_itemtype

Source Code

   function get_itemtype(state, short_name, rc) result(itemtype)
      type(ESMF_StateItem_Flag) :: itemtype
      type(ESMF_State) :: state
      character(*), intent(in) :: short_name
      integer, intent(out) :: rc

      integer :: status
      integer :: idx
      type(ESMF_State) :: substate, tmp_state
      character(:), allocatable :: name

      integer :: itemcount
      
      rc = 0
      name = short_name
      substate = state

      do
         idx = index(name, '/')
         if (idx == 0) then
            call ESMF_StateGet(substate, name, itemtype=itemtype, _RC)
            return
         end if
         call ESMF_StateGet(substate, name(:idx-1), tmp_state, rc=status)
         @assert_that(short_name, status, is(0))
         name = name(idx+1:)
         substate = tmp_state
      end do

      rc = 0
   end function get_itemtype