module Dug: sig .. end
Datatype Usage Graphs
module Id: Reins.Types.Integral
type ('a, 'b, 'c) kind =
| |
Generator of 'a |
| |
Mutator of 'b |
| |
Observer of 'c |
type ('a, 'b, 'c) edge = {
|
target : Id.t; |
|
op : ('a, 'b, 'c) kind; |
|
pos : int; |
}
type ('a, 'b, 'c) t = {
|
mutable current_id : Id.t; |
|
nodes : (Id.t, ('a, 'b, 'c) kind) Hashtbl.t; |
|
edges : (Id.t, ('a, 'b, 'c) edge) Hashtbl.t; |
}
val create : unit -> ('a, 'b, 'c) t
val clear : ('a, 'b, 'c) t -> unit
val size : ('a, 'b, 'c) t -> Id.t
val fresh_id : ('a, 'b, 'c) t -> Id.t
val is_mutator : ('a, 'b, 'c) kind -> bool
val is_generator : ('a, 'b, 'c) kind -> bool
val is_observer : ('a, 'b, 'c) kind -> bool