version 0.7.0

This commit is contained in:
Andreas Rumpf 2008-11-16 22:08:15 +01:00
commit 8b2a9401a1
185 changed files with 21451 additions and 24296 deletions

View file

@ -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