vertex Derived Type

type, private :: vertex

a vertex of a directed acyclic graph (DAG)


Inherited by

type~~vertex~~InheritedByGraph type~vertex vertex type~dag dag type~dag->type~vertex vertices

Components

Type Visibility Attributes Name Initial
integer, private, dimension(:), allocatable :: edges

these are the vertices that this vertex depends on

integer, private :: ivertex = 0

vertex number

logical, private :: checking = .false.

used for toposort

logical, private :: marked = .false.

used for toposort

character(len=:), private, allocatable :: label

used for diagraph

character(len=:), private, allocatable :: attributes

used for diagraph


Type-Bound Procedures

generic, public :: set_edges => set_edge_vector, add_edge

  • private subroutine set_edge_vector(me, edges)

    specify the edge indices for this vertex

    Arguments

    Type IntentOptional Attributes Name
    class(vertex), intent(inout) :: me
    integer, intent(in), dimension(:) :: edges
  • private subroutine add_edge(me, edge)

    add an edge index for this vertex

    Arguments

    Type IntentOptional Attributes Name
    class(vertex), intent(inout) :: me
    integer, intent(in) :: edge

procedure, public :: set_edge_vector

  • private subroutine set_edge_vector(me, edges)

    specify the edge indices for this vertex

    Arguments

    Type IntentOptional Attributes Name
    class(vertex), intent(inout) :: me
    integer, intent(in), dimension(:) :: edges

procedure, public :: add_edge

  • private subroutine add_edge(me, edge)

    add an edge index for this vertex

    Arguments

    Type IntentOptional Attributes Name
    class(vertex), intent(inout) :: me
    integer, intent(in) :: edge

Source Code

    type :: vertex
        !! a vertex of a directed acyclic graph (DAG)
        private
        integer,dimension(:),allocatable :: edges  !! these are the vertices that this vertex depends on
        integer :: ivertex = 0 !! vertex number
        logical :: checking = .false.  !! used for toposort
        logical :: marked = .false.    !! used for toposort
        character(len=:),allocatable :: label      !! used for diagraph
        character(len=:),allocatable :: attributes !! used for diagraph
    contains
        generic :: set_edges => set_edge_vector, add_edge
        procedure :: set_edge_vector
        procedure :: add_edge
    end type vertex