module type Location_map_bitwise = sig
.. end
type
y
type
t
module Datatype: Project.Datatype.S
with type t = t
module LOffset: sig
.. end
val pretty : Format.formatter -> t -> unit
val empty : t
val join : t ->
t -> t
val equal : t ->
t -> bool
val hash : t -> int
val is_included : t ->
t -> bool
val add_binding : exact:bool ->
t ->
Locations.Zone.t ->
y -> t
val map_and_merge : (y -> y) ->
t ->
t -> t
map_and_merge f m1 m2
maps f
on values in m1
and add_exact
all elements of the mapped m1
to m2
val filter_base : (Base.t -> bool) ->
t -> t
val find : t ->
Locations.Zone.t -> y
val find_base : t ->
Locations.Zone.t -> LOffset.t
exception Cannot_fold
val uninitialize_locals : Cil_types.varinfo list ->
t -> t
binds the given variables to bottom, keeps the other unchanged.
val fold : (Locations.Zone.t -> bool * y -> 'a -> 'a) ->
t -> 'a -> 'a
fold f m
folds a function f
on bindings in m
. Each binding
associates to a zone a boolean representing the possibility that the
zone was not modified, and a value of type y. May raise
Cannot_fold
.
val fold_base : (Base.t -> LOffset.t -> 'a -> 'a) ->
t -> 'a -> 'a
val map2 : ((bool * y) option ->
(bool * y) option ->
bool * y) ->
t ->
t -> t
like for fold
, the boolean in bool * y
indicates if it is possible
that the zone was not modified
val copy_paste : f:(bool * y ->
bool * y) ->
Locations.location ->
Locations.location ->
t -> t
This function takes a function f
to be applied to each bit of
the read slice. Otherwise, it has the same specification as
copy_paste
for Location_map.copy_paste
. It may raise
Bitwise_cannot_copy
.
Precondition : the two locations must have the same size
exception Zone_unchanged
val find_or_unchanged : t ->
Locations.Zone.t -> y