diff options
author | def <dennis@felsin9.de> | 2015-01-28 02:21:54 +0100 |
---|---|---|
committer | def <dennis@felsin9.de> | 2015-01-28 02:31:26 +0100 |
commit | 46cf40c40d4a13cd1fed0c4739e07f9b5a73454b (patch) | |
tree | 6bf378a58249e2a132ec165becced8a0250d1af0 /lib/pure/collections | |
parent | 6f4cd979e850308ae932773038b1ba6d7dfe4981 (diff) | |
download | Nim-46cf40c40d4a13cd1fed0c4739e07f9b5a73454b.tar.gz |
Add mitems and mpairs where it makes sense
Diffstat (limited to 'lib/pure/collections')
-rw-r--r-- | lib/pure/collections/lists.nim | 16 | ||||
-rw-r--r-- | lib/pure/collections/queues.nim | 9 |
2 files changed, 25 insertions, 0 deletions
diff --git a/lib/pure/collections/lists.nim b/lib/pure/collections/lists.nim index 929de5973..150e48217 100644 --- a/lib/pure/collections/lists.nim +++ b/lib/pure/collections/lists.nim @@ -122,6 +122,22 @@ iterator items*[T](L: DoublyLinkedRing[T]): T = ## yields every value of `L`. itemsRingImpl() +iterator mitems*[T](L: var DoublyLinkedList[T]): var T = + ## yields every value of `L` so that you can modify it. + itemsListImpl() + +iterator mitems*[T](L: var SinglyLinkedList[T]): var T = + ## yields every value of `L` so that you can modify it. + itemsListImpl() + +iterator mitems*[T](L: var SinglyLinkedRing[T]): var T = + ## yields every value of `L` so that you can modify it. + itemsRingImpl() + +iterator mitems*[T](L: var DoublyLinkedRing[T]): var T = + ## yields every value of `L` so that you can modify it. + itemsRingImpl() + iterator nodes*[T](L: SinglyLinkedList[T]): SinglyLinkedNode[T] = ## iterates over every node of `x`. Removing the current node from the ## list during traversal is supported. diff --git a/lib/pure/collections/queues.nim b/lib/pure/collections/queues.nim index defce657f..61f0d14b5 100644 --- a/lib/pure/collections/queues.nim +++ b/lib/pure/collections/queues.nim @@ -39,6 +39,15 @@ iterator items*[T](q: Queue[T]): T = yield q.data[i] i = (i + 1) and q.mask +iterator mitems*[T](q: var Queue[T]): var T = + ## yields every element of `q`. + var i = q.rd + var c = q.count + while c > 0: + dec c + yield q.data[i] + i = (i + 1) and q.mask + proc add*[T](q: var Queue[T], item: T) = ## adds an `item` to the end of the queue `q`. var cap = q.mask+1 |