# Module Ephemeron.GenHashTable

    module GenHashTable: sig .. end

Define a hash table on generic containers which have a notion of "death" and aliveness. If a binding is dead the hash table can automatically remove it.

    type equal =

`|` | `ETrue`
`|` | `EFalse`
`|` | `EDead` | `(*` | the container is dead | `*)`

    module MakeSeeded: functor (H : sig
    type t

    keys

    type 'a container

    contains keys and the associated data

    val hash : int -> t -> int
    same as Hashtbl.SeededHashedType

    val equal : 'a container ->
           t -> Ephemeron.GenHashTable.equal
    equality predicate used to compare a key with the one in a
            container. Can return EDead if the keys in the container are
            dead

    val create : t ->
           'a -> 'a container
    create key data creates a container from
            some initials keys and one data

    val get_key : 'a container ->
           t option
    get_key cont returns the keys if they are all alive

    val get_data : 'a container -> 'a option
    get_data cont return the data if it is alive

    val set_key_data : 'a container ->
           t -> 'a -> unit
    set_key_data cont modify the key and data

    val check_key : 'a container -> bool
    check_key cont checks if all the keys contained in the data
            are alive

    end) -> Ephemeron.SeededS  with type key = H.t

Functor building an implementation of an hash table that use the container for keeping the information given