Module Build.Key


module Key: PdgIndex.Key

type t_call_id = Cil_types.stmt 
type to identify a call statement
val t_call_id_packed_descr : Structural_descr.pack

type key =
| SigKey of PdgIndex.Signature.t_key (*input/output nodes of the functionkey for an element of the function signature*)
| VarDecl of Cil_types.varinfo (*local, parameter or global variable definitionvariable declaration*)
| Stmt of Cil_types.stmt (*simple statement (not call) excluding its label (stmt.id)any statement, except a call*)
| CallStmt of t_call_id (*call statementcall statement*)
| Label of int * Cil_types.label (*Labels are considered as function elements by themselves.program label*)
| SigCallKey of t_call_id * PdgIndex.Signature.t_key (*Key for an element of a call (input or output). The call is identified by the statement.key for an element of a call signature*)
val entry_point : key
val top_input : key
val param_key : int -> key
val implicit_in_key : Locations.Zone.t -> key
val output_key : key
val out_from_key : Locations.Zone.t -> key
this is for the nodes inside undefined functions
val decl_var_key : Cil_types.varinfo -> key
val label_key : Cil_types.stmt -> Cil_types.label -> key
val call_key : t_call_id -> key
val stmt_key : t_call_id -> key
val call_input_key : t_call_id -> int -> key
val call_outret_key : t_call_id -> key
val call_output_key : t_call_id -> Locations.Zone.t -> key
val call_ctrl_key : t_call_id -> key
val call_topin_key : t_call_id -> key
val call_from_id : 'a -> 'a
val stmt : key -> t_call_id option
val pretty_node : Format.formatter -> key -> unit
include struct ... end