diff options
Diffstat (limited to 'vendor/github.com/RoaringBitmap/roaring/rlecommon.go')
-rw-r--r-- | vendor/github.com/RoaringBitmap/roaring/rlecommon.go | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/vendor/github.com/RoaringBitmap/roaring/rlecommon.go b/vendor/github.com/RoaringBitmap/roaring/rlecommon.go deleted file mode 100644 index 133636787a..0000000000 --- a/vendor/github.com/RoaringBitmap/roaring/rlecommon.go +++ /dev/null @@ -1,163 +0,0 @@ -package roaring - -import ( - "fmt" -) - -// common to rle32.go and rle16.go - -// rleVerbose controls whether p() prints show up. -// The testing package sets this based on -// testing.Verbose(). -var rleVerbose bool - -// p is a shorthand for fmt.Printf with beginning and -// trailing newlines. p() makes it easy -// to add diagnostic print statements. -func p(format string, args ...interface{}) { - if rleVerbose { - fmt.Printf("\n"+format+"\n", args...) - } -} - -// MaxUint32 is the largest uint32 value. -const MaxUint32 = 4294967295 - -// MaxUint16 is the largest 16 bit unsigned int. -// This is the largest value an interval16 can store. -const MaxUint16 = 65535 - -// searchOptions allows us to accelerate runContainer32.search with -// prior knowledge of (mostly lower) bounds. This is used by Union -// and Intersect. -type searchOptions struct { - // start here instead of at 0 - startIndex int64 - - // upper bound instead of len(rc.iv); - // endxIndex == 0 means ignore the bound and use - // endxIndex == n ==len(rc.iv) which is also - // naturally the default for search() - // when opt = nil. - endxIndex int64 -} - -// And finds the intersection of rc and b. -func (rc *runContainer32) And(b *Bitmap) *Bitmap { - out := NewBitmap() - for _, p := range rc.iv { - for i := p.start; i <= p.last; i++ { - if b.Contains(i) { - out.Add(i) - } - } - } - return out -} - -// Xor returns the exclusive-or of rc and b. -func (rc *runContainer32) Xor(b *Bitmap) *Bitmap { - out := b.Clone() - for _, p := range rc.iv { - for v := p.start; v <= p.last; v++ { - if out.Contains(v) { - out.RemoveRange(uint64(v), uint64(v+1)) - } else { - out.Add(v) - } - } - } - return out -} - -// Or returns the union of rc and b. -func (rc *runContainer32) Or(b *Bitmap) *Bitmap { - out := b.Clone() - for _, p := range rc.iv { - for v := p.start; v <= p.last; v++ { - out.Add(v) - } - } - return out -} - -// trial is used in the randomized testing of runContainers -type trial struct { - n int - percentFill float64 - ntrial int - - // only in the union test - // only subtract test - percentDelete float64 - - // only in 067 randomized operations - // we do this + 1 passes - numRandomOpsPass int - - // allow sampling range control - // only recent tests respect this. - srang *interval16 -} - -// And finds the intersection of rc and b. -func (rc *runContainer16) And(b *Bitmap) *Bitmap { - out := NewBitmap() - for _, p := range rc.iv { - plast := p.last() - for i := p.start; i <= plast; i++ { - if b.Contains(uint32(i)) { - out.Add(uint32(i)) - } - } - } - return out -} - -// Xor returns the exclusive-or of rc and b. -func (rc *runContainer16) Xor(b *Bitmap) *Bitmap { - out := b.Clone() - for _, p := range rc.iv { - plast := p.last() - for v := p.start; v <= plast; v++ { - w := uint32(v) - if out.Contains(w) { - out.RemoveRange(uint64(w), uint64(w+1)) - } else { - out.Add(w) - } - } - } - return out -} - -// Or returns the union of rc and b. -func (rc *runContainer16) Or(b *Bitmap) *Bitmap { - out := b.Clone() - for _, p := range rc.iv { - plast := p.last() - for v := p.start; v <= plast; v++ { - out.Add(uint32(v)) - } - } - return out -} - -//func (rc *runContainer32) and(container) container { -// panic("TODO. not yet implemented") -//} - -// serializedSizeInBytes returns the number of bytes of memory -// required by this runContainer16. This is for the -// Roaring format, as specified https://github.com/RoaringBitmap/RoaringFormatSpec/ -func (rc *runContainer16) serializedSizeInBytes() int { - // number of runs in one uint16, then each run - // needs two more uint16 - return 2 + len(rc.iv)*4 -} - -// serializedSizeInBytes returns the number of bytes of memory -// required by this runContainer32. -func (rc *runContainer32) serializedSizeInBytes() int { - return 4 + len(rc.iv)*8 -} |