module CCHashtbl:sig
..end
type'a
sequence =('a -> unit) -> unit
type'a
eq ='a -> 'a -> bool
type'a
hash ='a -> int
type'a
printer =Format.formatter -> 'a -> unit
val get : ('a, 'b) Hashtbl.t -> 'a -> 'b option
Hashtbl.find
val get_or : ('a, 'b) Hashtbl.t -> 'a -> or_:'b -> 'b
get_or tbl k ~or_
returns the value associated to k
if present,
and returns or_
otherwise (if k
doesn't belong in tbl
)val keys : ('a, 'b) Hashtbl.t -> 'a sequence
Hashtbl.iter
)val values : ('a, 'b) Hashtbl.t -> 'b sequence
val keys_list : ('a, 'b) Hashtbl.t -> 'a list
keys_list t
is the list of keys in t
.val values_list : ('a, 'b) Hashtbl.t -> 'b list
values_list t
is the list of values in t
.val map_list : ('a -> 'b -> 'c) -> ('a, 'b) Hashtbl.t -> 'c list
val incr : ?by:int -> ('a, int) Hashtbl.t -> 'a -> unit
incr ?by tbl x
increments or initializes the counter associated with x
.
If get tbl x = None
, then after update, get tbl x = Some 1
;
otherwise, if get tbl x = Some n
, now get tbl x = Some (n+1)
.by
: if specified, the int value is incremented by by
rather than 1val decr : ?by:int -> ('a, int) Hashtbl.t -> 'a -> unit
CCHashtbl.incr
but substract 1 (or the value of by
).
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.val to_seq : ('a, 'b) Hashtbl.t -> ('a * 'b) sequence
val add_list : ('a, 'b list) Hashtbl.t -> 'a -> 'b -> unit
add_list tbl x y
adds y
to the list x
is bound to. If x
is
not bound, it becomes bound to [y]
.val add_seq : ('a, 'b) Hashtbl.t -> ('a * 'b) sequence -> unit
Hashtbl.add
.val of_seq : ('a * 'b) sequence -> ('a, 'b) Hashtbl.t
val add_seq_count : ('a, int) Hashtbl.t -> 'a sequence -> unit
add_seq_count tbl seq
increments the count of each element of seq
by calling CCHashtbl.incr
. This is useful for counting how many times each
element of seq
occurs.val of_seq_count : 'a sequence -> ('a, int) Hashtbl.t
val to_list : ('a, 'b) Hashtbl.t -> ('a * 'b) list
val of_list : ('a * 'b) list -> ('a, 'b) Hashtbl.t
val update : ('a, 'b) Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit
update tbl ~f ~k
updates key k
by calling f k (Some v)
if
k
was mapped to v
, or f k None
otherwise; if the call
returns None
then k
is removed/stays removed, if the call
returns Some v'
then the binding k -> v'
is inserted
using Hashtbl.replace
val print : 'a printer ->
'b printer -> ('a, 'b) Hashtbl.t printer
module type S =sig
..end
module Make(
X
:
Hashtbl.HashedType
)
:S
with type key = X.t and type 'a t = 'a Hashtbl.Make(X).t
A table with a default element for keys that were never added.
module type DEFAULT =sig
..end
module MakeDefault(
X
:
Hashtbl.HashedType
)
:DEFAULT
with type key = X.t
module type COUNTER =sig
..end
module MakeCounter(
X
:
Hashtbl.HashedType
)
:COUNTER
with type elt = X.t and type t = int Hashtbl.Make(X).t
t
is exposed