diff --git a/src/core/CCHashtbl.ml b/src/core/CCHashtbl.ml index fe5289b7..4bf972f0 100644 --- a/src/core/CCHashtbl.ml +++ b/src/core/CCHashtbl.ml @@ -40,6 +40,9 @@ let keys tbl k = Hashtbl.iter (fun key _ -> k key) tbl let values tbl k = Hashtbl.iter (fun _ v -> k v) tbl +let keys_list tbl = Hashtbl.fold (fun k _ a -> k::a) tbl [] +let values_list tbl = Hashtbl.fold (fun _ v a -> v::a) tbl [] + let map_list f h = Hashtbl.fold (fun x y acc -> f x y :: acc) diff --git a/src/core/CCHashtbl.mli b/src/core/CCHashtbl.mli index fcfde106..9327745d 100644 --- a/src/core/CCHashtbl.mli +++ b/src/core/CCHashtbl.mli @@ -44,6 +44,12 @@ val keys : ('a,'b) Hashtbl.t -> 'a sequence val values : ('a,'b) Hashtbl.t -> 'b sequence (** Iterate on values in the table *) +val keys_list : ('a, 'b) Hashtbl.t -> 'a list +(** [keys t] is the list of keys in [t]. *) + +val values_list : ('a, 'b) Hashtbl.t -> 'b list +(** [values t] is the list of values in [t]. *) + val map_list : ('a -> 'b -> 'c) -> ('a, 'b) Hashtbl.t -> 'c list (** Map on a hashtable's items, collect into a list *)