Module Weak.MakeSource

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

Signature

Sourcetype data = H.t

The type of the elements stored in the table.

Sourcetype t

The type of tables that contain elements of type data. Note that weak hash sets cannot be marshaled using Stdlib.output_value or the functions of the Marshal module.

Sourceval create : int -> t

create n creates a new empty weak hash set, of initial size n. The table will grow as needed.

Sourceval clear : t -> unit

Remove all elements from the table.

Sourceval merge : t -> data -> data

merge t x returns an instance of x found in t if any, or else adds x to t and return x.

Sourceval add : t -> data -> unit

add 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.

Sourceval remove : t -> data -> unit

remove t x removes from t one instance of x. Does nothing if there is no instance of x in t.

Sourceval find : t -> data -> data

find t x returns an instance of x found in t.

  • raises Not_found

    if there is no such element.

Sourceval find_opt : t -> data -> data option

find_opt t x returns an instance of x found in t or None if there is no such element.

  • since 4.05
Sourceval find_all : t -> data -> data list

find_all t x returns a list of all the instances of x found in t.

Sourceval mem : t -> data -> bool

mem t x returns true if there is at least one instance of x in t, false otherwise.

Sourceval iter : (data -> unit) -> t -> unit

iter 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.

Sourceval fold : (data -> 'acc -> 'acc) -> t -> 'acc -> 'acc

fold 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.

Sourceval count : t -> int

Count 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.

Sourceval stats : t -> int * int * int * int * int * int

Return 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.