From 41fc9eac0f3fdde868ef0972aa528ffd404df0fd Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sun, 31 Aug 2008 02:51:43 -0500 Subject: [PATCH] new accessors --- extra/coroutines/coroutines.factor | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/extra/coroutines/coroutines.factor b/extra/coroutines/coroutines.factor index 3fad3adbaa..3c1f8490c4 100644 --- a/extra/coroutines/coroutines.factor +++ b/extra/coroutines/coroutines.factor @@ -1,7 +1,8 @@ ! Copyright (C) 2005 Chris Double, 2007 Clemens Hofreither. ! See http://factorcode.org/license.txt for BSD license. +USING: kernel hashtables namespaces continuations quotations +accessors ; IN: coroutines -USING: kernel hashtables namespaces continuations quotations ; SYMBOL: current-coro @@ -13,12 +14,12 @@ TUPLE: coroutine resumecc exitcc ; [ swapd , , \ bind , "Coroutine has terminated illegally." , \ throw , ] [ ] make - over set-coroutine-resumecc ; + >>resumecc ; : coresume ( v co -- result ) [ - over set-coroutine-exitcc - coroutine-resumecc call + >>exitcc + resumecc>> call #! At this point, the coroutine quotation must have terminated #! normally (without calling coyield or coterminate). This shouldn't happen. f over @@ -31,8 +32,8 @@ TUPLE: coroutine resumecc exitcc ; current-coro get [ [ continue-with ] curry - over set-coroutine-resumecc - coroutine-exitcc continue-with + >>resumecc + exitcc>> continue-with ] callcc1 2nip ; : coyield* ( v -- ) coyield drop ; inline @@ -40,5 +41,5 @@ TUPLE: coroutine resumecc exitcc ; : coterminate ( v -- ) current-coro get - [ ] over set-coroutine-resumecc - coroutine-exitcc continue-with ; + [ ] >>resumecc + exitcc>> continue-with ;