sig
type t
val get : Kernel_function.t -> Cil2cfg.t
type node
val pp_node : Format.formatter -> Cil2cfg.node -> unit
val same_node : Cil2cfg.node -> Cil2cfg.node -> bool
type edge
val pp_edge : Format.formatter -> Cil2cfg.edge -> unit
val same_edge : Cil2cfg.edge -> Cil2cfg.edge -> bool
val start_edge : Cil2cfg.t -> Cil2cfg.edge
module Eset :
sig
type elt = edge
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val map : (elt -> elt) -> t -> t
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val min_elt_opt : t -> elt option
val max_elt : t -> elt
val max_elt_opt : t -> elt option
val choose : t -> elt
val choose_opt : t -> elt option
val split : elt -> t -> t * bool * t
val find : elt -> t -> elt
val find_opt : elt -> t -> elt option
val find_first : (elt -> bool) -> t -> elt
val find_first_opt : (elt -> bool) -> t -> elt option
val find_last : (elt -> bool) -> t -> elt
val find_last_opt : (elt -> bool) -> t -> elt option
val of_list : elt list -> t
end
val edge_src : Cil2cfg.edge -> Cil2cfg.node
val edge_dst : Cil2cfg.edge -> Cil2cfg.node
val pred_e : Cil2cfg.t -> Cil2cfg.node -> Cil2cfg.edge list
val succ_e : Cil2cfg.t -> Cil2cfg.node -> Cil2cfg.edge list
val fold_nodes : (Cil2cfg.node -> 'a -> 'a) -> Cil2cfg.t -> 'a -> 'a
val iter_nodes : (Cil2cfg.node -> unit) -> Cil2cfg.t -> unit
val iter_edges : (Cil2cfg.edge -> unit) -> Cil2cfg.t -> unit
type block_type = private
Bstmt of Cil_types.stmt
| Bthen of Cil_types.stmt
| Belse of Cil_types.stmt
| Bloop of Cil_types.stmt
| Bfct
type call_type =
Dynamic of Cil_types.exp
| Static of Cil_types.kernel_function
val pp_call_type : Format.formatter -> Cil2cfg.call_type -> unit
val get_call_type : Cil_types.exp -> Cil2cfg.call_type
type node_type = private
Vstart
| Vend
| Vexit
| VfctIn
| VfctOut
| VblkIn of Cil2cfg.block_type * Cil_types.block
| VblkOut of Cil2cfg.block_type * Cil_types.block
| Vstmt of Cil_types.stmt
| Vcall of Cil_types.stmt * Cil_types.lval option * Cil2cfg.call_type *
Cil_types.exp list
| Vtest of bool * Cil_types.stmt * Cil_types.exp
| Vswitch of Cil_types.stmt * Cil_types.exp
| Vloop of bool option * Cil_types.stmt
| Vloop2 of bool * int
val node_type : Cil2cfg.node -> Cil2cfg.node_type
val pp_node_type : Format.formatter -> Cil2cfg.node_type -> unit
val node_stmt_opt : Cil2cfg.node -> Cil_types.stmt option
val start_stmt_of_node : Cil2cfg.node -> Cil_types.stmt option
val unreachable_nodes : Cil2cfg.t -> Cil2cfg.node_type list
val get_test_edges :
Cil2cfg.t -> Cil2cfg.node -> Cil2cfg.edge * Cil2cfg.edge
val get_switch_edges :
Cil2cfg.t ->
Cil2cfg.node -> (Cil_types.exp list * Cil2cfg.edge) list * Cil2cfg.edge
val get_call_out_edges :
Cil2cfg.t -> Cil2cfg.node -> Cil2cfg.edge * Cil2cfg.edge
type block_scope = {
b_opened : Cil_types.block list;
b_closed : Cil_types.block list;
}
val block_scope_for_edge : Cil2cfg.t -> Cil2cfg.edge -> Cil2cfg.block_scope
val is_back_edge : Cil2cfg.edge -> bool
val strange_loops : Cil2cfg.t -> Cil2cfg.node list
val very_strange_loops : Cil2cfg.t -> Cil2cfg.node list
val get_edge_labels : Cil2cfg.edge -> Clabels.c_label list
val get_edge_stmt : Cil2cfg.edge -> Cil_types.stmt option
val get_edge_next_stmt : Cil2cfg.t -> Cil2cfg.edge -> Cil_types.stmt option
val has_exit : Cil2cfg.t -> bool
val get_pre_edges : Cil2cfg.t -> Cil2cfg.node -> Cil2cfg.edge list
val get_post_edges : Cil2cfg.t -> Cil2cfg.node -> Cil2cfg.edge list
val get_post_label : Cil2cfg.t -> Cil2cfg.node -> Clabels.c_label option
val get_exit_edges : Cil2cfg.t -> Cil2cfg.node -> Cil2cfg.edge list
val get_internal_edges :
Cil2cfg.t -> Cil2cfg.node -> Cil2cfg.edge list * Cil2cfg.Eset.t
val cfg_kf : Cil2cfg.t -> Kernel_function.t
val cfg_spec_only : Cil2cfg.t -> bool
module type HEsig =
sig
type ti
type t
val create : int -> Cil2cfg.HEsig.t
val find : Cil2cfg.HEsig.t -> Cil2cfg.edge -> Cil2cfg.HEsig.ti
val find_all : Cil2cfg.HEsig.t -> Cil2cfg.edge -> Cil2cfg.HEsig.ti list
val add : Cil2cfg.HEsig.t -> Cil2cfg.edge -> Cil2cfg.HEsig.ti -> unit
val replace :
Cil2cfg.HEsig.t -> Cil2cfg.edge -> Cil2cfg.HEsig.ti -> unit
val remove : Cil2cfg.HEsig.t -> Cil2cfg.edge -> unit
val clear : Cil2cfg.HEsig.t -> unit
end
module HE :
functor (I : sig type t end) ->
sig
type ti = I.t
type t
val create : int -> t
val find : t -> edge -> ti
val find_all : t -> edge -> ti list
val add : t -> edge -> ti -> unit
val replace : t -> edge -> ti -> unit
val remove : t -> edge -> unit
val clear : t -> unit
end
end