Module InferModules.CallGraph
module type NodeSig = sig ... end
val reset : t -> unit
empty the graph and shrink it to its initial size
val create : int -> t
create n
makes an empty graph with initial capacityn
which grows as required
val n_procs : t -> int
number of procedures in graph
val mem : t -> int -> bool
is an int
id
the index of a node in the graph?
val flag_reachable : t -> InferIR.Typ.Procname.t -> unit
flag all nodes reachable from the node of the given procname, if it exists
val remove_reachable : t -> InferIR.Typ.Procname.t -> unit
remove all nodes reachable from procname
val to_dotty : t -> string -> unit
output call graph in dotty format with the given filename in results dir
val trim_id_map : t -> unit
remove all pnames that do not correspond to a defined procedure from id_map
val remove_unflagged_and_unflag_all : t -> unit
remove all nodes with flag set to false, and set flag to false on all remaining nodes
val add_edge : t -> pname:InferIR.Typ.Procname.t -> successor_pname:InferIR.Typ.Procname.t -> unit
add an edge from
pname
tosuccessor_pname
in the graph, creating a node forpname
if there isn't one already
val create_node : t -> InferIR.Typ.Procname.t -> InferIR.Typ.Procname.t InferStdlib.IStd.sexp_list -> unit
create a new node with edges from
pname
tosuccessor_pnames
in the graph