module Make:
Functor building an implementation of the weak hash set structure.
H.equal can't be the physical equality, since only shallow
copies of the elements in the set are given to it.
| Parameters: |
|
type data
The type of the elements stored in the table.
type t
The type of tables that contain elements of type data.
Note that weak hash sets cannot be marshaled using
output_value or the functions of the Marshal
module.
val create : int -> tcreate n creates a new empty weak hash set, of initial
size n. The table will grow as needed.
val clear : t -> unitRemove all elements from the table.
val merge : t -> data -> datamerge t x returns an instance of x found in t if any,
or else adds x to t and return x.
val add : t -> data -> unitadd t x adds x to t. If there is already an instance
of x in t, it is unspecified which one will be
returned by subsequent calls to find and merge.
val remove : t -> data -> unitremove t x removes from t one instance of x. Does
nothing if there is no instance of x in t.
val find : t -> data -> datafind t x returns an instance of x found in t.
Not_found if there is no such element.val find_opt : t -> data -> data optionfind_opt t x returns an instance of x found in t
or None if there is no such element.
val find_all : t -> data -> data listfind_all t x returns a list of all the instances of x
found in t.
val mem : t -> data -> boolmem t x returns true if there is at least one instance
of x in t, false otherwise.
val iter : (data -> unit) -> t -> unititer f t calls f on each element of t, in some unspecified
order. It is not specified what happens if f tries to change
t itself.
val fold : (data -> 'acc -> 'acc) -> t -> 'acc -> 'accfold f t init computes (f d1 (... (f dN init))) where
d1 ... dN are the elements of t in some unspecified order.
It is not specified what happens if f tries to change t
itself.
val count : t -> intCount the number of elements in the table. count t gives the
same result as fold (fun _ n -> n+1) t 0 but does not delay the
deallocation of the dead elements.
val stats : t -> int * int * int * int * int * intReturn statistics on the table. The numbers are, in order: table length, number of entries, sum of bucket lengths, smallest bucket length, median bucket length, biggest bucket length.