module Subst: sig
.. end
Substitution of varinfos by exps
type
t
Type of the substitution.
val empty : t
The empty substitution.
val add : Cil_types.varinfo -> Cil_types.exp -> t -> t
Add a new couple to the substitution.
val remove : Cil_types.varinfo -> t -> t
Do not substitute the varinfo anymore.
val expr : ?trans:bool -> Cil_types.exp -> t -> Cil_types.exp * bool
Apply the substitution to an expression.
If trans
, the substitution is transitively applied. Default is true
.
For example, with subst = { x -> &y; y -> b } and exp = x, the result
is &b by default and &y if trans is false.
The returned boolean flag is true is a substitution occured.
val lval : ?trans:bool -> Cil_types.lval -> t -> Cil_types.exp * bool
Apply the substitution to a lvalue.