version 0.7.0
This commit is contained in:
parent
972c510861
commit
8b2a9401a1
185 changed files with 21451 additions and 24296 deletions
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
type
|
||||
TRadixNodeKind = enum rnLinear, rnFull, rnLeaf
|
||||
PRadixNode = ptr TRadixNode
|
||||
PRadixNode = ref TRadixNode
|
||||
TRadixNode = object
|
||||
kind: TRadixNodeKind
|
||||
TRadixNodeLinear = object of TRadixNode
|
||||
|
|
@ -24,7 +24,7 @@ proc search(r: PRadixNode, s: string): PRadixNode =
|
|||
case r.kind
|
||||
of rnLinear:
|
||||
var x = PRadixNodeLinear(r)
|
||||
for j in 0..x.len-1:
|
||||
for j in 0..ze(x.len)-1:
|
||||
if x.keys[j] == s[i]:
|
||||
if s[i] == '\0': return r
|
||||
r = x.vals[j]
|
||||
|
|
@ -56,21 +56,19 @@ proc testOrincl*(r: var PRadixNode, s: string): bool =
|
|||
proc incl*(r: var PRadixNode, s: string) = discard testOrIncl(r, s)
|
||||
|
||||
proc excl*(r: var PRadixNode, s: string) =
|
||||
x = search(r, s)
|
||||
var x = search(r, s)
|
||||
if x == nil: return
|
||||
case x.kind
|
||||
of rnLeaf: PRadixNodeLeaf(x).s = ""
|
||||
of rnFull: PRadixNodeFull(x).b['\0'] = nil
|
||||
of rnLinear:
|
||||
var x = PRadixNodeLinear(x)
|
||||
for i in 0..x.len-1:
|
||||
for i in 0..ze(x.len)-1:
|
||||
if x.keys[i] == '\0':
|
||||
swap(x.keys[i], x.keys[x.len-1])
|
||||
swap(x.keys[i], x.keys[ze(x.len)-1])
|
||||
dec(x.len)
|
||||
break
|
||||
|
||||
var
|
||||
root: PRadixNode
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue