bit map: allow creating, but not accessing, zero-length bit maps
This commit is contained in:
parent
49fdd9617b
commit
0ad402149e
|
@ -64,11 +64,20 @@ impl Map {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_raw(bits: Vec<u64>, size: usize, padded: bool) -> Map {
|
pub fn from_raw(bits: Vec<u64>, size: usize, padded: bool) -> Map {
|
||||||
Map {
|
if size == 0 {
|
||||||
length: (bits.len() * 64 + (size - 1)) / size,
|
Map {
|
||||||
bit_size: size,
|
length: 0,
|
||||||
bits,
|
bit_size: size,
|
||||||
padded,
|
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 {
|
fn get_bit_offset(&self, i: usize) -> usize {
|
||||||
|
assert!(self.length != 0);
|
||||||
let padding = if self.padded {
|
let padding = if self.padded {
|
||||||
i / (64 / self.bit_size) * (64 % self.bit_size)
|
i / (64 / self.bit_size) * (64 % self.bit_size)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue