Functor Lmap.Location_map.Make


module Make: 
functor (Default_offsetmap : sig
val default_offsetmap : Base.t -> Lmap.Location_map.loffset
end) -> sig .. end
Parameters:
Default_offsetmap : sig val default_offsetmap : Base.t -> loffset end

module LBase: sig .. end

type tt = private
| Bottom
| Top
| Map of LBase.t
include Datatype.S
type widen_hint = bool * Base.Set.t * (Base.t -> Lmap.Location_map.widen_hint_offsetmap) 
val inject : Base.t -> Lmap.Location_map.loffset -> t
val add_offsetmap : Base.t -> Lmap.Location_map.loffset -> t -> t
val pretty_without_null : Format.formatter -> t -> unit
val pretty_filter : Format.formatter -> t -> Locations.Zone.t -> (Base.t -> bool) -> unit
val add_binding : with_alarms:CilE.warn_mode ->
exact:bool -> t -> Locations.location -> Lmap.Location_map.y -> t
val find : conflate_bottom:bool ->
with_alarms:CilE.warn_mode -> t -> Locations.location -> Lmap.Location_map.y
val join : t -> t -> Locations.location list * t
val is_included : t -> t -> bool
val top : t
val is_top : t -> bool
val empty_map : t
Empty map. Casual users do not need this.
val is_empty_map : t -> bool
val bottom : t
Every location is associated to VALUE.bottom in bottom. This state can be reached only in dead code.
val is_reachable : t -> bool
val widen : widen_hint -> t -> t -> bool * t
val filter_base : (Base.t -> bool) -> t -> t
val find_base : Base.t -> t -> Lmap.Location_map.loffset
Raises Not_found if the varid is not present in the map.
val remove_base : Base.t -> t -> t
Removes the base if it is present. Does nothing otherwise.
val reduce_binding : with_alarms:CilE.warn_mode ->
t -> Locations.location -> Lmap.Location_map.y -> t
val copy_paste : with_alarms:CilE.warn_mode ->
Locations.location -> Locations.location -> t -> t
copy_paste src dst state returns a modified version of state in which everything present in src has been copied onto dst. src and dst must have the same size. The write operation is exact iff dst is exact.
Raises Cannot_copy if copy is not possible.
val paste_offsetmap : with_alarms:CilE.warn_mode ->
from:Lmap.Location_map.loffset ->
dst_loc:Locations.Location_Bits.t ->
start:Abstract_interp.Int.t ->
size:Abstract_interp.Int.t -> exact:bool -> t -> t
paste_offsetmap ~from:offmap ~dst_loc ~start ~size ~exact m copies size bits starting at start in offmap, and pastes them at dst_loc in m. The copy is exact if and only if dst_loc is exact, and exact is true
Raises Cannot_copy if copy is not possible.
val copy_offsetmap : with_alarms:CilE.warn_mode ->
Locations.location -> t -> Lmap.Location_map.loffset option
May return None as a bottom loffset.
val is_included_by_location_enum : t -> t -> Locations.Zone.t -> bool
val fold : size:Abstract_interp.Int.t ->
(Locations.location -> Lmap.Location_map.y -> 'a -> 'a) -> t -> 'a -> 'a
Raises
val fold_single_bindings : size:Abstract_interp.Int.t ->
(Locations.location -> Lmap.Location_map.y -> 'a -> 'a) -> t -> 'a -> 'a
Raises
val fold_base : (Base.t -> 'a -> 'a) -> t -> 'a -> 'a
fold_base f m calls f on all bases bound to non top offsetmaps in the non bottom map m.
Raises Error_Bottom if m is bottom.
val fold_base_offsetmap : (Base.t -> Lmap.Location_map.loffset -> 'a -> 'a) -> t -> 'a -> 'a
fold_base_offsetmap f m calls f on all bases bound to non top offsetmaps in the non bottom map m.
Raises Error_Bottom if m is bottom.
val find_offsetmap_for_location : Locations.Location_Bits.t -> t -> Lmap.Location_map.loffset
val add_whole : Locations.location -> Lmap.Location_map.y -> t -> t
val remove_whole : Locations.location -> t -> t
val comp_prefixes : t -> t -> unit
type subtree 
val find_prefix : t -> Hptmap.prefix -> subtree option
val hash_subtree : subtree -> int
val equal_subtree : subtree -> subtree -> bool
val reciprocal_image : Base.t -> t -> Locations.Zone.t * Locations.Location_Bits.t
reciprocal_image m b is the set of bits in the map m that may lead to Top(b) and the location in m where one may read an address b+_
val create_initial : base:Base.t ->
v:Lmap.Location_map.y -> modu:Abstract_interp.Int.t -> state:t -> t
exception Error_Bottom
val cached_fold : f:(Base.t -> Lmap.Location_map.loffset -> 'a) ->
cache:string * int ->
temporary:bool -> joiner:('a -> 'a -> 'a) -> empty:'a -> t -> 'a
val cached_map : f:(Base.t -> Lmap.Location_map.loffset -> Lmap.Location_map.loffset) ->
cache:string * int -> temporary:bool -> t -> t
exception Found_prefix of Hptmap.prefix * subtree
* subtree