Module Ephemeron.GenHashTable

module GenHashTable: sig .. end

Hash tables on generic containers with notion of death and aliveness.


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 returns the data if it is alive



val set_key_data : 'a container ->       t -> 'a -> unit

set_key_data cont modifies 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