| 1006 | } |
| 1007 | |
| 1008 | func (ac *arrayContainer) resetTo(a container) { |
| 1009 | switch x := a.(type) { |
| 1010 | case *arrayContainer: |
| 1011 | ac.realloc(len(x.content)) |
| 1012 | copy(ac.content, x.content) |
| 1013 | |
| 1014 | case *bitmapContainer: |
| 1015 | ac.realloc(x.cardinality) |
| 1016 | x.fillArray(ac.content) |
| 1017 | |
| 1018 | case *runContainer16: |
| 1019 | card := x.getCardinality() |
| 1020 | ac.realloc(card) |
| 1021 | cur := 0 |
| 1022 | for _, r := range x.iv { |
| 1023 | for val := int(r.start); val <= int(r.last()); val++ { |
| 1024 | ac.content[cur] = uint16(val) |
| 1025 | cur++ |
| 1026 | } |
| 1027 | } |
| 1028 | |
| 1029 | default: |
| 1030 | panic("unsupported container type") |
| 1031 | } |
| 1032 | } |
| 1033 | |
| 1034 | func (ac *arrayContainer) realloc(size int) { |
| 1035 | if cap(ac.content) < size { |