Unexport roaring.ContainerBitmap

This commit is contained in:
Cody Soyland 2018-07-05 22:02:21 -05:00
parent 9098b0d131
commit 692b72be18
3 changed files with 62 additions and 62 deletions

View file

@ -54,8 +54,8 @@ const (
//containerArray indicates a container of bit position values
containerArray = byte(1)
//ContainerBitmap indicates a container of bits packed in a uint64 array block
ContainerBitmap = byte(2)
//containerBitmap indicates a container of bits packed in a uint64 array block
containerBitmap = byte(2)
//ContainerRun indicates a container of run encoded bits
ContainerRun = byte(3)
@ -668,7 +668,7 @@ func (b *Bitmap) UnmarshalBinary(data []byte) error {
c.bitmap = nil
c.array = (*[0xFFFFFFF]uint16)(unsafe.Pointer(&data[offset]))[:c.n]
opsOffset = int(offset) + len(c.array)*2 // sizeof(uint32)
case ContainerBitmap:
case containerBitmap:
c.array = nil
c.runs = nil
c.bitmap = (*[0xFFFFFFF]uint64)(unsafe.Pointer(&data[offset]))[:bitmapN]
@ -1048,7 +1048,7 @@ func (c *Container) isArray() bool {
// isBitmap returns true if the container is a bitmap container.
func (c *Container) isBitmap() bool {
return c.containerType == ContainerBitmap
return c.containerType == containerBitmap
}
// isRun returns true if the container is a run-length-encoded container.
@ -1070,7 +1070,7 @@ func (c *Container) unmap() {
tmp := make([]uint16, len(c.array))
copy(tmp, c.array)
c.array = tmp
case ContainerBitmap:
case containerBitmap:
tmp := make([]uint64, len(c.bitmap))
copy(tmp, c.bitmap)
c.bitmap = tmp
@ -1329,12 +1329,12 @@ func (c *Container) optimize() {
} else if c.n < ArrayMaxSize {
newType = containerArray
} else {
newType = ContainerBitmap
newType = containerBitmap
}
// Then convert accordingly.
if c.isArray() {
if newType == ContainerBitmap {
if newType == containerBitmap {
c.arrayToBitmap()
} else if newType == ContainerRun {
c.arrayToRun()
@ -1346,7 +1346,7 @@ func (c *Container) optimize() {
c.bitmapToRun()
}
} else if c.isRun() {
if newType == ContainerBitmap {
if newType == containerBitmap {
c.runToBitmap()
} else if newType == containerArray {
c.runToArray()
@ -1510,7 +1510,7 @@ func (c *Container) bitmapToArray() {
// arrayToBitmap converts from array format to bitmap format.
func (c *Container) arrayToBitmap() {
c.bitmap = make([]uint64, bitmapN)
c.containerType = ContainerBitmap
c.containerType = containerBitmap
// return early if empty
if c.n == 0 {
@ -1529,7 +1529,7 @@ func (c *Container) arrayToBitmap() {
// runToBitmap converts from RLE format to bitmap format.
func (c *Container) runToBitmap() {
c.bitmap = make([]uint64, bitmapN)
c.containerType = ContainerBitmap
c.containerType = containerBitmap
// return early if empty
if c.n == 0 {
@ -1661,7 +1661,7 @@ func (c *Container) Clone() *Container {
case containerArray:
other.array = make([]uint16, len(c.array))
copy(other.array, c.array)
case ContainerBitmap:
case containerBitmap:
other.bitmap = make([]uint64, len(c.bitmap))
copy(other.bitmap, c.bitmap)
case ContainerRun:
@ -1816,7 +1816,7 @@ func flipArray(b *Container) *Container {
}
func flipBitmap(b *Container) *Container {
other := &Container{bitmap: make([]uint64, bitmapN), containerType: ContainerBitmap}
other := &Container{bitmap: make([]uint64, bitmapN), containerType: containerBitmap}
for i, bitmap := range b.bitmap {
other.bitmap[i] = ^bitmap
@ -2078,7 +2078,7 @@ func intersectBitmapRun(a, b *Container) *Container {
// the bitmap which are between runs.
output = &Container{
bitmap: make([]uint64, bitmapN),
containerType: ContainerBitmap,
containerType: containerBitmap,
}
for j := 0; j < len(b.runs); j++ {
vb := b.runs[j]
@ -2134,7 +2134,7 @@ func intersectArrayBitmap(a, b *Container) *Container {
}
func intersectBitmapBitmap(a, b *Container) *Container {
output := &Container{bitmap: make([]uint64, bitmapN), containerType: ContainerBitmap}
output := &Container{bitmap: make([]uint64, bitmapN), containerType: containerBitmap}
for i := range a.bitmap {
v := a.bitmap[i] & b.bitmap[i]
@ -2396,7 +2396,7 @@ func (c *Container) equals(c2 *Container) bool {
return false
}
}
} else if c.containerType == ContainerBitmap {
} else if c.containerType == containerBitmap {
if len(c.bitmap) != len(c2.bitmap) {
return false
}
@ -2434,7 +2434,7 @@ func unionArrayBitmap(a, b *Container) *Container {
func unionBitmapBitmap(a, b *Container) *Container {
output := &Container{
bitmap: make([]uint64, bitmapN),
containerType: ContainerBitmap,
containerType: containerBitmap,
}
for i := 0; i < bitmapN; i++ {
@ -2778,7 +2778,7 @@ func differenceBitmapArray(a, b *Container) *Container {
}
func differenceBitmapBitmap(a, b *Container) *Container {
output := &Container{bitmap: make([]uint64, bitmapN), containerType: ContainerBitmap}
output := &Container{bitmap: make([]uint64, bitmapN), containerType: containerBitmap}
for i := range a.bitmap {
v := a.bitmap[i] & (^b.bitmap[i])
@ -2861,7 +2861,7 @@ func xorArrayBitmap(a, b *Container) *Container {
// It's possible that output was converted from bitmap to array in output.remove()
// so we only do this conversion if output is still a bitmap container.
if output.containerType == ContainerBitmap && output.count() < ArrayMaxSize {
if output.containerType == containerBitmap && output.count() < ArrayMaxSize {
output.bitmapToArray()
}
@ -2871,7 +2871,7 @@ func xorArrayBitmap(a, b *Container) *Container {
func xorBitmapBitmap(a, b *Container) *Container {
output := &Container{
bitmap: make([]uint64, bitmapN),
containerType: ContainerBitmap,
containerType: containerBitmap,
}
for i := 0; i < bitmapN; i++ {
v := a.bitmap[i] ^ b.bitmap[i]

View file

@ -238,7 +238,7 @@ func doContainer(containerType byte, data interface{}) *Container {
switch containerType {
case containerArray:
c.array = data.([]uint16)
case ContainerBitmap:
case containerBitmap:
c.bitmap = data.([]uint64)
case ContainerRun:
c.runs = data.([]interval16)
@ -267,17 +267,17 @@ func setupContainerTests() map[byte]map[string]*Container {
}
// bitmap containers
cts[ContainerBitmap] = map[string]*Container{
"empty": doContainer(ContainerBitmap, bitmapEmpty()),
"full": doContainer(ContainerBitmap, bitmapFull()),
"firstBitSet": doContainer(ContainerBitmap, bitmapFirstBitSet()),
"lastBitSet": doContainer(ContainerBitmap, bitmapLastBitSet()),
"firstBitUnset": doContainer(ContainerBitmap, bitmapFirstBitUnset()),
"lastBitUnset": doContainer(ContainerBitmap, bitmapLastBitUnset()),
"innerBitsSet": doContainer(ContainerBitmap, bitmapInnerBitsSet()),
"outerBitsSet": doContainer(ContainerBitmap, bitmapOuterBitsSet()),
"oddBitsSet": doContainer(ContainerBitmap, bitmapOddBitsSet()),
"evenBitsSet": doContainer(ContainerBitmap, bitmapEvenBitsSet()),
cts[containerBitmap] = map[string]*Container{
"empty": doContainer(containerBitmap, bitmapEmpty()),
"full": doContainer(containerBitmap, bitmapFull()),
"firstBitSet": doContainer(containerBitmap, bitmapFirstBitSet()),
"lastBitSet": doContainer(containerBitmap, bitmapLastBitSet()),
"firstBitUnset": doContainer(containerBitmap, bitmapFirstBitUnset()),
"lastBitUnset": doContainer(containerBitmap, bitmapLastBitUnset()),
"innerBitsSet": doContainer(containerBitmap, bitmapInnerBitsSet()),
"outerBitsSet": doContainer(containerBitmap, bitmapOuterBitsSet()),
"oddBitsSet": doContainer(containerBitmap, bitmapOddBitsSet()),
"evenBitsSet": doContainer(containerBitmap, bitmapEvenBitsSet()),
}
// run containers

View file

@ -203,7 +203,7 @@ func TestRunContains(t *testing.T) {
}
func TestBitmapCountRange(t *testing.T) {
c := Container{containerType: ContainerBitmap}
c := Container{containerType: containerBitmap}
tests := []struct {
start int
end int
@ -229,11 +229,11 @@ func TestBitmapCountRange(t *testing.T) {
func TestIntersectionCountArrayBitmap3(t *testing.T) {
a, b := &Container{}, &Container{}
a.containerType = ContainerBitmap
a.containerType = containerBitmap
a.bitmap = getFullBitmap()
a.n = maxContainerVal + 1
b.containerType = ContainerBitmap
b.containerType = containerBitmap
b.bitmap = getFullBitmap()
b.n = maxContainerVal + 1
res := intersectBitmapBitmap(a, b)
@ -292,7 +292,7 @@ func TestIntersectionCountArrayBitmap2(t *testing.T) {
a.array = test.array
a.containerType = containerArray
b.bitmap = test.bitmap
b.containerType = ContainerBitmap
b.containerType = containerBitmap
ret := intersectionCountArrayBitmap(a, b)
if ret != test.exp {
t.Fatalf("test #%v intersectCountArrayBitmap fail received: %v exp: %v", i, ret, test.exp)
@ -359,7 +359,7 @@ func TestIntersectionCountArrayRun(t *testing.T) {
}
func TestIntersectionCountBitmapRun(t *testing.T) {
a := &Container{containerType: ContainerBitmap, bitmap: []uint64{0x8000000000000000}}
a := &Container{containerType: containerBitmap, bitmap: []uint64{0x8000000000000000}}
b := &Container{containerType: ContainerRun, runs: []interval16{{start: 63, last: 64}}}
ret := intersectionCountBitmapRun(a, b)
@ -367,7 +367,7 @@ func TestIntersectionCountBitmapRun(t *testing.T) {
t.Fatalf("count of %v with %v should be 1, but got %v", a.bitmap, b.runs, ret)
}
a = &Container{containerType: ContainerBitmap, bitmap: []uint64{0xF0000001, 0xFF00000000000000, 0xFF000000000000F0, 0x0F0000}}
a = &Container{containerType: containerBitmap, bitmap: []uint64{0xF0000001, 0xFF00000000000000, 0xFF000000000000F0, 0x0F0000}}
b = &Container{containerType: ContainerRun, runs: []interval16{{start: 29, last: 31}, {start: 125, last: 134}, {start: 191, last: 197}, {start: 200, last: 300}}}
ret = intersectionCountBitmapRun(a, b)
@ -581,7 +581,7 @@ func TestIntersectBitmapRunBitmap(t *testing.T) {
for i, v := range test.exp {
exp[i] = v
}
a.containerType = ContainerBitmap
a.containerType = containerBitmap
b.containerType = ContainerRun
ret := intersectBitmapRun(a, b)
if ret.isArray() {
@ -642,7 +642,7 @@ func TestIntersectBitmapRunArray(t *testing.T) {
a.bitmap[i] = v
}
b.runs = test.runs
a.containerType = ContainerBitmap
a.containerType = containerBitmap
b.containerType = ContainerRun
ret := intersectBitmapRun(a, b)
if !reflect.DeepEqual(ret.array, test.exp) {
@ -667,7 +667,7 @@ func TestUnionMixed(t *testing.T) {
b := &Container{bitmap: make([]uint64, bitmapN)}
b.bitmap[0] = uint64(0x3)
b.n = 2
b.containerType = ContainerBitmap
b.containerType = containerBitmap
// run container
r := &Container{}
@ -732,7 +732,7 @@ func TestIntersectMixed(t *testing.T) {
}
c.bitmap = []uint64{0x60}
c.n = 2
c.containerType = ContainerBitmap
c.containerType = containerBitmap
res = intersect(c, a)
if !reflect.DeepEqual(res.array, []uint16{5, 6}) {
@ -790,7 +790,7 @@ func TestDifferenceMixed(t *testing.T) {
c.bitmap = []uint64{0x64}
c.n = c.countRange(0, 100)
c.containerType = ContainerBitmap
c.containerType = containerBitmap
res = difference(c, a)
if !reflect.DeepEqual(res.bitmap, []uint64{0x4}) {
t.Fatalf("test #4 expected %v, but got %v", []uint16{4}, res.bitmap)
@ -937,7 +937,7 @@ func TestUnionArrayRun(t *testing.T) {
}
func TestBitmapSetRange(t *testing.T) {
c := &Container{containerType: ContainerBitmap, bitmap: make([]uint64, bitmapN)}
c := &Container{containerType: containerBitmap, bitmap: make([]uint64, bitmapN)}
tests := []struct {
bitmap []uint64
start uint64
@ -1008,7 +1008,7 @@ func TestArrayToBitmap(t *testing.T) {
}
func TestBitmapToArray(t *testing.T) {
a := &Container{containerType: ContainerBitmap}
a := &Container{containerType: containerBitmap}
tests := []struct {
bitmap []uint64
exp []uint16
@ -1093,7 +1093,7 @@ func getFullBitmap() []uint64 {
}
func TestBitmapToRun(t *testing.T) {
a := &Container{containerType: ContainerBitmap}
a := &Container{containerType: containerBitmap}
tests := []struct {
bitmap []uint64
exp []interval16
@ -1239,7 +1239,7 @@ func TestRunToArray(t *testing.T) {
}
func TestBitmapZeroRange(t *testing.T) {
c := &Container{containerType: ContainerBitmap, bitmap: make([]uint64, bitmapN)}
c := &Container{containerType: containerBitmap, bitmap: make([]uint64, bitmapN)}
tests := []struct {
bitmap []uint64
start uint64
@ -1283,7 +1283,7 @@ func TestBitmapZeroRange(t *testing.T) {
}
func TestUnionBitmapRun(t *testing.T) {
a := &Container{containerType: ContainerBitmap, bitmap: make([]uint64, bitmapN)}
a := &Container{containerType: containerBitmap, bitmap: make([]uint64, bitmapN)}
b := &Container{containerType: ContainerRun}
tests := []struct {
bitmap []uint64
@ -1322,7 +1322,7 @@ func TestUnionBitmapRun(t *testing.T) {
}
func TestBitmapCountRuns(t *testing.T) {
c := &Container{containerType: ContainerBitmap, bitmap: make([]uint64, bitmapN)}
c := &Container{containerType: containerBitmap, bitmap: make([]uint64, bitmapN)}
tests := []struct {
bitmap []uint64
exp int
@ -1521,7 +1521,7 @@ func MakeLastBitSet() []uint64 {
func TestDifferenceRunBitmap(t *testing.T) {
a := &Container{containerType: ContainerRun}
b := &Container{containerType: ContainerBitmap, bitmap: make([]uint64, bitmapN)}
b := &Container{containerType: containerBitmap, bitmap: make([]uint64, bitmapN)}
tests := []struct {
runs []interval16
bitmap []uint64
@ -1583,7 +1583,7 @@ func TestDifferenceRunBitmap(t *testing.T) {
}
func TestDifferenceBitmapRun(t *testing.T) {
a := &Container{containerType: ContainerBitmap, bitmap: make([]uint64, bitmapN)}
a := &Container{containerType: containerBitmap, bitmap: make([]uint64, bitmapN)}
b := &Container{containerType: ContainerRun}
tests := []struct {
bitmap []uint64
@ -1666,7 +1666,7 @@ func TestDifferenceBitmapRun(t *testing.T) {
}
func TestDifferenceBitmapArray(t *testing.T) {
b := &Container{containerType: ContainerBitmap, bitmap: make([]uint64, bitmapN)}
b := &Container{containerType: containerBitmap, bitmap: make([]uint64, bitmapN)}
a := &Container{containerType: containerArray}
tests := []struct {
bitmap []uint64
@ -1716,8 +1716,8 @@ func TestDifferenceBitmapArray(t *testing.T) {
}
func TestDifferenceBitmapBitmap(t *testing.T) {
a := &Container{bitmap: make([]uint64, bitmapN), containerType: ContainerBitmap}
b := &Container{bitmap: make([]uint64, bitmapN), containerType: ContainerBitmap}
a := &Container{bitmap: make([]uint64, bitmapN), containerType: containerBitmap}
b := &Container{bitmap: make([]uint64, bitmapN), containerType: containerBitmap}
tests := []struct {
abitmap []uint64
bbitmap []uint64
@ -1800,7 +1800,7 @@ func TestWriteReadArray(t *testing.T) {
func TestWriteReadBitmap(t *testing.T) {
// create bitmap containing > 4096 bits
cb := &Container{bitmap: make([]uint64, bitmapN), n: 129 * 32, containerType: ContainerBitmap}
cb := &Container{bitmap: make([]uint64, bitmapN), n: 129 * 32, containerType: containerBitmap}
for i := 0; i < 129; i++ {
cb.bitmap[i] = 0x5555555555555555
}
@ -1823,7 +1823,7 @@ func TestWriteReadBitmap(t *testing.T) {
func TestWriteReadFullBitmap(t *testing.T) {
// create bitmap containing > 4096 bits
cb := &Container{bitmap: make([]uint64, bitmapN), n: 65536, containerType: ContainerBitmap}
cb := &Container{bitmap: make([]uint64, bitmapN), n: 65536, containerType: containerBitmap}
for i := 0; i < bitmapN; i++ {
cb.bitmap[i] = 0xffffffffffffffff
}
@ -2025,7 +2025,7 @@ func TestXorRunRun(t *testing.T) {
}
func TestBitmapXorRange(t *testing.T) {
c := &Container{bitmap: make([]uint64, bitmapN), containerType: ContainerBitmap}
c := &Container{bitmap: make([]uint64, bitmapN), containerType: containerBitmap}
tests := []struct {
bitmap []uint64
start uint64
@ -2093,7 +2093,7 @@ func TestBitmapXorRange(t *testing.T) {
}
func TestXorBitmapRun(t *testing.T) {
a := &Container{containerType: ContainerBitmap}
a := &Container{containerType: containerBitmap}
b := &Container{containerType: ContainerRun}
tests := []struct {
bitmap []uint64
@ -2547,7 +2547,7 @@ func TestSearch64(t *testing.T) {
func TestIntersectArrayBitmap(t *testing.T) {
a, b := &Container{containerType: containerArray}, &Container{
containerType: ContainerBitmap,
containerType: containerBitmap,
bitmap: make([]uint64, bitmapN),
}
tests := []struct {
@ -2598,7 +2598,7 @@ func TestIntersectArrayBitmap(t *testing.T) {
for i, bmval := range test.bitmap {
b.bitmap[i] = bmval
}
b.containerType = ContainerBitmap
b.containerType = containerBitmap
ret := intersectArrayBitmap(a, b).array
if len(ret) == 0 && len(test.exp) == 0 {
continue
@ -2722,12 +2722,12 @@ func TestContainerCombinations(t *testing.T) {
cts := setupContainerTests()
containerTypes := []byte{containerArray, ContainerBitmap, ContainerRun}
containerTypes := []byte{containerArray, containerBitmap, ContainerRun}
// map used for a more descriptive print
cm := map[byte]string{
containerArray: "array",
ContainerBitmap: "bitmap",
containerBitmap: "bitmap",
ContainerRun: "run",
}
@ -3212,7 +3212,7 @@ func TestContainerCombinations(t *testing.T) {
if !(len(clone.array) == 0 && len(cts[ct][exp].array) == 0) && !reflect.DeepEqual(clone.array, cts[ct][exp].array) {
t.Fatalf("test %s expected array %X, but got %X", desc, cts[ct][exp].array, clone.array)
}
} else if ct == ContainerBitmap {
} else if ct == containerBitmap {
if clone.isArray() {
clone.arrayToBitmap()
} else if clone.isRun() {