From 09101e4e44d5dbd87e4ef88bc8ef422e6642eb7b Mon Sep 17 00:00:00 2001
From: "Guillermo J. Rozas" <edu/mit/csail/zurich/gjr>
Date: Fri, 25 Jun 1993 21:08:38 +0000
Subject: [PATCH] Add queue->list and queue->list/unsafe operations.

---
 v7/src/runtime/queue.scm | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

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
-- 
2.25.1