package ocaml-base-compiler
val create : unit -> ('k, 'd) t
Ephemeron.K1.create ()
creates an ephemeron with one key. The data and the key are empty
val get_key : ('k, 'd) t -> 'k option
Ephemeron.K1.get_key eph
returns None
if the key of eph
is empty, Some x
(where x
is the key) if it is full.
val get_key_copy : ('k, 'd) t -> 'k option
Ephemeron.K1.get_key_copy eph
returns None
if the key of eph
is empty, Some x
(where x
is a (shallow) copy of the key) if it is full. This function has the same GC friendliness as Weak.get_copy
val set_key : ('k, 'd) t -> 'k -> unit
Ephemeron.K1.set_key eph el
sets the key of eph
to be a (full) key to el
val unset_key : ('k, 'd) t -> unit
Ephemeron.K1.unset_key eph el
sets the key of eph
to be an empty key. Since there is only one key, the ephemeron starts behaving like a reference on the data.
val check_key : ('k, 'd) t -> bool
Ephemeron.K1.check_key eph
returns true
if the key of the eph
is full, false
if it is empty. Note that even if Ephemeron.K1.check_key eph
returns true
, a subsequent Ephemeron.K1.get_key
eph
can return None
.
Ephemeron.K1.blit_key eph1 eph2
sets the key of eph2
with the key of eph1
. Contrary to using Ephemeron.K1.get_key
followed by Ephemeron.K1.set_key
or Ephemeon.K1.unset_key
this function does not prevent the incremental GC from erasing the value in its current cycle.
val get_data : ('k, 'd) t -> 'd option
Ephemeron.K1.get_data eph
returns None
if the data of eph
is empty, Some x
(where x
is the data) if it is full.
val get_data_copy : ('k, 'd) t -> 'd option
Ephemeron.K1.get_data_copy eph
returns None
if the data of eph
is empty, Some x
(where x
is a (shallow) copy of the data) if it is full. This function has the same GC friendliness as Weak.get_copy
val set_data : ('k, 'd) t -> 'd -> unit
Ephemeron.K1.set_data eph el
sets the data of eph
to be a (full) data to el
val unset_data : ('k, 'd) t -> unit
Ephemeron.K1.unset_data eph el
sets the key of eph
to be an empty key. The ephemeron starts behaving like a weak pointer.
val check_data : ('k, 'd) t -> bool
Ephemeron.K1.check_data eph
returns true
if the data of the eph
is full, false
if it is empty. Note that even if Ephemeron.K1.check_data eph
returns true
, a subsequent Ephemeron.K1.get_data
eph
can return None
.
Ephemeron.K1.blit_data eph1 eph2
sets the data of eph2
with the data of eph1
. Contrary to using Ephemeron.K1.get_data
followed by Ephemeron.K1.set_data
or Ephemeon.K1.unset_data
this function does not prevent the incremental GC from erasing the value in its current cycle.
Functor building an implementation of a weak hash table
module MakeSeeded (H : Hashtbl.SeededHashedType) : SeededS with type key = H.t
Functor building an implementation of a weak hash table. The seed is similar to the one of Hashtbl.MakeSeeded
.