simplified tNode_get_byKey_asIndex and tNode_getKey_byIndex; syntax polishing

This commit is contained in:
Philip Eisenlohr 2021-02-27 13:14:53 -05:00
parent 4edf8e1c6c
commit c0620037a1
1 changed files with 32 additions and 42 deletions

View File

@ -435,13 +435,12 @@ function tNode_get_byIndex(self,i) result(node)
integer :: j integer :: j
self_ => self%asList() self_ => self%asList()
item => self_%first
if(i < 1 .or. i > self_%length) call IO_error(150,ext_msg='tNode_get_byIndex') if(i < 1 .or. i > self_%length) call IO_error(150,ext_msg='tNode_get_byIndex')
j = 1 do j = 2,i
item => self_%first
do while(j<i)
item => item%next item => item%next
j = j + 1
enddo enddo
node => item%node node => item%node
@ -615,14 +614,10 @@ function tNode_getKey_byIndex(self,i) result(key)
dict => self%asDict() dict => self%asDict()
item => dict%first item => dict%first
do j = 1, dict%length do j = 1, min(i,dict%length)-1
if(j == i) then
key = item%key
exit
else
item => item%next item => item%next
endif
enddo enddo
key = item%key
end function tNode_getKey_byIndex end function tNode_getKey_byIndex
@ -954,23 +949,18 @@ function tNode_get_byKey_asIndex(self,key) result(keyIndex)
character(len=*), intent(in) :: key character(len=*), intent(in) :: key
integer :: keyIndex integer :: keyIndex
integer :: i
type(tDict), pointer :: dict type(tDict), pointer :: dict
type(tItem), pointer :: item type(tItem), pointer :: item
dict => self%asDict() dict => self%asDict()
item => dict%first item => dict%first
keyIndex = -1 keyIndex = 1
do i = 1, dict%length do while (associated(item%next) .and. item%key /= key)
if(key == item%key) then
keyIndex = i
exit
else
item => item%next item => item%next
endif keyIndex = keyIndex+1
enddo enddo
if(keyIndex == -1) call IO_error(140,ext_msg=key) if (item%key /= key) call IO_error(140,ext_msg=key)
end function tNode_get_byKey_asIndex end function tNode_get_byKey_asIndex
@ -1254,7 +1244,7 @@ subroutine tDict_set(self,key,node)
if (item%key == key) exit if (item%key == key) exit
item => item%next item => item%next
end do searchExisting end do searchExisting
if (.not. item%key == key) then if (item%key /= key) then
allocate(item%next) allocate(item%next)
item => item%next item => item%next
self%length = self%length + 1 self%length = self%length + 1