module FctIndex:sig
..end
type ('ni, 'ci)
t
'ni
if the type of the information to store for each element,'ci
if the type of the information that can be attached to call
statements (calls are themselves composed of several elements, so 'ni
information stored for each of them ('ni Signature.t
))val create : int -> ('ni, 'ci) t
val length : ('ni, 'ci) t -> int
val copy : ('ni, 'ci) t -> ('ni, 'ci) t
val merge : ('ni, 'ci) t ->
('ni, 'ci) t ->
('ni -> 'ni -> 'ni) -> ('ci -> 'ci -> 'ci) -> ('ni, 'ci) t
merge_a
and merge_b
.
These function are _not_ called when an element is in one index,
but not the other. It is assumed that merge_x x bot = x
.val sgn : ('ni, 'ci) t -> 'ni PdgIndex.Signature.t
val find_info : ('ni, 'ci) t -> PdgIndex.Key.t -> 'ni
Key.CallStmt
keys because the type of the stored information is not the
same. See find_call
instead.val find_all : ('ni, 'ci) t -> PdgIndex.Key.t -> 'ni list
find_info
except for call statements for which it gives the
list of all the information in the signature of the call.val find_label : ('ni, 'ci) t -> Cil_types.label -> 'ni
find_info
for a labelval find_call : ('ni, 'ci) t ->
Cil_types.stmt -> 'ci option * 'ni PdgIndex.Signature.t
val find_call_key : ('ni, 'ci) t ->
PdgIndex.Key.t -> 'ci option * 'ni PdgIndex.Signature.t
val find_info_call : ('ni, 'ci) t -> Cil_types.stmt -> 'ci
val find_info_call_key : ('ni, 'ci) t -> PdgIndex.Key.t -> 'ci
val fold_calls : (Cil_types.stmt -> 'ci option * 'ni PdgIndex.Signature.t -> 'c -> 'c) ->
('ni, 'ci) t -> 'c -> 'c
val fold : (PdgIndex.Key.key -> 'ni -> 'a -> 'a) ->
('ni, 'ci) t -> 'a -> 'a
val add : ('ni, 'ci) t -> PdgIndex.Key.t -> 'ni -> unit
store the information for the key. Replace the previously stored
information if any.
Raises AddError
if there is already something stored.
val add_or_replace : ('ni, 'ci) t -> PdgIndex.Key.t -> 'ni -> unit
val add_info_call : ('ni, 'ci) t ->
Cil_types.stmt -> 'ci -> replace:bool -> unit
val add_info_call_key : ('ni, 'ci) t ->
PdgIndex.Key.t -> 'ci -> replace:bool -> unit
val t_descr : ni:Structural_descr.t -> ci:Structural_descr.t -> Structural_descr.t