From: Guillermo J. Rozas Date: Fri, 25 Jun 1993 21:08:38 +0000 (+0000) Subject: Add queue->list and queue->list/unsafe operations. X-Git-Tag: 20090517-FFI~8275 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=09101e4e44d5dbd87e4ef88bc8ef422e6642eb7b;p=mit-scheme.git Add queue->list and queue->list/unsafe operations. --- diff --git a/v7/src/runtime/queue.scm b/v7/src/runtime/queue.scm index 5347f56eb..21dd0d451 100644 --- a/v7/src/runtime/queue.scm +++ b/v7/src/runtime/queue.scm @@ -1,8 +1,8 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/queue.scm,v 14.2 1988/06/13 11:50:28 cph Rel $ +$Id: queue.scm,v 14.3 1993/06/25 21:08:38 gjr Exp $ -Copyright (c) 1988 Massachusetts Institute of Technology +Copyright (c) 1988-1993 Massachusetts Institute of Technology This material was developed by the Scheme project at the Massachusetts Institute of Technology, Department of Electrical Engineering and @@ -51,7 +51,8 @@ MIT in each case. |# (if (null? (cdr queue)) (set-car! queue next) (set-cdr! (cdr queue) next)) - (set-cdr! queue next))) + (set-cdr! queue next) + unspecific)) (define (dequeue!/unsafe queue) (let ((next (car queue))) @@ -68,6 +69,9 @@ MIT in each case. |# (if (not (queue-empty? queue)) (begin (procedure (dequeue!/unsafe queue)) (loop))))) + +(define-integrable (queue->list/unsafe queue) + (car queue)) ;;; Safe (interrupt locked) versions of the above operations. @@ -91,4 +95,9 @@ MIT in each case. |# (dequeue!/unsafe queue)))))) (if (not (eq? item empty)) (begin (procedure item) - (loop))))))) \ No newline at end of file + (loop))))))) + +(define (queue->list queue) + (without-interrupts + (lambda () + (list-copy (queue->list/unsafe queue))))) \ No newline at end of file