2e7443915348c93e25fe8d3b2b1999dffdcf7339
5 (* !!take care!!: this class does side effect, not a pure oassoc *)
10 val data
= Hashtbl.create
100
12 (* if put [] then no segfault, if [11] then segfault *)
13 method toset
= Obj.magic data
15 method empty
= {< data
= Hashtbl.create
100 >}
17 Hashtbl.add data k
true;
20 method iter f
= Hashtbl.iter
(fun k v
-> f k
) data
21 method view
= raise Todo
24 Hashtbl.remove data k
;
27 try (ignore
(Hashtbl.find data k
); true)
28 with Not_found
-> false
31 try (Hashtbl.iter
(fun k v
-> raise ReturnExn
) data
; false)
32 with ReturnExn
-> true
34 (* TODO method length *)
37 let v = Hashtbl.create
100 in
38 o#iter
(fun k
-> Hashtbl.add
v k
true);
39 s#iter
(fun k
-> Hashtbl.add
v k
true);
42 let v = Hashtbl.create
100 in
43 o#iter
(fun k
-> if s#mem k
then Hashtbl.add
v k
true);
46 let v = Hashtbl.create
100 in
47 o#iter
(fun k
-> if not
(s#mem k
) then Hashtbl.add
v k
true);
50 (* override default *)
54 Hashtbl.iter
(fun k _
-> x := Some k
; raise ReturnExn
) data
;
57 with ReturnExn
-> some
!x