mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-01 19:02:18 +00:00
Fixes CritBitTree.inc's bug (#7838)
* Fixes CritBitTree.inc's bug * Update changelog
This commit is contained in:
committed by
Andreas Rumpf
parent
508dfdabee
commit
06bdf8392b
@@ -74,6 +74,7 @@
|
||||
deprecated.
|
||||
- The `terminal` module now exports additional procs for generating ANSI color
|
||||
codes as strings.
|
||||
- Added the parameter ``val`` for the ``CritBitTree[int].inc`` proc.
|
||||
|
||||
### Language additions
|
||||
|
||||
|
||||
@@ -163,13 +163,13 @@ proc containsOrIncl*(c: var CritBitTree[void], key: string): bool =
|
||||
var n = rawInsert(c, key)
|
||||
result = c.count == oldCount
|
||||
|
||||
proc inc*(c: var CritBitTree[int]; key: string) =
|
||||
## counts the 'key'.
|
||||
proc inc*(c: var CritBitTree[int]; key: string, val: int = 1) =
|
||||
## increments `c[key]` by `val`.
|
||||
let oldCount = c.count
|
||||
var n = rawInsert(c, key)
|
||||
if c.count == oldCount:
|
||||
if c.count == oldCount or oldCount == 0:
|
||||
# not a new key:
|
||||
inc n.val
|
||||
inc n.val, val
|
||||
|
||||
proc incl*(c: var CritBitTree[void], key: string) =
|
||||
## includes `key` in `c`.
|
||||
@@ -352,3 +352,13 @@ when isMainModule:
|
||||
assert toSeq(r.items) == @["abc", "definition", "prefix", "xyz"]
|
||||
|
||||
assert toSeq(r.itemsWithPrefix("de")) == @["definition"]
|
||||
var c = CritBitTree[int]()
|
||||
|
||||
c.inc("a")
|
||||
assert c["a"] == 1
|
||||
|
||||
c.inc("a", 4)
|
||||
assert c["a"] == 5
|
||||
|
||||
c.inc("a", -5)
|
||||
assert c["a"] == 0
|
||||
|
||||
Reference in New Issue
Block a user