fdoc

functionline_haspureprivate

pure integer function line_has(line, keyword, name)

The position of keyword followed by name in line, or 0.

Arguments

NameTypeIntentAttributesDescription
linecharacter(len=*)in

the line

keywordcharacter(len=*)in

the keyword

namecharacter(len=*)in

the name

Result

NameTypeAttributesDescription
line_hasinteger

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

Graphs

Calls

Called by