Module Containers.Hashtbl
- since
- 0.14
include module type of Stdlib.Hashtbl with type Hashtbl.statistics = Stdlib.Hashtbl.statistics and module Hashtbl.Make = Stdlib.Hashtbl.Make and type ('a, 'b) Hashtbl.t = ('a, 'b) Stdlib.Hashtbl.t
val create : ?random:bool -> int -> ('a, 'b) t
val clear : ('a, 'b) t -> unit
val reset : ('a, 'b) t -> unit
val copy : ('a, 'b) t -> ('a, 'b) t
val add : ('a, 'b) t -> 'a -> 'b -> unit
val find : ('a, 'b) t -> 'a -> 'b
val find_opt : ('a, 'b) t -> 'a -> 'b option
val find_all : ('a, 'b) t -> 'a -> 'b list
val mem : ('a, 'b) t -> 'a -> bool
val remove : ('a, 'b) t -> 'a -> unit
val replace : ('a, 'b) t -> 'a -> 'b -> unit
val iter : ('a -> 'b -> unit) -> ('a, 'b) t -> unit
val filter_map_inplace : ('a -> 'b -> 'b option) -> ('a, 'b) t -> unit
val fold : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c
val length : ('a, 'b) t -> int
val randomize : unit -> unit
val is_randomized : unit -> bool
type statistics
= Stdlib.Hashtbl.statistics
=
{
num_bindings : int;
num_buckets : int;
max_bucket_length : int;
bucket_histogram : int array;
}
val stats : ('a, 'b) t -> statistics
val to_seq : ('a, 'b) t -> ('a * 'b) Stdlib.Seq.t
val to_seq_keys : ('a, 'b) t -> 'a Stdlib.Seq.t
val to_seq_values : ('a, 'b) t -> 'b Stdlib.Seq.t
val add_seq : ('a, 'b) t -> ('a * 'b) Stdlib.Seq.t -> unit
val replace_seq : ('a, 'b) t -> ('a * 'b) Stdlib.Seq.t -> unit
val of_seq : ('a * 'b) Stdlib.Seq.t -> ('a, 'b) t
module type HashedType = sig ... end
module type S = sig ... end
module type SeededHashedType = sig ... end
module type SeededS = sig ... end
module MakeSeeded : functor (H : SeededHashedType) -> sig ... end
include CCHashtbl.Poly
val get : ('a, 'b) Stdlib.Hashtbl.t -> 'a -> 'b option
get tbl k
finds a binding for the keyk
if present, or returnsNone
if no value is found. Safe version ofHashtbl
.find.
val get_or : ('a, 'b) Stdlib.Hashtbl.t -> 'a -> default:'b -> 'b
get_or tbl k ~default
returns the value associated tok
if present, and returnsdefault
otherwise (ifk
doesn't belong intbl
).- since
- 0.16
val keys : ('a, 'b) Stdlib.Hashtbl.t -> 'a CCHashtbl.iter
keys tbl f
iterates on keys (similar order asHashtbl
.iter).
val values : ('a, 'b) Stdlib.Hashtbl.t -> 'b CCHashtbl.iter
values tbl f
iterates on values in the tabletbl
.
val keys_list : ('a, 'b) Stdlib.Hashtbl.t -> 'a list
keys_list tbl
is the list of keys intbl
. If the key is in the Hashtable multiple times, all occurrences will be returned.- since
- 0.8
val values_list : ('a, 'b) Stdlib.Hashtbl.t -> 'b list
values_list tbl
is the list of values intbl
.- since
- 0.8
val map_list : ('a -> 'b -> 'c) -> ('a, 'b) Stdlib.Hashtbl.t -> 'c list
map_list f tbl
maps on atbl
's items. Collect into a list.
val incr : ?by:int -> ('a, int) Stdlib.Hashtbl.t -> 'a -> unit
incr ?by tbl x
increments or initializes the counter associated withx
. Ifget tbl x = None
, then after update,get tbl x = Some 1
; otherwise, ifget tbl x = Some n
, nowget tbl x = Some (n+1)
.- parameter by
if specified, the int value is incremented by
by
rather than 1.
- since
- 0.16
val decr : ?by:int -> ('a, int) Stdlib.Hashtbl.t -> 'a -> unit
decr ?by tbl x
is likeincr
but subtract 1 (or the value ofby
). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.- since
- 0.16
val to_iter : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) CCHashtbl.iter
Iterate on bindings in the table.
- since
- 2.8
val add_list : ('a, 'b list) Stdlib.Hashtbl.t -> 'a -> 'b -> unit
add_list tbl x y
addsy
to the listx
is bound to. Ifx
is not bound, it becomes bound toy
.- since
- 0.16
val add_iter : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) CCHashtbl.iter -> unit
Add the corresponding pairs to the table, using
Hashtbl
.add.- since
- 2.8
val add_seq : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) Stdlib.Seq.t -> unit
Add the corresponding pairs to the table, using
Hashtbl
.add. Renamed fromadd_std_seq
since 3.0.- since
- 3.0
val of_iter : ('a * 'b) CCHashtbl.iter -> ('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order.
- since
- 2.8
val of_seq : ('a * 'b) Stdlib.Seq.t -> ('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order. Renamed from
of_std_seq
since 3.0.- since
- 3.0
val add_iter_count : ('a, int) Stdlib.Hashtbl.t -> 'a CCHashtbl.iter -> unit
add_iter_count tbl i
increments the count of each element ofi
by callingincr
. This is useful for counting how many times each element ofi
occurs.- since
- 2.8
val add_seq_count : ('a, int) Stdlib.Hashtbl.t -> 'a Stdlib.Seq.t -> unit
add_seq_count tbl seq
increments the count of each element ofseq
by callingincr
. This is useful for counting how many times each element ofseq
occurs. Renamed fromadd_std_seq_count
since 3.0.- since
- 3.0
val of_iter_count : 'a CCHashtbl.iter -> ('a, int) Stdlib.Hashtbl.t
Like
add_seq_count
, but allocates a new table and returns it.- since
- 2.8
val of_seq_count : 'a Stdlib.Seq.t -> ('a, int) Stdlib.Hashtbl.t
Like
add_seq_count
, but allocates a new table and returns it. Renamed fromof_std_seq_count
since 3.0.- since
- 3.0
val to_list : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) list
to_list tbl
returns the list of (key,value) bindings (order unspecified).
val of_list : ('a * 'b) list -> ('a, 'b) Stdlib.Hashtbl.t
of_list l
builds a table from the given listl
of bindingsk_i -> v_i
, added in order usingadd
. If a key occurs several times, it will be added several times, and the visible binding will be the last one.
val update : ('a, 'b) Stdlib.Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit
update tbl ~f ~k
updates keyk
by callingf k (Some v)
ifk
was mapped tov
, orf k None
otherwise; if the call returnsNone
thenk
is removed/stays removed, if the call returnsSome v'
then the bindingk -> v'
is inserted usingHashtbl
.replace.- since
- 0.14
val get_or_add : ('a, 'b) Stdlib.Hashtbl.t -> f:('a -> 'b) -> k:'a -> 'b
get_or_add tbl ~k ~f
finds and returns the binding ofk
intbl
, if it exists. If it does not exist, thenf k
is called to obtain a new bindingv
;k -> v
is added totbl
andv
is returned.- since
- 1.0
val pp : ?pp_start:unit CCHashtbl.printer -> ?pp_stop:unit CCHashtbl.printer -> ?pp_sep:unit CCHashtbl.printer -> ?pp_arrow:unit CCHashtbl.printer -> 'a CCHashtbl.printer -> 'b CCHashtbl.printer -> ('a, 'b) Stdlib.Hashtbl.t CCHashtbl.printer
pp ~pp_start ~pp_stop ~pp_sep ~pp arrow pp_k pp_v
returns a table printer given app_k
printer for individual key and app_v
printer for individual value.pp_start
andpp_stop
control the opening and closing delimiters, by default print nothing.pp_sep
control the separator between binding.pp_arrow
control the arrow between the key and value. Renamed fromprint
since 2.0.- since
- 0.13
module type S' = CCHashtbl.S
module Make' = CCHashtbl.Make