1open Base
2
3type ('a, 'b) t = { tree : ('a, 'b) Avltree.t; cmp : 'a -> 'a -> int }
4
5let create ~cmp = { tree = Avltree.empty; cmp }
6
7let add t ~key ~data =
8 {
9 t with
10 tree =
11 Avltree.add t.tree ~replace:true ~compare:t.cmp ~added:(ref true) ~key
12 ~data;
13 }
14
15let remove t ~key =
16 { t with tree = Avltree.remove t.tree key ~removed:(ref true) ~compare:t.cmp }
17
18let find t ~key = Avltree.find t.tree key ~compare:t.cmp
19let iter t ~f = Avltree.iter t.tree ~f