sig
exception AddError
exception CallStatement
exception Not_equal
module Signature :
sig
type 'a t
type in_key = private
InCtrl
| InNum of int
| InImpl of Locations.Zone.t
type out_key = private OutRet | OutLoc of Locations.Zone.t
type key = private
In of PdgIndex.Signature.in_key
| Out of PdgIndex.Signature.out_key
val empty : 'a PdgIndex.Signature.t
val mk_undef_in_key : Locations.Zone.t -> PdgIndex.Signature.in_key
val cmp_in_key :
PdgIndex.Signature.in_key -> PdgIndex.Signature.in_key -> int
val cmp_out_key :
PdgIndex.Signature.out_key -> PdgIndex.Signature.out_key -> int
val equal_out_key :
PdgIndex.Signature.out_key -> PdgIndex.Signature.out_key -> bool
val find_info : 'a PdgIndex.Signature.t -> PdgIndex.Signature.key -> 'a
val find_input : 'a PdgIndex.Signature.t -> int -> 'a
val find_in_ctrl : 'info PdgIndex.Signature.t -> 'info
val find_in_top : 'info PdgIndex.Signature.t -> 'info
val find_in_info :
'info PdgIndex.Signature.t -> PdgIndex.Signature.in_key -> 'info
val find_out_ret : 'a PdgIndex.Signature.t -> 'a
val find_out_info :
'info PdgIndex.Signature.t -> PdgIndex.Signature.out_key -> 'info
val fold :
('a -> PdgIndex.Signature.key * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val fold_num_inputs :
('a -> int * 'b -> 'a) -> 'a -> 'b PdgIndex.Signature.t -> 'a
val fold_impl_inputs :
('a -> Locations.Zone.t * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val fold_matching_impl_inputs :
Locations.Zone.t ->
('a -> Locations.Zone.t * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val fold_all_inputs :
('a -> PdgIndex.Signature.in_key * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val fold_all_outputs :
('a -> PdgIndex.Signature.out_key * 'b -> 'a) ->
'a -> 'b PdgIndex.Signature.t -> 'a
val pretty :
(Stdlib.Format.formatter -> 'a -> unit) ->
Stdlib.Format.formatter -> 'a PdgIndex.Signature.t -> unit
val pretty_key :
Stdlib.Format.formatter -> PdgIndex.Signature.key -> unit
val pretty_in_key :
Stdlib.Format.formatter -> PdgIndex.Signature.in_key -> unit
val pretty_out_key :
Stdlib.Format.formatter -> PdgIndex.Signature.out_key -> unit
end
module Key :
sig
type key = private
SigKey of PdgIndex.Signature.key
| VarDecl of Cil_types.varinfo
| Stmt of Cil_types.stmt
| CallStmt of Cil_types.stmt
| Label of Cil_types.stmt * Cil_types.label
| SigCallKey of Cil_types.stmt * PdgIndex.Signature.key
type t = key
val ty : t Type.t
val name : string
val descr : t Descr.t
val packed_descr : Structural_descr.pack
val reprs : t list
val equal : t -> t -> bool
val compare : t -> t -> int
val hash : t -> int
val pretty_code : Format.formatter -> t -> unit
val internal_pretty_code :
Type.precedence -> Format.formatter -> t -> unit
val pretty : Format.formatter -> t -> unit
val varname : t -> string
val mem_project : (Project_skeleton.t -> bool) -> t -> bool
val copy : t -> t
val param_key : int -> t
val implicit_in_key : Locations.Zone.t -> t
val entry_point : t
val top_input : t
val output_key : t
val out_from_key : Locations.Zone.t -> t
val decl_var_key : Cil_types.varinfo -> t
val label_key : Cil_types.stmt -> Cil_types.label -> t
val stmt_key : Cil_types.stmt -> t
val call_key : Cil_types.stmt -> t
val call_input_key : Cil_types.stmt -> int -> t
val call_output_key : Cil_types.stmt -> Locations.Zone.t -> t
val call_outret_key : Cil_types.stmt -> t
val call_ctrl_key : Cil_types.stmt -> t
val call_topin_key : Cil_types.stmt -> t
val stmt : t -> Cil_types.stmt option
val call_from_id : Cil_types.stmt -> Cil_types.stmt
end
module FctIndex :
sig
type ('ni, 'ci) t
val create : int -> ('ni, 'ci) PdgIndex.FctIndex.t
val length : ('ni, 'ci) PdgIndex.FctIndex.t -> int
val copy :
('ni, 'ci) PdgIndex.FctIndex.t -> ('ni, 'ci) PdgIndex.FctIndex.t
val merge :
('ni, 'ci) PdgIndex.FctIndex.t ->
('ni, 'ci) PdgIndex.FctIndex.t ->
('ni -> 'ni -> 'ni) ->
('ci -> 'ci -> 'ci) -> ('ni, 'ci) PdgIndex.FctIndex.t
val sgn : ('ni, 'ci) PdgIndex.FctIndex.t -> 'ni PdgIndex.Signature.t
val find_info : ('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ni
val find_all :
('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ni list
val find_label :
('ni, 'ci) PdgIndex.FctIndex.t -> Cil_types.label -> 'ni
val find_call :
('ni, 'ci) PdgIndex.FctIndex.t ->
Cil_types.stmt -> 'ci option * 'ni PdgIndex.Signature.t
val find_call_key :
('ni, 'ci) PdgIndex.FctIndex.t ->
PdgIndex.Key.t -> 'ci option * 'ni PdgIndex.Signature.t
val find_info_call :
('ni, 'ci) PdgIndex.FctIndex.t -> Cil_types.stmt -> 'ci
val find_info_call_key :
('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ci
val fold_calls :
(Cil_types.stmt -> 'ci option * 'ni PdgIndex.Signature.t -> 'c -> 'c) ->
('ni, 'ci) PdgIndex.FctIndex.t -> 'c -> 'c
val fold :
(PdgIndex.Key.key -> 'ni -> 'a -> 'a) ->
('ni, 'ci) PdgIndex.FctIndex.t -> 'a -> 'a
val add :
('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ni -> unit
val add_or_replace :
('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ni -> unit
val add_info_call :
('ni, 'ci) PdgIndex.FctIndex.t ->
Cil_types.stmt -> 'ci -> replace:bool -> unit
val add_info_call_key :
('ni, 'ci) PdgIndex.FctIndex.t ->
PdgIndex.Key.t -> 'ci -> replace:bool -> unit
val t_descr :
ni:Structural_descr.t -> ci:Structural_descr.t -> Structural_descr.t
end
end