density_rs/io/
write_signature.rs

1#[derive(Debug)]
2pub struct WriteSignature {
3    pub(crate) pos: usize,
4    pub(crate) value: u64,
5    pub(crate) shift: u8,
6}
7
8impl WriteSignature {
9    pub fn new() -> Self {
10        WriteSignature { pos: 0, value: 0, shift: 0 }
11    }
12
13    #[inline(always)]
14    pub fn push_bits(&mut self, mask: u64, n: u8) {
15        self.value |= mask << self.shift;
16        self.shift += n;
17    }
18
19    #[inline(always)]
20    pub fn init(&mut self, pos: usize) {
21        self.pos = pos;
22        self.value = 0;
23        self.shift = 0;
24    }
25}