dlists: fix equality when custom dlist-link nodes are used.
parent
20046a08a7
commit
fd61f71956
basis/dlists
|
@ -118,34 +118,34 @@ TUPLE: my-node < dlist-link { obj fixnum } ;
|
|||
[ prev>> ] [ next>> ] bi 2array { f f } assert= ;
|
||||
|
||||
[ V{ } ] [ <dlist> 1 <my-node> over push-node-back [ [ back>> ] [ ] bi delete-node ] [ ] bi dlist>sequence ] unit-test
|
||||
[ V{ 1 2 } ] [| |
|
||||
[ V{ 1 2 } t ] [| |
|
||||
<dlist> :> dl
|
||||
1 <my-node> :> n1 n1 dl push-node-back
|
||||
2 <my-node> :> n2 n2 dl push-node-back
|
||||
3 <my-node> :> n3 n3 dl push-node-back
|
||||
|
||||
n3 dl delete-node n3 assert-links
|
||||
dl dlist>sequence
|
||||
dl dlist>sequence dup >dlist dl =
|
||||
] unit-test
|
||||
|
||||
[ V{ 1 3 } ] [| |
|
||||
[ V{ 1 3 } t ] [| |
|
||||
<dlist> :> dl
|
||||
1 <my-node> :> n1 n1 dl push-node-back
|
||||
2 <my-node> :> n2 n2 dl push-node-back
|
||||
3 <my-node> :> n3 n3 dl push-node-back
|
||||
|
||||
n2 dl delete-node n2 assert-links
|
||||
dl dlist>sequence
|
||||
dl dlist>sequence dup >dlist dl =
|
||||
] unit-test
|
||||
|
||||
[ V{ 2 3 } ] [| |
|
||||
[ V{ 2 3 } t ] [| |
|
||||
<dlist> :> dl
|
||||
1 <my-node> :> n1 n1 dl push-node-back
|
||||
2 <my-node> :> n2 n2 dl push-node-back
|
||||
3 <my-node> :> n3 n3 dl push-node-back
|
||||
|
||||
n1 dl delete-node n1 assert-links
|
||||
dl dlist>sequence
|
||||
dl dlist>sequence dup >dlist dl =
|
||||
] unit-test
|
||||
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@ TUPLE: dlist-node < dlist-link obj ;
|
|||
|
||||
M: dlist-link obj>> ;
|
||||
|
||||
M: dlist-link node-value obj>> ;
|
||||
|
||||
: new-dlist-link ( obj prev next class -- node )
|
||||
new
|
||||
swap >>next
|
||||
|
@ -33,14 +35,12 @@ TUPLE: dlist
|
|||
|
||||
M: dlist deque-empty? front>> not ; inline
|
||||
|
||||
M: dlist-node node-value obj>> ;
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: dlist-nodes= ( dlist-node/f dlist-node/f -- ? )
|
||||
{
|
||||
[ [ dlist-node? ] both? ]
|
||||
[ [ obj>> ] bi@ = ]
|
||||
[ [ dlist-link? ] both? ]
|
||||
[ [ obj>> ] bi@ = ]
|
||||
} 2&& ; inline
|
||||
|
||||
PRIVATE>
|
||||
|
@ -49,7 +49,7 @@ M: dlist equal?
|
|||
over dlist? [
|
||||
[ front>> ] bi@
|
||||
[ 2dup dlist-nodes= ]
|
||||
[ [ next>> ] bi@ ] while
|
||||
[ [ next>> ] bi@ ] while
|
||||
or not
|
||||
] [
|
||||
2drop f
|
||||
|
|
Loading…
Reference in New Issue