diff options
Diffstat (limited to 'unpacker/src/lib.rs')
-rw-r--r-- | unpacker/src/lib.rs | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/unpacker/src/lib.rs b/unpacker/src/lib.rs deleted file mode 100644 index f649581..0000000 --- a/unpacker/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -#[derive(Debug)] -pub struct Unpacker { - pub out: Vec<u8>, - pub work: u16, - pub work_idx: usize, -} - -impl Unpacker { - pub fn new() -> Self { - Self { - out: vec![], - work: 0, - work_idx: 0, - } - } - - pub fn push(&mut self, byte: u8) { - self.work = self.work << 8; - self.work |= byte as u16; - self.work_idx += 8; - - //println!("[{work_idx}]"); - - if self.work_idx >= 10 { - let to_front = self.work_idx - 10; - let fronted = self.work >> to_front; - let masked = fronted & 0b000_000_111_11_111_11; - - let fixwork = fronted << to_front; - - self.out.extend(masked.to_le_bytes()); - self.work_idx -= 10; - self.work ^= fixwork; - } - } - - pub fn finish(&mut self) { - if self.work_idx > 0 { - let remain = 10 - self.work_idx; - let out = self.work << remain; - self.out.extend(out.to_le_bytes()) - } - } -} |