Skip to content

Commit 35b6d84

Browse files
committed
avoid deriving abstract in internalAVLset
1 parent 1167f80 commit 35b6d84

28 files changed

+417
-418
lines changed

jscomp/others/belt_MutableSet.ml

+18-18
Original file line numberDiff line numberDiff line change
@@ -44,29 +44,29 @@ type ('value,'id) t =
4444

4545

4646
let rec remove0 nt x ~cmp =
47-
let k = N.valueGet nt in
47+
let k = nt.N.value in
4848
let c = cmp x k [@bs] in
4949
if c = 0 then
50-
let l,r = N.(leftGet nt, rightGet nt) in
50+
let {N.left = l; right = r} = nt in
5151
match N.(toOpt l, toOpt r) with
5252
| None, _ -> r
5353
| _, None -> l
5454
| Some _, Some nr ->
55-
N.rightSet nt (N.removeMinAuxWithRootMutate nt nr);
55+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
5656
N.return (N.balMutate nt)
5757
else
5858
begin
5959
if c < 0 then
60-
match N.toOpt (N.leftGet nt) with
60+
match N.toOpt nt.left with
6161
| None -> N.return nt
6262
| Some l ->
63-
N.leftSet nt (remove0 ~cmp l x );
63+
nt.left <- (remove0 ~cmp l x );
6464
N.return (N.balMutate nt)
6565
else
66-
match N.toOpt (N.rightGet nt) with
66+
match N.toOpt nt.right with
6767
| None -> N.return nt
6868
| Some r ->
69-
N.rightSet nt (remove0 ~cmp r x);
69+
nt.right <- (remove0 ~cmp r x);
7070
N.return (N.balMutate nt)
7171
end
7272

@@ -101,30 +101,30 @@ let removeMany d xs =
101101

102102

103103
let rec removeCheck0 nt x removed ~cmp=
104-
let k = N.valueGet nt in
104+
let k = nt.N.value in
105105
let c = (Belt_Id.getCmpInternal cmp) x k [@bs] in
106106
if c = 0 then
107107
let () = removed .contents<- true in
108-
let l,r = N.(leftGet nt, rightGet nt) in
108+
let {N.left = l; right = r} = nt in
109109
match N.(toOpt l, toOpt r) with
110110
| None, _ -> r
111111
| _, None -> l
112112
| Some _, Some nr ->
113-
N.rightSet nt (N.removeMinAuxWithRootMutate nt nr);
113+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
114114
N.return (N.balMutate nt)
115115
else
116116
begin
117117
if c < 0 then
118-
match N.toOpt (N.leftGet nt) with
118+
match N.toOpt nt.left with
119119
| None -> N.return nt
120120
| Some l ->
121-
N.leftSet nt (removeCheck0 ~cmp l x removed);
121+
nt.left <- (removeCheck0 ~cmp l x removed);
122122
N.return (N.balMutate nt)
123123
else
124-
match N.toOpt (N.rightGet nt) with
124+
match N.toOpt nt.right with
125125
| None -> N.return nt
126126
| Some r ->
127-
N.rightSet nt (removeCheck0 ~cmp r x removed);
127+
nt.right <- (removeCheck0 ~cmp r x removed);
128128
N.return (N.balMutate nt)
129129
end
130130

@@ -149,16 +149,16 @@ let rec addCheck0 t x added ~cmp =
149149
added .contents<- true;
150150
N.singleton x
151151
| Some nt ->
152-
let k = N.valueGet nt in
152+
let k = nt.N.value in
153153
let c = cmp x k [@bs] in
154154
if c = 0 then t
155155
else
156-
let l, r = N.(leftGet nt, rightGet nt) in
156+
let {N.left = l; right = r} = nt in
157157
(if c < 0 then
158158
let ll = addCheck0 ~cmp l x added in
159-
N.leftSet nt ll
159+
nt.left <- ll
160160
else
161-
N.rightSet nt (addCheck0 ~cmp r x added );
161+
nt.right <- (addCheck0 ~cmp r x added );
162162
);
163163
N.return (N.balMutate nt)
164164

