Ephemeron.S(3)

NAME
Ephemeron.S - The output signature of the functors Ephemeron.K1.Make and Ephemeron.K2.Make.

Module type
Module type Ephemeron.S

Documentation

Module type S
 = sig end

The output signature of the functors Ephemeron.K1.Make and Ephemeron.K2.Make . These hash tables are weak in the keys. If all the keys of a binding are alive the binding is kept, but if one of the keys of the binding is dead then the binding is removed.

Propose the same interface as usual hash table. However since the bindings are weak, even if mem h k is true, a subsequent find h k may raise Not_found because the garbage collector can run between the two.

Moreover, the table shouldn't be modified during a call to iter . Use filter_map_inplace in this case.

type key

type 'a t

val create : int -> 'a t

val clear : 'a t -> unit

val reset : 'a t -> unit

val copy : 'a t -> 'a t

val add : 'a t -> key -> 'a -> unit

val remove : 'a t -> key -> unit

val find : 'a t -> key -> 'a

val find_opt : 'a t -> key -> 'a option

val find_all : 'a t -> key -> 'a list

val replace : 'a t -> key -> 'a -> unit

val mem : 'a t -> key -> bool

val iter : (key -> 'a -> unit) -> 'a t -> unit

val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit

val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b

val length : 'a t -> int

val stats : 'a t -> Hashtbl.statistics

val to_seq : 'a t -> (key * 'a) Seq.t

val to_seq_keys : 'a t -> key Seq.t

val to_seq_values : 'a t -> 'a Seq.t

val add_seq : 'a t -> (key * 'a) Seq.t -> unit

val replace_seq : 'a t -> (key * 'a) Seq.t -> unit

val of_seq : (key * 'a) Seq.t -> 'a t

val clean : 'a t -> unit

remove all dead bindings. Done automatically during automatic resizing.

val stats_alive : 'a t -> Hashtbl.statistics

same as Hashtbl.SeededS.stats but only count the alive bindings