Binsec.Ida_cgmodule Node : sig ... endmodule Edge : sig ... endinclude Cfg.S
with type addr = Node.t
and type inst = Node.t
and type symb = Node.ttype addr = Node.ttype inst = Node.ttype symb = Node.tmodule V : sig ... endVertices
type vertex = V.tmodule E : sig ... endEdges
type edge = E.ttype trace = vertex Sequence.tval create : int -> tReturn an empty graph. Optionally, a size can be given, which should be on * the order of the expected number of vertices that will be in the graph (for * hash tables-based implementations). The graph grows as needed, so size is * just an initial guess.
val clear : t -> unitRemove all vertices and edges from the given graph.
copy g returns a copy of g. Vertices and edges (and eventually marks, * see module Mark) are duplicated.
add_vertex g v adds the vertex v in graph g. Do nothing if v * is already in g.
remove g v removes the vertex v from the graph g (and all the edges * going from v in g). Do nothing if v is not in g.
add_edge g v1 v2 adds an edge from the vertex v1 to the vertex v2 in * the graph g. Add also v1 (resp. v2) in g if v1 (resp. v2) is not * in g. Do nothing if this edge is already in g.
add_edge_e g e adds the edge e in the graph g. Add also E.src e * (resp. E.dst e) in g if E.src e (resp. E.dst e) is not in g. Do * nothing if e is already in g.
remove_edge g v1 v2 removes the edge going from v1 to v2 from the * graph g. Do nothing if this edge is not in g. *
remove_edge_e g e removes the edge e from the graph g. Do nothing if * e is not in g. *
val is_empty : t -> boolval nb_vertex : t -> intval nb_edges : t -> intDegree of a vertex
out_degree g v returns the out-degree of v in g. *
Labeled edges going from/to a vertex
iter/fold on all vertices/edges of a graph
iter/fold on all labeled edges of a graph
Each iterator iterator f v g iters f to the successors/predecessors of v in the graph g and raises Invalid_argument if v is not in g.
iter/fold on all successors/predecessors of a vertex.
iter/fold on all edges going from/to a vertex.
module Parse : sig ... end