(ac *arrayContainer)
| 1919 | } |
| 1920 | |
| 1921 | func (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 | |
| 1951 | func (rc *runContainer16) andNot(a container) container { |
| 1952 | switch c := a.(type) { |
no test coverage detected