Merge commit 'fd24c9c2a193972ea17e94ba848d87d2aeb43028' into YAML-error-message
changes made by @p.eisenlohr in another branch
This commit is contained in:
commit
0a2810230e
|
@ -67,9 +67,9 @@ module YAML_types
|
|||
procedure :: &
|
||||
tNode_get_byKey_asStrings => tNode_get_byKey_asStrings
|
||||
procedure :: &
|
||||
getIndex => tNode_get_byKey_asIndex
|
||||
getKey => tNode_get_byIndex_asKey
|
||||
procedure :: &
|
||||
getKey => tNode_getKey_byIndex
|
||||
getIndex => tNode_get_byKey_asIndex
|
||||
procedure :: &
|
||||
contains => tNode_contains
|
||||
|
||||
|
@ -417,13 +417,12 @@ function tNode_get_byIndex(self,i) result(node)
|
|||
call IO_error(706,ext_msg='Expected List')
|
||||
endif
|
||||
|
||||
item => self_%first
|
||||
|
||||
if (i < 1 .or. i > self_%length) call IO_error(150,ext_msg='tNode_get_byIndex')
|
||||
|
||||
j = 1
|
||||
item => self_%first
|
||||
do while(j<i)
|
||||
do j = 2,i
|
||||
item => item%next
|
||||
j = j + 1
|
||||
enddo
|
||||
node => item%node
|
||||
|
||||
|
@ -617,7 +616,7 @@ end function tNode_get_byIndex_asStrings
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Returns the key in a dictionary as a string
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
function tNode_getKey_byIndex(self,i) result(key)
|
||||
function tNode_get_byIndex_asKey(self,i) result(key)
|
||||
|
||||
class(tNode), intent(in), target :: self
|
||||
integer, intent(in) :: i
|
||||
|
@ -630,19 +629,16 @@ function tNode_getKey_byIndex(self,i) result(key)
|
|||
if (self%isDict()) then
|
||||
dict => self%asDict()
|
||||
item => dict%first
|
||||
do j = 1, dict%length
|
||||
if(j == i) then
|
||||
key = item%key
|
||||
exit
|
||||
else
|
||||
do j = 1, min(i,dict%length)-1
|
||||
item => item%next
|
||||
endif
|
||||
enddo
|
||||
else
|
||||
call IO_error(706,ext_msg='Expected dict')
|
||||
endif
|
||||
|
||||
end function tNode_getKey_byIndex
|
||||
key = item%key
|
||||
|
||||
end function tNode_get_byIndex_asKey
|
||||
|
||||
|
||||
!-------------------------------------------------------------------------------------------------
|
||||
|
@ -738,6 +734,7 @@ function tNode_get_byKey_asFloat(self,k,defaultVal) result(nodeAsFloat)
|
|||
|
||||
class(tNode), pointer :: node
|
||||
type(tScalar), pointer :: scalar
|
||||
character(len=:), allocatable :: str
|
||||
|
||||
if (self%contains(k)) then
|
||||
node => self%get(k)
|
||||
|
@ -1007,23 +1004,18 @@ function tNode_get_byKey_asIndex(self,key) result(keyIndex)
|
|||
character(len=*), intent(in) :: key
|
||||
|
||||
integer :: keyIndex
|
||||
integer :: i
|
||||
type(tDict), pointer :: dict
|
||||
type(tItem), pointer :: item
|
||||
|
||||
dict => self%asDict()
|
||||
item => dict%first
|
||||
keyIndex = -1
|
||||
do i = 1, dict%length
|
||||
if(key == item%key) then
|
||||
keyIndex = i
|
||||
exit
|
||||
else
|
||||
keyIndex = 1
|
||||
do while (associated(item%next) .and. item%key /= key)
|
||||
item => item%next
|
||||
endif
|
||||
keyIndex = keyIndex+1
|
||||
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
|
||||
|
@ -1307,7 +1299,7 @@ subroutine tDict_set(self,key,node)
|
|||
if (item%key == key) exit
|
||||
item => item%next
|
||||
end do searchExisting
|
||||
if (.not. item%key == key) then
|
||||
if (item%key /= key) then
|
||||
allocate(item%next)
|
||||
item => item%next
|
||||
self%length = self%length + 1
|
||||
|
|
Loading…
Reference in New Issue