commit
014be3a29c
7 changed files with 276 additions and 1 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -872,12 +872,26 @@ iterator items*(node: JsonNode): JsonNode =
|
|||
for i in items(node.elems):
|
||||
yield i
|
||||
|
||||
iterator mitems*(node: var JsonNode): var JsonNode =
|
||||
## Iterator for the items of `node`. `node` has to be a JArray. Items can be
|
||||
## modified.
|
||||
assert node.kind == JArray
|
||||
for i in mitems(node.elems):
|
||||
yield i
|
||||
|
||||
iterator pairs*(node: JsonNode): tuple[key: string, val: JsonNode] =
|
||||
## Iterator for the child elements of `node`. `node` has to be a JObject.
|
||||
assert node.kind == JObject
|
||||
for key, val in items(node.fields):
|
||||
yield (key, val)
|
||||
|
||||
iterator mpairs*(node: var JsonNode): var tuple[key: string, val: JsonNode] =
|
||||
## Iterator for the child elements of `node`. `node` has to be a JObject.
|
||||
## Items can be modified
|
||||
assert node.kind == JObject
|
||||
for keyVal in mitems(node.fields):
|
||||
yield keyVal
|
||||
|
||||
proc eat(p: var JsonParser, tok: TTokKind) =
|
||||
if p.tok == tok: discard getTok(p)
|
||||
else: raiseParseErr(p, tokToStr[tok])
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ proc `[]=` *(p:var Poly;idx:int,v:float)=
|
|||
|
||||
|
||||
iterator items*(p:Poly):float=
|
||||
## Iterates through the corfficients of the polynomial.
|
||||
## Iterates through the coefficients of the polynomial.
|
||||
var i=p.degree
|
||||
while i>=0:
|
||||
yield p[i]
|
||||
|
|
|
|||
|
|
@ -115,11 +115,21 @@ proc `[]`* (n: XmlNode, i: int): XmlNode {.inline.} =
|
|||
assert n.k == xnElement
|
||||
result = n.s[i]
|
||||
|
||||
proc mget* (n: var XmlNode, i: int): var XmlNode {.inline.} =
|
||||
## returns the `i`'th child of `n` so that it can be modified
|
||||
assert n.k == xnElement
|
||||
result = n.s[i]
|
||||
|
||||
iterator items*(n: XmlNode): XmlNode {.inline.} =
|
||||
## iterates over any child of `n`.
|
||||
assert n.k == xnElement
|
||||
for i in 0 .. n.len-1: yield n[i]
|
||||
|
||||
iterator mitems*(n: var XmlNode): var XmlNode {.inline.} =
|
||||
## iterates over any child of `n`.
|
||||
assert n.k == xnElement
|
||||
for i in 0 .. n.len-1: yield mget(n, i)
|
||||
|
||||
proc attrs*(n: XmlNode): XmlAttributes {.inline.} =
|
||||
## gets the attributes belonging to `n`.
|
||||
## Returns `nil` if attributes have not been initialised for this node.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue