package mopsa

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Parameters

module Key : KEY

Signature

module M : sig ... end
type nt_t = Value.t M.t
val bottom : t
val empty : t
val top : t
val is_bottom : t -> bool
val is_empty : t -> bool
val is_top : t -> bool
val subset : t -> t -> bool
val join : t -> t -> t
val widen : 'a Core.Context.ctx -> t -> t -> t
val meet : t -> t -> t
val print : Core.All.printer -> t -> unit
val find : Key.t -> t -> Value.t

Returns ⊥ value if either k is not found, or a is the ⊤ map.

val remove : Key.t -> t -> t
val m_add : Key.t -> Value.t -> nt_t -> nt_t
val add : Key.t -> Value.t -> t -> t
val mem : Key.t -> t -> bool

Returns false of a is the ⊤ map, or k is mapped to the ⊥ value.

val rename : Key.t -> Key.t -> t -> t
val apply : Key.t -> (Value.t -> Value.t) -> t -> t
val singleton : Key.t -> Value.t -> t
val filter : (Key.t -> Value.t -> bool) -> t -> t
val bindings : t -> (Key.t * Value.t) list

Raises a Top_encountered exception for the ⊤ map.

val max_binding : t -> (Key.t * Value.t) option

Returns None for a ⊤ or ⊥ map.

val cardinal : t -> int

Raises a Top_encountered exception for the ⊤ map.

val of_list : (Key.t * Value.t) list -> t

Iterator functions.

These functions do nothing for the ⊤ map, which is equivalent here to the empty map.

val iter : (Key.t -> Value.t -> unit) -> t -> unit
val fold : (Key.t -> Value.t -> 'a -> 'a) -> t -> 'a0 -> 'a1
val map : (Value.t -> Value.t) -> t -> t
val mapi : (Key.t -> Value.t -> Value.t) -> t -> t
val for_all : (Key.t -> Value.t -> bool) -> t -> bool
val exists : (Key.t -> Value.t -> bool) -> t -> bool

Binary iterators.

If a key is bound in only one map, the function is called with the ⊥ value as missing argument. These functions do nothing if either map is the ⊤ map.

val map2 : (Key.t -> Value.t -> Value.t -> Value.t) -> t -> t -> t
val iter2 : (Key.t -> Value.t -> Value.t -> unit) -> t -> t -> unit
val fold2 : (Key.t -> Value.t -> Value.t -> 'a -> 'a) -> t -> t -> 'a0 -> 'a1
val for_all2 : (Key.t -> Value.t -> Value.t -> bool) -> t -> t -> bool
val exists2 : (Key.t -> Value.t -> Value.t -> bool) -> t -> t -> bool
val map2z : (Key.t -> Value.t -> Value.t -> Value.t) -> t -> t -> t
val iter2z : (Key.t -> Value.t -> Value.t -> unit) -> t -> t -> unit
val fold2z : (Key.t -> Value.t -> Value.t -> 'a -> 'a) -> t -> t -> 'a0 -> 'a1
val fold2zo : (Key.t -> Value.t -> 'a -> 'a) -> (Key.t -> Value.t -> 'a0 -> 'a0) -> (Key.t -> Value.t -> Value.t -> 'a1 -> 'a1) -> t -> t -> 'a2 -> 'a3
val for_all2z : (Key.t -> Value.t -> Value.t -> bool) -> t -> t -> bool
val exists2z : (Key.t -> Value.t -> Value.t -> bool) -> t -> t -> bool

Slice iterations.

val map_slice : (Key.t -> Value.t -> Value.t) -> t -> Key.t -> Key.t -> t
val iter_slice : (Key.t -> Value.t -> unit) -> t -> Key.t -> Key.t -> unit
val fold_slice : (Key.t -> Value.t -> 'a -> 'a) -> t -> Key.t -> Key.t -> 'a0 -> 'a1
val for_all_slice : (Key.t -> Value.t -> bool) -> t -> Key.t -> Key.t -> bool
val exists_slice : (Key.t -> Value.t -> bool) -> t -> Key.t -> Key.t -> bool
OCaml

Innovation. Community. Security.