AddRange adds the integers in [rangeStart, rangeEnd) to the bitmap.
(rangeStart, rangeEnd uint64)
| 1052 | |
| 1053 | // AddRange adds the integers in [rangeStart, rangeEnd) to the bitmap. |
| 1054 | func (rb *Bitmap) AddRange(rangeStart, rangeEnd uint64) { |
| 1055 | if rangeStart >= rangeEnd { |
| 1056 | return |
| 1057 | } |
| 1058 | hbStart := uint64(highbits(rangeStart)) |
| 1059 | lbStart := uint64(lowbits(rangeStart)) |
| 1060 | hbLast := uint64(highbits(rangeEnd - 1)) |
| 1061 | lbLast := uint64(lowbits(rangeEnd - 1)) |
| 1062 | |
| 1063 | var max uint64 = maxLowBit |
| 1064 | for hb := hbStart; hb <= hbLast; hb++ { |
| 1065 | containerStart := uint64(0) |
| 1066 | if hb == hbStart { |
| 1067 | containerStart = lbStart |
| 1068 | } |
| 1069 | containerLast := max |
| 1070 | if hb == hbLast { |
| 1071 | containerLast = lbLast |
| 1072 | } |
| 1073 | |
| 1074 | rb.getOrCreateContainer(uint32(hb)).AddRange(containerStart, containerLast+1) |
| 1075 | } |
| 1076 | } |
| 1077 | |
| 1078 | // RemoveRange removes the integers in [rangeStart, rangeEnd) from the bitmap. |
| 1079 | func (rb *Bitmap) RemoveRange(rangeStart, rangeEnd uint64) { |