Skip to content

Commit ec4c036

Browse files
committed
Add method add_range
This functionnality was already available with: bm.update(range(start, end)) This is probably better to also have the method add_range, for consistency with methods remove_range and contains_range.
1 parent 6778b78 commit ec4c036

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

pyroaring/bitmap.pxi

+12-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ cdef class BitMap(AbstractBitMap):
5959
step = 1
6060
start, stop = stop+1, start+1
6161
if step == 1:
62-
croaring.roaring_bitmap_add_range(self._c_bitmap, start, stop)
62+
self.add_range(start, stop)
6363
else:
6464
self |= AbstractBitMap(values, copy_on_write=self.copy_on_write)
6565
elif isinstance(values, array.array) and len(values) > 0:
@@ -129,6 +129,17 @@ cdef class BitMap(AbstractBitMap):
129129
"""
130130
croaring.roaring_bitmap_flip_inplace(self._c_bitmap, start, end)
131131

132+
def add_range(self, uint64_t range_start, uint64_t range_end):
133+
"""
134+
Add a range of values from range_start (included) to range_end (excluded).
135+
136+
>>> bm = BitMap([5, 7])
137+
>>> bm.add_range(6, 9)
138+
>>> bm
139+
BitMap([5, 6, 7, 8])
140+
"""
141+
croaring.roaring_bitmap_add_range(self._c_bitmap, range_start, range_end)
142+
132143
def remove_range(self, uint64_t range_start, uint64_t range_end):
133144
"""
134145
Remove a range of values from range_start (included) to range_end (excluded).

test.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -430,12 +430,12 @@ def test_add_remove_range(self, values, cow, start, end):
430430
bm = BitMap(values, copy_on_write=cow)
431431
# Empty range
432432
original = BitMap(bm)
433-
bm.update(range(end, start))
433+
bm.add_range(end, start)
434434
self.assertEqual(bm, original)
435435
bm.remove_range(end, start)
436436
self.assertEqual(bm, original)
437437
# Adding the range
438-
bm.update(range(start, end))
438+
bm.add_range(start, end)
439439
self.assertTrue(bm.contains_range(start, end))
440440
self.assertEqual(bm.intersection_cardinality(BitMap(range(start, end), copy_on_write=cow)),
441441
len(range(start, end)))

0 commit comments

Comments
 (0)