Commit | Line | Data |
---|---|---|
34e49164 C |
1 | open Ocollection |
2 | open Oset | |
3 | ||
4 | ||
5 | class ['a] osetpt xs = | |
6 | object(o) | |
7 | inherit [int] oset | |
8 | ||
9 | val data = SetPt.empty | |
10 | method tosetpt = data | |
11 | (* if put [] then no segfault, if [11] then segfault *) | |
12 | method toset = Obj.magic data | |
13 | ||
14 | method empty = {< data = SetPt.empty >} | |
15 | method add e = {< data = SetPt.add e data >} | |
16 | method iter f = SetPt.iter f data | |
17 | method view = | |
18 | if SetPt.is_empty data | |
19 | then Empty | |
20 | else let el = SetPt.choose data in Cons (el, o#del el) | |
21 | ||
22 | method del e = {< data = SetPt.remove e data >} | |
23 | method mem e = SetPt.mem e data | |
24 | method null = SetPt.is_empty data | |
25 | ||
26 | method tolist = SetPt.elements data | |
27 | method length = SetPt.cardinal data | |
28 | ||
29 | method union s = {< data = SetPt.union data s#tosetpt >} | |
30 | method inter s = {< data = SetPt.inter data s#tosetpt >} | |
31 | method minus s = {< data = SetPt.diff data s#tosetpt >} | |
32 | ||
33 | end |