bit map: allow creating, but not accessing, zero-length bit maps

This commit is contained in:
ice_iix 2021-12-30 15:34:28 -08:00
parent 49fdd9617b
commit 0ad402149e
1 changed files with 15 additions and 5 deletions

View File

@ -64,11 +64,20 @@ impl Map {
}
pub fn from_raw(bits: Vec<u64>, size: usize, padded: bool) -> Map {
Map {
length: (bits.len() * 64 + (size - 1)) / size,
bit_size: size,
bits,
padded,
if size == 0 {
Map {
length: 0,
bit_size: size,
bits,
padded,
}
} else {
Map {
length: (bits.len() * 64 + (size - 1)) / size,
bit_size: size,
bits,
padded,
}
}
}
@ -81,6 +90,7 @@ impl Map {
}
fn get_bit_offset(&self, i: usize) -> usize {
assert!(self.length != 0);
let padding = if self.padded {
i / (64 / self.bit_size) * (64 % self.bit_size)
} else {