Write nodes array to JSON
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | unit |
Output unit receiving the JSON text |
||
| type(onnx_node_type), | intent(in), | dimension(:) | :: | nodes |
Node collection to serialise |
|
| integer, | intent(in) | :: | num_nodes |
Number of populated nodes in the collection |
subroutine write_json_nodes(unit, nodes, num_nodes) !! Write nodes array to JSON implicit none ! Arguments integer, intent(in) :: unit !! Output unit receiving the JSON text type(onnx_node_type), intent(in), dimension(:) :: nodes !! Node collection to serialise integer, intent(in) :: num_nodes !! Number of populated nodes in the collection ! Local variables integer :: i, j !! Node and tensor index counters write(unit, '(A)') ' "node": [' do i = 1, num_nodes write(unit, '(A)') ' {' ! Write inputs if(allocated(nodes(i)%inputs) .and. size(nodes(i)%inputs) .gt. 0)then write(unit, '(A)', advance='no') ' "input": [' do j = 1, size(nodes(i)%inputs) if(j .gt. 1) write(unit, '(A)', advance='no') ', ' write(unit, '(A,A,A)', advance='no') '"', & trim(adjustl(nodes(i)%inputs(j))), '"' end do write(unit, '(A)') '],' end if ! Write outputs if(allocated(nodes(i)%outputs))then write(unit, '(A)', advance='no') ' "output": [' do j = 1, size(nodes(i)%outputs) if(j .gt. 1) write(unit, '(A)', advance='no') ', ' write(unit, '(A,A,A)', advance='no') '"', & trim(adjustl(nodes(i)%outputs(j))), '"' end do write(unit, '(A)') '],' end if ! Name write(unit, '(A,A,A)', advance='no') ' "name": "', & trim(adjustl(nodes(i)%name)), '"' ! OpType write(unit, '(A)') ',' write(unit, '(A,A,A)', advance='no') ' "opType": "', & trim(adjustl(nodes(i)%op_type)), '"' ! Attributes if(len_trim(nodes(i)%attributes_json) .gt. 0)then write(unit, '(A)') ',' write(unit, '(A)') trim(nodes(i)%attributes_json) else write(unit, '(A)') '' end if if(i .lt. num_nodes)then write(unit, '(A)') ' },' else write(unit, '(A)') ' }' end if end do write(unit, '(A)') ' ]' end subroutine write_json_nodes