functionline_haspureprivate
pure integer function line_has(line, keyword, name)
The position of keyword followed by name in line, or 0.
Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
| line | character(len=*) | in | the line | |
| keyword | character(len=*) | in | the keyword | |
| name | character(len=*) | in | the name |
Result
| Name | Type | Attributes | Description |
|---|---|---|---|
| line_has | integer |
Calls
Source
Show the code
pure integer function line_has(line, keyword, name)
character(len=*), intent(in) :: line !! the line
character(len=*), intent(in) :: keyword !! the keyword
character(len=*), intent(in) :: name !! the name
integer :: k, n
line_has = 0
do k = 1, len(line) - len(keyword) + 1
if (.not. word_at(line, k, keyword)) cycle
n = k + len(keyword)
do while (n <= len(line))
if (index(' :,', line(n:n)) == 0) exit
if (line(n:n) == ',') exit
n = n + 1
end do
if (n <= len(line)) then
if (word_at(line, n, name)) then
line_has = k
return
end if
end if
end do
if (keyword == 'type' .and. index(line, '::') > 0) then
n = index(line, '::') + 2
n = n + verify(line(n:)//'x', ' ') - 1
if (word_at(line, n, name) .and. starts_word(adjustl(line), 'type')) line_has = 1
end if
end function line_has