module FctIndex:sig..end
Mapping between the function elements we are interested in and some information. Used for instance to associate the nodes with the statements, or the marks in a slice.
type ('ni, 'ci) t
this type is used to build indexes between program objects and some information such as the PDG nodes or the slicing marks.
'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) tjust copy the mapping
val merge : ('ni, 'ci) t ->
('ni, 'ci) t ->
('ni -> 'ni -> 'ni) -> ('ci -> 'ci -> 'ci) -> ('ni, 'ci) tmerge the two indexes using given functions 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.tget the information stored for the function signature
val find_info : ('ni, 'ci) t -> PdgIndex.Key.t -> 'nifind the information stored for the key. Cannot be used for
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 listsame than 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 -> 'niSimilar to find_info for a label
val find_call : ('ni, 'ci) t ->
Cil_types.stmt -> 'ci option * 'ni PdgIndex.Signature.tfind the information stored for the call and its signature
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 -> 'cifind the information stored for the call
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 -> unitstore the information for the key.
AddError if there is already something stored.val add_or_replace : ('ni, 'ci) t -> PdgIndex.Key.t -> 'ni -> unitstore the information for the key. Replace the previously stored information if any.
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.tStructural destructor for unmarshaling