MCPcopy
hub / github.com/RoaringBitmap/roaring / andArray

Method andArray

runcontainer.go:1921–1949  ·  view source on GitHub ↗
(ac *arrayContainer)

Source from the content-addressed store, hash-verified

1919}
1920
1921func (rc *runContainer16) andArray(ac *arrayContainer) container {
1922 if len(rc.iv) == 0 {
1923 return newArrayContainer()
1924 }
1925
1926 acCardinality := ac.getCardinality()
1927 c := newArrayContainerCapacity(acCardinality)
1928
1929 for rlePos, arrayPos := 0, 0; arrayPos < acCardinality; {
1930 iv := rc.iv[rlePos]
1931 arrayVal := ac.content[arrayPos]
1932
1933 for iv.last() < arrayVal {
1934 rlePos++
1935 if rlePos == len(rc.iv) {
1936 return c
1937 }
1938 iv = rc.iv[rlePos]
1939 }
1940
1941 if iv.start > arrayVal {
1942 arrayPos = advanceUntil(ac.content, arrayPos, len(ac.content), iv.start)
1943 } else {
1944 c.content = append(c.content, arrayVal)
1945 arrayPos++
1946 }
1947 }
1948 return c
1949}
1950
1951func (rc *runContainer16) andNot(a container) container {
1952 switch c := a.(type) {

Callers 2

andMethod · 0.95
iandMethod · 0.95

Calls 5

newArrayContainerFunction · 0.85
advanceUntilFunction · 0.85
lastMethod · 0.80
getCardinalityMethod · 0.65

Tested by

no test coverage detected