Module Model.Make.State


module State: sig .. end
State of the analysis

State of the analysis


module M: sig .. end
Map of zone --> status

type t = {
   map : M.t; (*status of a zone*)
   leaks : Model.Make.Leaks.t; (*found leaks*)
   subst : Subst.t; (*Substitution of formals*)
}
val pretty : Format.formatter -> t -> unit
val find_zone_status : t -> Locations.Zone.t -> M.y
val find_loc_status : t -> Locations.location -> M.y
val find_loc_status_with_deps : ?with_deps:bool ->
t -> Locations.location -> Model.Make.L.t1

type exp_status =
| Status of S.t (*Concrete status*)
| Location of Locations.location (*The same than the given location*)
Status of an expression.
val pretty_status : Format.formatter -> exp_status -> unit
Debugging purpose
val last_stmt : Cil_types.stmt Pervasives.ref

type call = {
   current_fun : Db_types.kernel_function;
   deps : S.t;
}
val call_stack : call Stack.t
val reset : unit -> t
val lval_to_loc : Db.Value.state -> Cil_types.lval -> Locations.location
val status_of_deps : Db.Value.state -> t -> S.t
val join_deps : Db.Value.state -> t -> S.t -> S.t
val find_loc_or_status : ?with_deps:bool ->
Db.Value.state ->
t -> Cil_types.exp -> exp_status
val find_exp_status : ?with_deps:bool ->
Db.Value.state -> t -> Cil_types.exp -> Model.Make.L.t1
val is_included : t -> t -> bool
val combine : old:t -> t -> t
val change_loc_status : Db.Value.state ->
t ->
Locations.location -> exp_status -> t
val change_lval_status : Db.Value.state ->
t ->
Cil_types.lval -> exp_status -> t
val change_lval_exp : Db.Value.state ->
t -> Cil_types.lval -> Cil_types.exp -> t
val clear_leaks : t -> t
val push_call : Db.Value.state ->
Db_types.kernel_function ->
Cil_types.exp list -> t -> t
val pop_call : Cil_types.kinstr ->
Cil_types.fundec ->
Cil_types.exp list ->
old:t -> t -> t
val print_results : t -> unit
val add_leak : potential:bool ->
t -> Cil_types.kinstr -> Cil_types.exp -> t