]> git.eshelyaron.com Git - emacs.git/commitdiff
(ring-insert-at-beginning): New function.
authorRichard M. Stallman <rms@gnu.org>
Thu, 23 Jun 1994 23:11:02 +0000 (23:11 +0000)
committerRichard M. Stallman <rms@gnu.org>
Thu, 23 Jun 1994 23:11:02 +0000 (23:11 +0000)
Don't visit the file, just read it.

lisp/emacs-lisp/ring.el

index 390aba93da164804582b6cac39b005c96d205c69..ec9e88e47b6822a1ad2559f2e5541f25e6567ebf 100644 (file)
   "Make a ring that can contain SIZE elements."
   (cons 0 (cons 0 (make-vector size nil))))
 
+(defun ring-insert-at-beginning (ring item)
+  "Add to RING the item ITEM.  Add it at the front (the early end)."
+  (let* ((vec (cdr (cdr ring))) 
+        (veclen (length vec))
+        (hd (car ring))
+        (ln (car (cdr ring))))
+    (setq ln (min veclen (1+ ln))
+         hd (ring-minus1 hd veclen))
+    (aset vec hd item)
+    (setcar ring hd)
+    (setcar (cdr ring) ln)))
+
 (defun ring-plus1 (index veclen)
   "INDEX+1, with wraparound"
   (let ((new-index (+ index 1)))
@@ -72,8 +84,8 @@
   (mod (1- (+ head (- ringlen index))) veclen))
 
 (defun ring-insert (ring item)
-  "Insert a new item onto the ring. If the ring is full, dump the oldest
-item to make room."       
+  "Insert onto ring RING the item ITEM, as the newest (last) item.
+If the ring is full, dump the oldest item to make room."       
   (let* ((vec (cdr (cdr ring))) 
         (veclen (length vec))
         (hd (car ring))