diff options
author | Paul Masurel <paul.masurel@gmail.com> | 2019-01-08 00:48:14 +0900 |
---|---|---|
committer | Paul Masurel <paul.masurel@gmail.com> | 2019-01-08 00:48:14 +0900 |
commit | beb4289ec29d55a7d81b10cf4af61b1fd5b10d29 (patch) | |
tree | d893b6327d1fca4daa70bffb95738f300eb05e07 /src/common/bitpacker.rs | |
parent | bdd72e4683f08d0af78826033e70cfbbbc5b8d04 (diff) |
Less unsafe
Diffstat (limited to 'src/common/bitpacker.rs')
-rw-r--r-- | src/common/bitpacker.rs | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/src/common/bitpacker.rs b/src/common/bitpacker.rs index e84fa15..7b5204e 100644 --- a/src/common/bitpacker.rs +++ b/src/common/bitpacker.rs @@ -104,31 +104,6 @@ where let val_shifted = (val_unshifted_unmasked >> bit_shift) as u64; val_shifted & mask } - - /// Reads a range of values from the fast field. - /// - /// The range of values read is from - /// `[start..start + output.len()[` - pub fn get_range(&self, start: u32, output: &mut [u64]) { - if self.num_bits == 0 { - for val in output.iter_mut() { - *val = 0u64; - } - } else { - let data: &[u8] = &*self.data; - let num_bits = self.num_bits; - let mask = self.mask; - let mut addr_in_bits = (start as usize) * num_bits; - for output_val in output.iter_mut() { - let addr = addr_in_bits >> 3; - let bit_shift = addr_in_bits & 7; - let val_unshifted_unmasked: u64 = LittleEndian::read_u64(&data[addr..]); - let val_shifted = (val_unshifted_unmasked >> bit_shift) as u64; - *output_val = val_shifted & mask; - addr_in_bits += num_bits; - } - } - } } #[cfg(test)] @@ -166,17 +141,4 @@ mod test { test_bitpacker_util(6, 14); test_bitpacker_util(1000, 14); } - - #[test] - fn test_bitpacker_range() { - let (bitunpacker, vals) = create_fastfield_bitpacker(100_000, 12); - let buffer_len = 100; - let mut buffer = vec![0u64; buffer_len]; - for start in vec![0, 10, 20, 100, 1_000] { - bitunpacker.get_range(start as u32, &mut buffer[..]); - for i in 0..buffer_len { - assert_eq!(buffer[i], vals[start + i]); - } - } - } } |