diff --git a/compiler/btrees.nim b/compiler/btrees.nim index 228481692..6bc92de2d 100644 --- a/compiler/btrees.nim +++ b/compiler/btrees.nim @@ -122,6 +122,39 @@ proc `$`[Key, Val](b: BTree[Key, Val]): string = result = "" toString(b.root, "", result) +proc hasNext*[Key, Val](b: BTree[Key, Val]; index: int): bool = + result = index < b.entries + +proc countSubTree[Key, Val](it: Node[Key, Val]): int = + if it.isInternal: + result = 0 + for k in 0.. i: + it = it.links[k] + dec i, (sum - c) + break + result = (it.keys[i], it.vals[i], index+1) + +iterator pairs*[Key, Val](b: BTree[Key, Val]): (Key, Val) = + var i = 0 + while hasNext(b, i): + let (k, v, i2) = next(b, i) + i = i2 + yield (k, v) + when isMainModule: import random, tables @@ -154,6 +187,9 @@ when isMainModule: assert st.getOrDefault("www.dell.com") == "143.166.224.230" assert(st.entries == 16) + for k, v in st: + echo k, ": ", v + when false: var b2 = initBTree[string, string]() const iters = 10_000