.TH "Ephemeron.S" 3 2021-03-03 OCamldoc "OCaml library"
.SH NAME
Ephemeron.S \- The output signature of the functor Ephemeron.K1.Make and Ephemeron.K2.Make.
.SH Module type
Module type   Ephemeron.S
.SH Documentation
.sp
Module type
.BI "S"
 = 
.B sig end

.sp
The output signature of the functor 
.ft B
Ephemeron\&.K1\&.Make
.ft R
and 
.ft B
Ephemeron\&.K2\&.Make
.ft R
\&.
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\&.

.sp

.sp
.sp

.PP
Propose the same interface as usual hash table\&. However since
the bindings are weak, even if 
.ft B
mem h k
.ft R
is true, a subsequent
.ft B
find h k
.ft R
may raise 
.ft B
Not_found
.ft R
because the garbage collector
can run between the two\&.
.sp
Moreover, the table shouldn\&'t be modified during a call to 
.ft B
iter
.ft R
\&.
Use 
.ft B
filter_map_inplace
.ft R
in this case\&.
.PP
.I include Hashtbl.S
.sp

.sp

.I val clean 
: 
.B 'a t -> unit
.sp
remove all dead bindings\&. Done automatically during automatic resizing\&.

.sp

.I val stats_alive 
: 
.B 'a t -> Hashtbl.statistics
.sp
same as 
.ft B
Hashtbl\&.SeededS\&.stats
.ft R
but only count the alive bindings

.sp
