Template Class BitmapRange
Defined in File fixed_size_bitmap.hpp
Class Documentation
-
template<class T, class Diff = DiffFunction<T>, uint32_t NBITS = 256>
class BitmapRange Template class to hold a range of items using a custom bitmap.
- Template Parameters
T – Type of the elements in the range. Should have
>=
operator andT + uint32_t
returning T.Diff – Functor calculating the difference of two T. The result should be assignable to a uint32_t.
NBITS – Size in bits of the bitmap. Range of items will be [base, base + NBITS - 1].
Public Functions
-
inline BitmapRange() noexcept
Default constructor. Constructs an empty range with default base.
-
inline explicit BitmapRange(T base) noexcept
Base-specific constructor. Constructs an empty range with specified base.
- Parameters
base – Specific base value for the created range.
-
inline BitmapRange(T base, uint32_t max_bits) noexcept
Range specific constructor. Constructs an empty range with specified base and maximum bits.
- Parameters
base – Specific base value for the created range.
max_bits – Specific maximum number of bits.
-
inline void base(T base) noexcept
Set a new base for the range. This method resets the range and sets a new value for its base.
- Parameters
base – New base value to set.
-
inline void base(T base, uint32_t max_bits) noexcept
Set a new base and maximum bits for the range. This method resets the range and sets a new value for its base, as long as a maximum number of bits.
- Parameters
base – New base value to set.
max_bits – New maximum number of bits.
-
inline void base_update(T base) noexcept
Set a new base for the range, keeping old values where possible. This method implements a sliding window mechanism for changing the base of the range.
- Parameters
base – New base value to set.
-
inline bool empty() const noexcept
Returns whether the range is empty (i.e. has all bits unset).
- Returns
true if the range is empty, false otherwise.
-
inline T max() const noexcept
Returns the highest value set in the range.
- Returns
the highest value set in the range. If the range is empty, the result is undetermined.
-
inline T min() const noexcept
Returns the lowest value set in the range.
- Returns
the lowest value set in the range. If the range is empty, the result is undetermined.
-
inline bool is_set(const T &item) const noexcept
Checks if an element is present in the bitmap.
- Parameters
item – Value to be checked.
- Returns
true if the item is present in the bitmap, false otherwise.
-
inline bool add(const T &item) noexcept
Adds an element to the range. Adds an element to the bitmap if it is in the allowed range.
- Parameters
item – Value to be added.
- Returns
true if the item has been added (i.e. is in the allowed range), false otherwise.
-
inline void add_range(const T &from, const T &to)
Adds a range of elements to the range.
Add all elements in [from, to) to the range. Equivalent to for(T i = from; i < to; i++) add(i);
- Parameters
from – Starting value of the range to add.
to – Ending value of the range to add.
-
inline void remove(const T &item) noexcept
Removes an element from the range. Removes an element from the bitmap.
- Parameters
item – Value to be removed.
-
inline void bitmap_get(uint32_t &num_bits, bitmap_type &bitmap, uint32_t &num_longs_used) const noexcept
Gets the current value of the bitmap. This method is designed to be used when performing serialization of a bitmap range.
- Parameters
num_bits – Upon return, it will contain the number of significant bits in the bitmap.
bitmap – Upon return, it will contain the current value of the bitmap.
num_longs_used – Upon return, it will contain the number of valid elements on the returned bitmap.
-
inline void bitmap_set(uint32_t num_bits, const uint32_t *bitmap) noexcept
Sets the current value of the bitmap. This method is designed to be used when performing deserialization of a bitmap range.
- Parameters
num_bits – Number of significant bits in the input bitmap.
bitmap – Points to the beginning of a uint32_t array holding the input bitmap.