From dbebe044c9a01d0efd66cd6fcad6966b821621da Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Fri, 26 Mar 2010 20:08:29 -0700 Subject: [PATCH] cursors: -find iterator --- extra/cursors/cursors-tests.factor | 4 ++++ extra/cursors/cursors.factor | 3 +++ 2 files changed, 7 insertions(+) diff --git a/extra/cursors/cursors-tests.factor b/extra/cursors/cursors-tests.factor index 158769ff14..d71999ab87 100644 --- a/extra/cursors/cursors-tests.factor +++ b/extra/cursors/cursors-tests.factor @@ -8,6 +8,10 @@ IN: cursors.tests { } make ] unit-test +[ T{ linear-cursor f 3 1 } ] [ + T{ linear-cursor f 1 1 } T{ linear-cursor f 5 1 } [ value>> 3 mod zero? ] -find +] unit-test + [ { 1 3 } ] [ [ T{ linear-cursor f 1 2 } T{ linear-cursor f 5 2 } [ value>> , ] -each ] { } make diff --git a/extra/cursors/cursors.factor b/extra/cursors/cursors.factor index 030e9ab72f..d7fe5fb893 100644 --- a/extra/cursors/cursors.factor +++ b/extra/cursors/cursors.factor @@ -125,6 +125,9 @@ M: end-of-stream cursor-stream-ended? drop t ; inline [ '[ dup _ cursor>= ] ] [ '[ _ keep inc-cursor ] ] bi* until drop ; inline +: -find ( ... begin end quot: ( ... cursor -- ... ? ) -- ... cursor ) + '[ dup _ cursor>= [ t ] [ dup @ ] if ] [ inc-cursor ] until ; inline + : -in- ( quot -- quot' ) '[ cursor-value-unsafe @ ] ; inline