Module IR.Instrs

type reversed
type not_reversed
type _ t
type not_reversed_t = not_reversed t

defined for convenience: we can write Instrs.not_reversed_t in other modules instead of Instrs.not_reversed Instrs.t

val empty : _ t
val singleton : Sil.instr -> _ t
val append_list : not_reversed t -> Sil.instr list -> not_reversed t
val of_list : Sil.instr list -> not_reversed t
val filter_map : not_reversed t -> f:(Sil.instr -> Sil.instr option) -> not_reversed t
val map : not_reversed t -> f:(Sil.instr -> Sil.instr) -> not_reversed t

replace every instruction instr with f instr. Preserve physical equality. *

val map_and_fold : not_reversed t -> f:('a -> Sil.instr -> 'a * Sil.instr) -> init:'a -> not_reversed t

replace every instruction instr with snd (f context instr). The context is computed by folding f on init and previous instructions (before instr) in the collection. Preserve physical equality. *

val concat_map : not_reversed t -> f:(Sil.instr -> Sil.instr array) -> not_reversed t

replace every instruction instr with the list f instr. Preserve physical equality. *

val reverse_order : not_reversed t -> reversed t
val is_empty : _ t -> bool
val count : _ t -> int
val exists : _ t -> f:(Sil.instr -> bool) -> bool
val for_all : _ t -> f:(Sil.instr -> bool) -> bool
val nth_exists : _ t -> int -> bool
val nth_exn : _ t -> int -> Sil.instr
val last : _ t -> Sil.instr option
val find_map : _ t -> f:(Sil.instr -> 'a option) -> 'a option
val pp : IStdlib.Pp.env -> Stdlib.Format.formatter -> _ t -> unit
val fold : (_ tSil.instr'a) IStdlib.IStd.Container.fold
val iter : (_ tSil.instr) IStdlib.IStd.Container.iter
val get_underlying_not_reversed : not_reversed t -> Sil.instr array