Module Pulselib.PulseAccess

module F = Stdlib.Format
module AbstractValue = PulseAbstractValue

Memory Accesses

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_ =
  1. | FieldAccess of 'fieldname
  2. | ArrayAccess of IR.Typ.t * 'array_index
  3. | Dereference

for internal use only, prefer using access

type 'array_index access = (IR.Fieldname.t, 'array_index) access_
val compare_access : ('array_index -> 'array_index -> int) -> 'array_index access -> 'array_index access -> int
val equal_access : ('array_index -> 'array_index -> bool) -> 'array_index access -> 'array_index access -> bool
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
val compare : t -> t -> int
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 equal : t -> t -> bool
val canonicalize : get_var_repr:(AbstractValue.t -> AbstractValue.t) -> t -> t
val yojson_of_t : t -> Yojson.Safe.t
module Set : IStdlib.IStd.Caml.Set.S with type elt = t