Module OASISGraph

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