module OASISGraph: sig
.. end
type
vertex = int
module SetInt: Set.Make
(
sig
type
t = int
val compare : int -> int -> int
end
)
type 'a
t = {
|
mutable vertexes : ('a * SetInt.t Pervasives.ref) array ; |
|
values : ('a, int) Hashtbl.t ; |
}
val create : int -> 'a t
val copy : 'a t -> 'a t
val value_of_vertex : 'a t -> int -> 'a
val vertex_of_value : 'a t -> 'a -> int
val add_vertex : 'a t -> 'a -> int
val add_edge : 'a t -> int -> SetInt.elt -> unit
val topological_sort : 'a t -> int list
val fold_edges : (int -> SetInt.elt -> 'a -> 'a) -> 'b t -> 'a -> 'a
val transitive_closure : 'a t -> unit