From c893716c1aade3b3f6330526417a394519ccd7e6 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Sat, 16 Feb 2019 16:15:24 -0600 Subject: [PATCH] feat: add `remove` function to het map/tbl --- src/data/CCHet.ml | 8 ++++++++ src/data/CCHet.mli | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/data/CCHet.ml b/src/data/CCHet.ml index 183a296f..b6254dfc 100644 --- a/src/data/CCHet.ml +++ b/src/data/CCHet.ml @@ -109,6 +109,10 @@ module Tbl = struct let add t k v = add_pair_ t (Pair (k,v)) + let remove (type a) t (k:a Key.t) = + let module K = (val k) in + M.remove t K.id + let length t = M.length t let iter f t = M.iter (fun _ pair -> f (pair_of_e_pair pair)) t @@ -167,6 +171,10 @@ module Map = struct let add (type a) (k : a Key.t) v t = let module K = (val k) in add_e_pair_ (E_pair (k, K.Store v)) t + + let remove (type a) (k: a Key.t) t = + let module K = (val k) in + M.remove K.id t let cardinal t = M.cardinal t diff --git a/src/data/CCHet.mli b/src/data/CCHet.mli index 12ba06e0..3dc1a5f3 100644 --- a/src/data/CCHet.mli +++ b/src/data/CCHet.mli @@ -33,6 +33,8 @@ module Tbl : sig val add : t -> 'a Key.t -> 'a -> unit + val remove : t -> _ Key.t -> unit + val length : t -> int val find : t -> 'a Key.t -> 'a option @@ -65,6 +67,8 @@ module Map : sig val add : 'a Key.t -> 'a -> t -> t + val remove : _ Key.t -> t -> t + val length : t -> int val cardinal : t -> int