diff options
Diffstat (limited to 'rod/bitsets.nim')
-rw-r--r-- | rod/bitsets.nim | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/rod/bitsets.nim b/rod/bitsets.nim deleted file mode 100644 index 937e8237c..000000000 --- a/rod/bitsets.nim +++ /dev/null @@ -1,71 +0,0 @@ -# -# -# The Nimrod Compiler -# (c) Copyright 2008 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -# this unit handles Nimrod sets; it implements bit sets -# the code here should be reused in the Nimrod standard library - -type - TBitSet* = seq[int8] # we use byte here to avoid issues with - # cross-compiling; uint would be more efficient - # however - -const - ElemSize* = sizeof(int8) * 8 - -proc BitSetInit*(b: var TBitSet, length: int) -proc BitSetUnion*(x: var TBitSet, y: TBitSet) -proc BitSetDiff*(x: var TBitSet, y: TBitSet) -proc BitSetSymDiff*(x: var TBitSet, y: TBitSet) -proc BitSetIntersect*(x: var TBitSet, y: TBitSet) -proc BitSetIncl*(x: var TBitSet, elem: BiggestInt) -proc BitSetExcl*(x: var TBitSet, elem: BiggestInt) -proc BitSetIn*(x: TBitSet, e: BiggestInt): bool -proc BitSetEquals*(x, y: TBitSet): bool -proc BitSetContains*(x, y: TBitSet): bool -# implementation - -proc BitSetIn(x: TBitSet, e: BiggestInt): bool = - result = (x[int(e div ElemSize)] and toU8(int(1 shl (e mod ElemSize)))) != - toU8(0) - -proc BitSetIncl(x: var TBitSet, elem: BiggestInt) = - assert(elem >= 0) - x[int(elem div ElemSize)] = x[int(elem div ElemSize)] or - toU8(int(1 shl (elem mod ElemSize))) - -proc BitSetExcl(x: var TBitSet, elem: BiggestInt) = - x[int(elem div ElemSize)] = x[int(elem div ElemSize)] and - not toU8(int(1 shl (elem mod ElemSize))) - -proc BitSetInit(b: var TBitSet, length: int) = - newSeq(b, length) - -proc BitSetUnion(x: var TBitSet, y: TBitSet) = - for i in countup(0, high(x)): x[i] = x[i] or y[i] - -proc BitSetDiff(x: var TBitSet, y: TBitSet) = - for i in countup(0, high(x)): x[i] = x[i] and not y[i] - -proc BitSetSymDiff(x: var TBitSet, y: TBitSet) = - for i in countup(0, high(x)): x[i] = x[i] xor y[i] - -proc BitSetIntersect(x: var TBitSet, y: TBitSet) = - for i in countup(0, high(x)): x[i] = x[i] and y[i] - -proc BitSetEquals(x, y: TBitSet): bool = - for i in countup(0, high(x)): - if x[i] != y[i]: - return false - result = true - -proc BitSetContains(x, y: TBitSet): bool = - for i in countup(0, high(x)): - if (x[i] and not y[i]) != int8(0): - return false - result = true |