Cfg.MakeSourcemodule A : Binsec.Sigs.HASHABLEAbstract type of graphs
is this an implementation of directed graphs?
Return 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.
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.
Degree 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.