Functor Imperative.Digraph.Concrete


module Concrete: 
functor (V : Sig.COMPARABLE) -> Sig.I with type V.t = V.t and type V.label = V.t and type E.t = V.t * V.t
Imperative Directed Unlabeled Graphs
Parameters:
V : Sig.COMPARABLE

include Sig.G
val create : unit -> t
Return an empty graph.
val copy : t -> t
copy g returns a copy of g. Vertices and edges (and eventually marks, see module Mark) are duplicated.
val add_vertex : t -> vertex -> unit
add_vertex g v adds the vertex v from the graph g. Do nothing if v is already in g.
val remove_vertex : t -> vertex -> unit
remove g v removes the vertex v from the graph g (and all the edges going from v in g). Do nothing if v is not in g.
val add_edge : t -> vertex -> vertex -> unit
add_edge g v1 v2 adds an edge from the vertex v1 to the vertex v2 in the graph g. Add also v1 (resp. v2) in g if v1 (resp. v2) is not in g. Do nothing if this edge is already in g.
val add_edge_e : t -> edge -> unit
add_edge_e g e adds the edge e in the graph g. Add also E.src e (resp. E.dst e) in g if E.src e (resp. E.dst e) is not in g. Do nothing if e is already in g.
val remove_edge : t -> vertex -> vertex -> unit
remove_edge g v1 v2 removes the edge going from v1 to v2 from the graph g. Raise Invalid_argument if v1 or v2 are not in g. Do nothing if this edge is not in g.
val remove_edge_e : t -> edge -> unit
remove_edge_e g e removes the edge e from the graph g. Raise Invalid_argument if E.src e or E.dst e are not in g. Do nothing if e is not in g.