MusteqDomain.F
module F = CilType.Fieldinfo
module I = Basetype.CilExp
include module type of struct include Offset.Exp end
Offset with Index.Exp
indices.
include Offset.Printable with type idx = GoblintCil.exp
include Printable.S with type t = idx Offset_intf.offs
type t = idx Offset_intf.offs
val hash : t -> int
val show : t -> string
val printXml : 'a BatInnerIO.output -> t -> unit
val to_yojson : t -> Yojson.Safe.t
val tag : t -> int
Unique ID, given by HConsed, for context identification in witness
val arbitrary : unit -> t QCheck.arbitrary
val is_definite : t -> bool
Whether offset has only definite integer indexing (and fields).
val contains_index : t -> bool
Whether offset contains any indexing.
val to_exp : t -> GoblintCil.exp Offset_intf.offs
Convert to Goblint offset with GoblintCil.exp
indices.
val to_cil_offset : t -> GoblintCil.offset
Version of to_cil
which drops indices for ArrayDomain
.
val cmp_zero_offset : t -> [ `MustZero | `MustNonzero | `MayZero ]
Compare offset to zero offset.
Zero indices and first fields of a struct are in the same physical memory location as the outer object.
val type_of : base:GoblintCil.typ -> t -> GoblintCil.typ
Type of the offset on the base
type.
val of_cil : GoblintCil.offset -> t
Convert from CIL offset.
val to_cil : t -> GoblintCil.offset
Convert to CIL offset.
val kill : Basetype.Variables.t -> t -> t
val real_region : t -> 'a -> bool
val occurs :
Basetype.Variables.t ->
[< `Field of 'b * 'c | `Index of GoblintCil.exp * 'd | `NoOffset ] as 'a ->
bool