     { growable read-only } ;
 C: <pusher-cursor> pusher-cursor
 
-INSTANCE: pusher-cursor forward-cursor
-
-! XXX define a protocol for stream cursors that don't actually move
-M: pusher-cursor cursor-compatible? 2drop f ; inline
-M: pusher-cursor cursor-valid? drop t ; inline
-M: pusher-cursor cursor= 2drop f ; inline
-M: pusher-cursor inc-cursor ; inline
-
+INSTANCE: pusher-cursor infinite-stream-cursor
 INSTANCE: pusher-cursor output-cursor
 
 M: pusher-cursor set-cursor-value growable>> push ; inline

M: output-cursor set-cursor-value-unsafe set-cursor-value ; inline
M: output-cursor set-cursor-value
    dup cursor-valid? [ set-cursor-value-unsafe ] [ invalid-cursor ] if ; inline

!
! basic iterator

! (c)2010 Joe Groff bsd license
USING: accessors arrays assocs combinators.short-circuit fry
hashtables kernel locals math math.functions sequences ;
FROM: sequences.private => nth-unsafe set-nth-unsafe ;
FROM: hashtables.private => tombstone? ;
IN: cursors

