Misc Missing Functionality for Roaring64 bitmaps
Dr-Emann opened this issue · comments
Zachary Dremann commented
This is just a list of functionality which I noticed was missing in comparison to roaring_bitmap_t
as I was adding bindings to croaring-rs. I may add more if I find anything else, rather than making more issues.
-
roaring64_bitmap_clear
, to remove all data, and start from an empty bitmap
(can this be done more efficiently thanroaring64_bitmap_remove_range_closed(0, UINT64_MAX)
). It seems likeroaring64_bitmap_remove_range_closed
could be optimized, it appears to loop through all high 48 bit combos, rather than skipping around using the ART.roaring64_bitmap_remove_range_closed(0, UINT64_MAX)
is now efficient. - The ability to do external iteration (an iterator type that the caller controls arbitrarily)
-
roaring64_bitmap_remove_run_compression
. This is probably only really useful after #542, to avoid run containers in the serialization when the reader won't understand them -
roaring64_bitmap_internal_validate
, mostly useful for tests, to ensure our assumptions are never broken (max art depth, things which should be sorted are, etc). -
roaring64_bitmap_flip
-
roaring64_bitmap_range_cardinality
is exclusive only, it's unfortunate thatroaring64_bitmap_cardinality(r)
can't be emulated byroaring64_bitmap_range_cardinality(r, 0, UINT64_MAX)
Tom Cornebize commented
If I may add a few to the list:
- A function to convert a
roaring64_bitmap_t
to an array ofuint64_t
(similar to roaring_bitmap_to_uint32_array) - A function to convert a
roaring_bitmap_t
to aroaring64_bitmap_t