parse_any_node_layer_id Subroutine

subroutine parse_any_node_layer_id(node_name, layer_id, found)

Parse layer id from node_X or node_X_* names.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: node_name

Candidate ONNX node name

integer, intent(out) :: layer_id

Parsed layer id when present

integer, intent(out) :: found

Positive when parsing succeeded, zero otherwise


Source Code

  subroutine parse_any_node_layer_id( &
       node_name, layer_id, found)
    !! Parse layer id from node_X or node_X_* names.
    implicit none

    ! Arguments
    character(*), intent(in) :: node_name
    !! Candidate ONNX node name
    integer, intent(out) :: layer_id
    !! Parsed layer id when present
    integer, intent(out) :: found
    !! Positive when parsing succeeded, zero otherwise

    ! Local variables
    integer :: stat, upos
    !! Read status and underscore position
    character(128) :: rest
    !! Node name suffix after node_ prefix

    layer_id = -1
    found = 0

    if(index(trim(node_name), 'node_') .ne. 1) return
    rest = trim(node_name(6:))

    ! Find end of the integer part
    upos = index(rest, '_')
    if(upos .gt. 0)then
       read(rest(1:upos-1), *, iostat=stat) layer_id
    else
       read(rest, *, iostat=stat) layer_id
    end if

    if(stat .eq. 0 .and. layer_id .gt. 0) found = 1

  end subroutine parse_any_node_layer_id