parse_primary_layer_id Subroutine

subroutine parse_primary_layer_id(node_name, layer_id, is_primary)

Parse node_ names and mark true only for primary layer nodes.

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

logical, intent(out) :: is_primary

Whether node_name matches primary pattern node_


Source Code

  subroutine parse_primary_layer_id(node_name, layer_id, is_primary)
    !! Parse node_<id> names and mark true only for primary layer nodes.
    implicit none

    ! Arguments
    character(*), intent(in) :: node_name
    !! Candidate ONNX node name
    integer, intent(out) :: layer_id
    !! Parsed layer id when present
    logical, intent(out) :: is_primary
    !! Whether node_name matches primary pattern node_<id>

    ! Local variables
    integer :: stat
    !! Read status for integer parse
    character(128) :: rest
    !! Node name suffix after node_ prefix

    layer_id = -1
    is_primary = .false.

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

    read(rest, *, iostat=stat) layer_id
    if(stat .eq. 0 .and. layer_id .gt. 0) is_primary = .true.

  end subroutine parse_primary_layer_id