subroutineconnectprivate
subroutine connect(relation, from, to, label)
Add an edge, once. With label, the edge is dashed and labelled: components of a type have one.
Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
| relation | type(adjacency_t) | inout | the relation | |
| from | integer | in | where it starts | |
| to | integer | in | where it ends | |
| label | character(len=*) | in | optional | its label |
Calls
Source
Show the code
subroutine connect(relation, from, to, label)
type(adjacency_t), intent(inout) :: relation !! the relation
integer, intent(in) :: from !! where it starts
integer, intent(in) :: to !! where it ends
character(len=*), intent(in), optional :: label !! its label
integer :: k
if (from == to .and. .not. present(label)) return
if (allocated(relation%out(from)%ids)) then
do k = 1, size(relation%out(from)%ids)
if (relation%out(from)%ids(k) /= to) cycle
if (present(label)) then
if (len(relation%labels(from)%text(k)%s) > 0) then
relation%labels(from)%text(k)%s = relation%labels(from)%text(k)%s//', '//label
end if
end if
return
end do
end if
call push_int(relation%out(from)%ids, to)
call push_int(relation%in(to)%ids, from)
if (present(label)) then
call push(relation%labels(from)%text, label)
else
call push(relation%labels(from)%text, '')
end if
end subroutine connect