[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/queue 1c230d7 13/14: Implement iterator generators on c
From: |
Stefan Monnier |
Subject: |
[elpa] externals/queue 1c230d7 13/14: Implement iterator generators on collection data structures. |
Date: |
Mon, 14 Dec 2020 12:02:47 -0500 (EST) |
branch: externals/queue
commit 1c230d7a92d8972957fe73e77c9b05beaae113cf
Author: Toby S. Cubitt <toby-predictive@dr-qubit.org>
Commit: Toby S. Cubitt <toby-predictive@dr-qubit.org>
Implement iterator generators on collection data structures.
---
queue.el | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/queue.el b/queue.el
index 4c9c954..ca9f5ab 100644
--- a/queue.el
+++ b/queue.el
@@ -1,6 +1,6 @@
;;; queue.el --- Queue data structure -*- lexical-binding: t; -*-
-;; Copyright (C) 1991-1995, 2008-2009, 2012 Free Software Foundation, Inc
+;; Copyright (C) 1991-1995, 2008-2009, 2012, 2017 Free Software Foundation,
Inc
;; Author: Inge Wallin <inge@lysator.liu.se>
;; Toby Cubitt <toby-predictive@dr-qubit.org>
@@ -46,6 +46,11 @@
(eval-when-compile (require 'cl))
+(defmacro queue--when-generators (then)
+ "Evaluate THEN if `generator' library is available."
+ (declare (debug t))
+ (if (require 'generator nil 'noerror) then))
+
(defstruct (queue
;; A tagged list is the pre-defstruct representation.
@@ -144,6 +149,16 @@ order. The elements themselves are *not* copied."
(queue-tail queue) nil))
+(queue--when-generators
+ (iter-defun queue-iter (queue)
+ "Return a queue iterator object.
+
+Calling `iter-next' on this object will retrieve the next element
+from the queue. The queue itself is not modified."
+ (let ((list (queue-head queue)))
+ (while list (iter-yield (pop list))))))
+
+
(provide 'queue)
- [elpa] externals/queue b47d38f 05/14: Updated Package-Version, Package-Requires, and Keywords package headers., (continued)
- [elpa] externals/queue b47d38f 05/14: Updated Package-Version, Package-Requires, and Keywords package headers., Stefan Monnier, 2020/12/14
- [elpa] externals/queue da5d38e 08/14: Trivial whitespace tidying., Stefan Monnier, 2020/12/14
- [elpa] externals/queue 82aa3ef 09/14: More minor whitespace and commentary changes., Stefan Monnier, 2020/12/14
- [elpa] externals/queue 2e53a45 10/14: Remove ChangeLogs from library headers., Stefan Monnier, 2020/12/14
- [elpa] externals/queue bbc4df9 12/14: Fix buggy queue-empty and queue-first definitions., Stefan Monnier, 2020/12/14
- [elpa] externals/queue f83d2b8 11/14: Enable lexical binding, and fix issues it picks up., Stefan Monnier, 2020/12/14
- [elpa] externals/queue c9ec2e3 14/14: Bump version numbers since we've added iterator generators., Stefan Monnier, 2020/12/14
- [elpa] externals/queue d7ee623 01/14: Added queue.el package, Stefan Monnier, 2020/12/14
- [elpa] externals/queue 4427998 06/14: Added autoload cookies., Stefan Monnier, 2020/12/14
- [elpa] externals/queue 0b03d23 07/14: Updated copyright attribution and license (GPL2 -> GPL3)., Stefan Monnier, 2020/12/14
- [elpa] externals/queue 1c230d7 13/14: Implement iterator generators on collection data structures.,
Stefan Monnier <=