30 lines
611 B
OCaml
30 lines
611 B
OCaml
|
|
module type C = sig
|
||
|
|
type elt
|
||
|
|
type internal
|
||
|
|
|
||
|
|
type internalnode = {
|
||
|
|
internalin: internal list;
|
||
|
|
internalout: internal list;
|
||
|
|
internalbetween: internal list list;
|
||
|
|
}
|
||
|
|
|
||
|
|
type cfgt = elt Cfg.cfginternal
|
||
|
|
|
||
|
|
type t = {
|
||
|
|
t: cfgt;
|
||
|
|
internalvar: internalnode Cfg.NodeMap.t;
|
||
|
|
}
|
||
|
|
|
||
|
|
val from_cfg : cfgt -> t
|
||
|
|
val to_cfg : t -> cfgt
|
||
|
|
|
||
|
|
val fixed_point : ?init:(elt list -> internalnode) -> ?update:(t -> Cfg.Node.t -> internalnode) -> t -> t
|
||
|
|
|
||
|
|
val pp : out_channel -> t -> unit
|
||
|
|
end
|
||
|
|
|
||
|
|
module Make
|
||
|
|
(M: Cfg.PrintableType)
|
||
|
|
(I: Cfg.PrintableType)
|
||
|
|
: C with type elt = M.t and type internal = I.t
|