Pulselib.PulseAccess
module AbstractValue = PulseAbstractValue
The various kind of possible ways to access memory addresses and values. Can be used for edges in a memory graph representation or to represent values as access paths.
type ('fieldname, 'array_index) access_ =
| FieldAccess of 'fieldname
| ArrayAccess of IR.Typ.t * 'array_index
| Dereference
for internal use only, prefer using access
type 'array_index access = (IR.Fieldname.t, 'array_index) access_
val yojson_of_access :
('array_index -> Ppx_yojson_conv_lib.Yojson.Safe.t) ->
'array_index access ->
Ppx_yojson_conv_lib.Yojson.Safe.t
val pp_access :
(F.formatter -> 'array_index -> unit) ->
F.formatter ->
'array_index access ->
unit
module type S = sig ... end
include S with type key := AbstractValue.t
include IStdlib.PrettyPrintable.PrintableEquatableOrderedType
with type t = AbstractValue.t access
include IStdlib.IStd.Caml.Set.OrderedType with type t = AbstractValue.t access
type t = AbstractValue.t access
include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
include IStdlib.PrettyPrintable.PrintableType with type t := t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val canonicalize : get_var_repr:(AbstractValue.t -> AbstractValue.t) -> t -> t
val yojson_of_t : t -> Yojson.Safe.t