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