jscomp/others/belt_MutableSetInt.ml

+18-18
Original file line numberDiff line numberDiff line change
@@ -46,28 +46,28 @@ type t = {
4646

4747

4848
let rec remove0 nt (x : value)=
49-
let k = N.valueGet nt in
49+
let k = nt.N.value in
5050
if x = k then
51-
let l,r = N.(leftGet nt, rightGet nt) in
51+
let {N.left = l; right = r} = nt in
5252
match N.(toOpt l, toOpt r) with
5353
| None, _ -> r
5454
| _, None -> l
5555
| Some _, Some nr ->
56-
N.rightSet nt (N.removeMinAuxWithRootMutate nt nr);
56+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
5757
N.return (N.balMutate nt)
5858
else
5959
begin
6060
if x < k then
61-
match N.toOpt (N.leftGet nt) with
61+
match N.toOpt nt.left with
6262
| None -> N.return nt
6363
| Some l ->
64-
N.leftSet nt (remove0 l x );
64+
nt.left <- (remove0 l x );
6565
N.return (N.balMutate nt)
6666
else
67-
match N.toOpt (N.rightGet nt) with
67+
match N.toOpt nt.right with
6868
| None -> N.return nt
6969
| Some r ->
70-
N.rightSet nt (remove0 r x);
70+
nt.right <- (remove0 r x);
7171
N.return (N.balMutate nt)
7272
end
7373

@@ -99,29 +99,29 @@ let removeMany (d : t) xs =
9999
d.data <- removeMany0 nt xs 0 len
100100

101101
let rec removeCheck0 nt (x : value) removed =
102-
let k = N.valueGet nt in
102+
let k = nt.N.value in
103103
if x = k then
104104
let () = removed .contents<- true in
105-
let l,r = N.(leftGet nt, rightGet nt) in
105+
let {N.left = l; right = r} = nt in
106106
match N.(toOpt l, toOpt r) with
107107
| None, _ -> r
108108
| _ , None -> l
109109
| Some _, Some nr ->
110-
N.rightSet nt (N.removeMinAuxWithRootMutate nt nr);
110+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
111111
N.return (N.balMutate nt)
112112
else
113113
begin
114114
if x < k then
115-
match N.toOpt (N.leftGet nt) with
115+
match N.toOpt nt.left with
116116
| None -> N.return nt
117117
| Some l ->
118-
N.leftSet nt (removeCheck0 l x removed);
118+
nt.left <- (removeCheck0 l x removed);
119119
N.return (N.balMutate nt)
120120
else
121-
match N.toOpt (N.rightGet nt) with
121+
match N.toOpt nt.right with
122122
| None -> N.return nt
123123
| Some r ->
124-
N.rightSet nt (removeCheck0 r x removed);
124+
nt.right <- (removeCheck0 r x removed);
125125
N.return (N.balMutate nt)
126126
end
127127

@@ -145,15 +145,15 @@ let rec addCheck0 t (x : value) added =
145145
added .contents<- true;
146146
N.singleton x
147147
| Some nt ->
148-
let k = N.valueGet nt in
148+
let k = nt.N.value in
149149
if x = k then t
150150
else
151-
let l, r = N.(leftGet nt, rightGet nt) in
151+
let {N.left = l; right = r} = nt in
152152
(if x < k then
153153
let ll = addCheck0 l x added in
154-
N.leftSet nt ll
154+
nt.left <- ll
155155
else
156-
N.rightSet nt (addCheck0 r x added );
156+
nt.right <- (addCheck0 r x added );
157157
);
158158
N.return (N.balMutate nt)
159159

jscomp/others/belt_MutableSetString.ml

+18-18
Original file line numberDiff line numberDiff line change
@@ -46,28 +46,28 @@ type t = {
4646

4747

4848
let rec remove0 nt (x : value)=
49-
let k = N.valueGet nt in
49+
let k = nt.N.value in
5050
if x = k then
51-
let l,r = N.(leftGet nt, rightGet nt) in
51+
let {N.left = l; right = r} = nt in
5252
match N.(toOpt l, toOpt r) with
5353
| None, _ -> r
5454
| _, None -> l
5555
| Some _, Some nr ->
56-
N.rightSet nt (N.removeMinAuxWithRootMutate nt nr);
56+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
5757
N.return (N.balMutate nt)
5858
else
5959
begin
6060
if x < k then
61-
match N.toOpt (N.leftGet nt) with
61+
match N.toOpt nt.left with
6262
| None -> N.return nt
6363
| Some l ->
64-
N.leftSet nt (remove0 l x );
64+
nt.left <- (remove0 l x );
6565
N.return (N.balMutate nt)
6666
else
67-
match N.toOpt (N.rightGet nt) with
67+
match N.toOpt nt.right with
6868
| None -> N.return nt
6969
| Some r ->
70-
N.rightSet nt (remove0 r x);
70+
nt.right <- (remove0 r x);
7171
N.return (N.balMutate nt)
7272
end
7373

@@ -99,29 +99,29 @@ let removeMany (d : t) xs =
9999
d.data <- removeMany0 nt xs 0 len
100100

101101
let rec removeCheck0 nt (x : value) removed =
102-
let k = N.valueGet nt in
102+
let k = nt.N.value in
103103
if x = k then
104104
let () = removed .contents<- true in
105-
let l,r = N.(leftGet nt, rightGet nt) in
105+
let {N.left = l; right = r} = nt in
106106
match N.(toOpt l, toOpt r) with
107107
| None, _ -> r
108108
| _ , None -> l
109109
| Some _, Some nr ->
110-
N.rightSet nt (N.removeMinAuxWithRootMutate nt nr);
110+
nt.right <- (N.removeMinAuxWithRootMutate nt nr);
111111
N.return (N.balMutate nt)
112112
else
113113
begin
114114
if x < k then
115-
match N.toOpt (N.leftGet nt) with
115+
match N.toOpt nt.left with
116116
| None -> N.return nt
117117
| Some l ->
118-
N.leftSet nt (removeCheck0 l x removed);
118+
nt.left <- (removeCheck0 l x removed);
119119
N.return (N.balMutate nt)
120120
else
121-
match N.toOpt (N.rightGet nt) with
121+
match N.toOpt nt.right with
122122
| None -> N.return nt
123123
| Some r ->
124-
N.rightSet nt (removeCheck0 r x removed);
124+
nt.right <- (removeCheck0 r x removed);
125125
N.return (N.balMutate nt)
126126
end
127127

@@ -145,15 +145,15 @@ let rec addCheck0 t (x : value) added =
145145
added .contents<- true;
146146
N.singleton x
147147
| Some nt ->
148-
let k = N.valueGet nt in
148+
let k = nt.N.value in
149149
if x = k then t
150150
else
151-
let l, r = N.(leftGet nt, rightGet nt) in
151+
let {N.left = l; right = r} = nt in
152152
(if x < k then
153153
let ll = addCheck0 l x added in
154-
N.leftSet nt ll
154+
nt.left <- ll
155155
else
156-
N.rightSet nt (addCheck0 r x added );
156+
nt.right <- (addCheck0 r x added );
157157
);
158158
N.return (N.balMutate nt)
159159

jscomp/others/belt_Set.cppo.ml

+13-13
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ let rec add (t : t) (x : value) : t =
4242
match N.toOpt t with
4343
None -> N.singleton x
4444
| Some nt ->
45-
let v = N.valueGet nt in
45+
let v = nt.value in
4646
if x = v then t else
47-
let l, r = N.(leftGet nt , rightGet nt) in
47+
let {N.left = l; right = r} = nt in
4848
if x < v then
4949
let ll = add l x in
5050
if ll == l then t
@@ -68,13 +68,13 @@ let rec remove (t : t) (x : value) : t =
6868
match N.toOpt t with
6969
| None -> t
7070
| Some n ->
71-
let l,v,r = N.(leftGet n, valueGet n, rightGet n) in
71+
let {N.left = l; value = v; right = r} = n in
7272
if x = v then
7373
match N.toOpt l, N.toOpt r with
7474
| None, _ -> r
7575
| _, None -> l
7676
| _, Some rn ->
77-
let v = ref (N.valueGet rn) in
77+
let v = ref rn.value in
7878
let r = N.removeMinAuxWithRef rn v in
7979
N.bal l v.contents r
8080
else
@@ -106,7 +106,7 @@ let subset = I.subset
106106
let has = I.has
107107

108108
let rec splitAuxNoPivot (n : _ N.node) (x : value) : t * t =
109-
let l,v,r = N.(leftGet n , valueGet n, rightGet n) in
109+
let {N.left = l; value = v; right = r} = n in
110110
if x = v then l, r
111111
else if x < v then
112112
match N.toOpt l with
@@ -125,7 +125,7 @@ let rec splitAuxNoPivot (n : _ N.node) (x : value) : t * t =
125125

126126

127127
let rec splitAuxPivot (n : _ N.node) (x : value) pres : t * t =
128-
let l,v,r = N.(leftGet n , valueGet n, rightGet n) in
128+
let {N.left = l; value = v; right = r} = n in
129129
if x = v then begin
130130
pres .contents<- true;
131131
(l, r)
@@ -160,16 +160,16 @@ let rec union (s1 : t) (s2 : t) =
160160
(None, _) -> s2
161161
| (_, None) -> s1
162162
| Some n1, Some n2 (* (Node(l1, v1, r1, h1), Node(l2, v2, r2, h2)) *) ->
163-
let h1, h2 = N.(heightGet n1 , heightGet n2) in
163+
let h1, h2 = n1.height, n2.height in
164164
if h1 >= h2 then
165-
if h2 = 1 then add s1 (N.valueGet n2) else begin
166-
let l1, v1, r1 = N.(leftGet n1, valueGet n1, rightGet n1) in
165+
if h2 = 1 then add s1 n2.value else begin
166+
let {N.left = l1; value = v1; right = r1} = n1 in
167167
let (l2, r2) = splitAuxNoPivot n2 v1 in
168168
N.joinShared (union l1 l2) v1 (union r1 r2)
169169
end
170170
else
171-
if h1 = 1 then add s2 (N.valueGet n1) else begin
172-
let l2, v2, r2 = N.(leftGet n2 , valueGet n2, rightGet n2) in
171+
if h1 = 1 then add s2 n1.value else begin
172+
let {N.left = l2; value = v2; right = r2} = n2 in
173173
let (l1, r1) = splitAuxNoPivot n1 v2 in
174174
N.joinShared (union l1 l2) v2 (union r1 r2)
175175
end
@@ -179,7 +179,7 @@ let rec intersect (s1 : t) (s2 : t) =
179179
(None, _)
180180
| (_, None) -> N.empty
181181
| Some n1, Some n2 (* (Node(l1, v1, r1, _), t2) *) ->
182-
let l1,v1,r1 = N.(leftGet n1, valueGet n1, rightGet n1) in
182+
let {N.left = l1; value = v1; right = r1} = n1 in
183183
let pres = ref false in
184184
let l2,r2 = splitAuxPivot n2 v1 pres in
185185
let ll = intersect l1 l2 in
@@ -192,7 +192,7 @@ let rec diff (s1 : t) (s2 : t) =
192192
| (None, _)
193193
| (_, None) -> s1
194194
| Some n1, Some n2 (* (Node(l1, v1, r1, _), t2) *) ->
195-
let l1,v1,r1 = N.(leftGet n1, valueGet n1, rightGet n1) in
195+
let {N.left = l1; value = v1; right = r1} = n1 in
196196
let pres = ref false in
197197
let l2, r2 = splitAuxPivot n2 v1 pres in
198198
let ll = diff l1 l2 in

0 commit comments

Comments
 (0)