summaryrefslogtreecommitdiffstats
path: root/src/common/bitpacker.rs
diff options
context:
space:
mode:
authorPaul Masurel <paul.masurel@gmail.com>2019-02-04 13:24:00 +0100
committerGitHub <noreply@github.com>2019-02-04 13:24:00 +0100
commit4507df925503674647a4772e235323ad6fe82afe (patch)
treed0b1d1e876f610181f5464d79e09c27b75657a86 /src/common/bitpacker.rs
parente8625548b7db44c772e7704dfbcaa64aeb43e74d (diff)
Closes #461 (#489)
Multivalued fast field uses `u64` indexes.
Diffstat (limited to 'src/common/bitpacker.rs')
-rw-r--r--src/common/bitpacker.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/common/bitpacker.rs b/src/common/bitpacker.rs
index 7b5204e..ca23ca8 100644
--- a/src/common/bitpacker.rs
+++ b/src/common/bitpacker.rs
@@ -64,7 +64,7 @@ pub struct BitUnpacker<Data>
where
Data: Deref<Target = [u8]>,
{
- num_bits: usize,
+ num_bits: u64,
mask: u64,
data: Data,
}
@@ -80,13 +80,13 @@ where
(1u64 << num_bits) - 1u64
};
BitUnpacker {
- num_bits: num_bits as usize,
+ num_bits: num_bits as u64,
mask,
data,
}
}
- pub fn get(&self, idx: usize) -> u64 {
+ pub fn get(&self, idx: u64) -> u64 {
if self.num_bits == 0 {
return 0u64;
}
@@ -97,10 +97,10 @@ where
let addr = addr_in_bits >> 3;
let bit_shift = addr_in_bits & 7;
debug_assert!(
- addr + 8 <= data.len(),
+ addr + 8 <= data.len() as u64,
"The fast field field should have been padded with 7 bytes."
);
- let val_unshifted_unmasked: u64 = LittleEndian::read_u64(&data[addr..]);
+ let val_unshifted_unmasked: u64 = LittleEndian::read_u64(&data[(addr as usize)..]);
let val_shifted = (val_unshifted_unmasked >> bit_shift) as u64;
val_shifted & mask
}
@@ -129,7 +129,7 @@ mod test {
fn test_bitpacker_util(len: usize, num_bits: u8) {
let (bitunpacker, vals) = create_fastfield_bitpacker(len, num_bits);
for (i, val) in vals.iter().enumerate() {
- assert_eq!(bitunpacker.get(i), *val);
+ assert_eq!(bitunpacker.get(i as u64), *val);
}
}