package binsec
Install
Dune Dependency
Authors
-
AAdel Djoudi
-
BBenjamin Farinier
-
CChakib Foulani
-
DDorian Lesbre
-
FFrédéric Recoules
-
GGuillaume Girol
-
JJosselin Feist
-
LLesly-Ann Daniel
-
MManh-Dung Nguyen
-
MMathéo Vergnolle
-
MMathilde Ollivier
-
MMatthieu Lemerre
-
OOlivier Nicole
-
RRichard Bonichon
-
RRobin David
-
SSébastien Bardin
-
SSoline Ducousso
-
TTa Thanh Dinh
-
YYaëlle Vinçont
Maintainers
Sources
sha256=5e1d0f26a567df4abcbeb964b454cf8b2c8484194ff2d9639bdeb94d63edcb3b
sha512=a638c665407fde9aadbd57a7b9f84260db8f03c0cbf65722732d43dfc93122d801e31977e0ba7cd249b340262caf216bca746a3520d0e01d487a5baf6a6c77e6
doc/binsec/Binsec/Cfg/Make/index.html
Module Cfg.Make
Parameters
module A : Sigs.HASHABLE
module I : Hashtbl.HashedType
module S : Hashtbl.HashedType
Signature
type addr = A.t
type inst = I.t
type symb = S.t
module V : sig ... end
Vertices
type vertex = V.t
module E : sig ... end
Edges
type edge = E.t
type trace = vertex Sequence.t
Graph constructors and destructors
val create : int -> t
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.
val clear : t -> unit
Remove 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
. *
Size functions
val is_empty : t -> bool
val nb_vertex : t -> int
val nb_edges : t -> int
Degree of a vertex
out_degree g v
returns the out-degree of v
in g
. *
Membership functions
Successors and predecessors of a vertex
Labeled edges going from/to a vertex
Graph iterators
iter/fold on all vertices/edges of a graph
iter/fold on all labeled edges of a graph
Vertex iterators
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.