Library
Module
Module type
Parameter
Class
Class type
Signature of mutable LRU maps.
Keys in t
.
Values in t
.
val create : ?random:bool -> int -> t
create ?random cap
is a new map with capacity cap
.
~random
randomizes the underlying hash table. It defaults to false
. See Hashtbl.create
.
Note. The internal hash table is created with size cap
.
val is_empty : t -> bool
is_empty t
is true
iff t
is empty.
val items : t -> int
items t
is the number of bindings in t
.
val size : t -> int
size t
is the combined weight of bindings in t
.
val capacity : t -> int
capacity t
is the maximum combined weight of bindings this map will hold before they start being discarded in least-recently-used order.
val trim : t -> unit
trim t
discards bindings from t
, if needed, until size t <= capacity t
. The bindings are discarded in least-recently-used order.
val resize : int -> t -> unit
resize cap t
changes the capacity of t
to cap
, while leavind the bindings unchanged.
k
find k t
is the v
bound to k
. When k
is not bound in t
, the result is None
.
If promote
is true
, the binding k -> v
is promoted to most-recently-used. It defaults to true
.
add k v t
adds the binding k -> v
to t
. If k
is alread bound, the old binding is replaced. The binding k -> v
becomes most-recently-used.
If trim
is true
, add
trim
s the resulting map, ensuring it is not over capacity. It defaults to true
.
lru t
is the least-recently-used binding in t
, or None
, when t
is empty.
val drop_lru : t -> unit
drop_lru t
removes the binding lru t
.
Traversal direction for operations that visit all bindings.
`Up
means least-to-most recently used, or increasing relevance.`Down
means most-to-least recently used, or decreasing relevance.fold f z t
is f k0 v0 (... (f kn vn z))
.
~dir
controls the order of folding. Defaults to `Up
.
iter f t
applies f
to all the bindings in t
.
~dir
controls the order of application. Defaults to `Up
.
to_list t
are the bindings in t
. ~dir
controls the order, defaults to `Up
.
of_list kvs
is a map with the bindings from kvs
. Its size and capacity are the total weight of its bindings.
With respect to duplicates and the recently-used order, it behaves as if the bindings were added sequentially in the list order.
val pp :
?pp_size:(Format.formatter -> (int * int) -> unit) ->
?sep:(Format.formatter -> unit -> unit) ->
(Format.formatter -> (k * v) -> unit) ->
Format.formatter ->
t ->
unit