archivelib 0.2.0

An implementaton of the Greenleaf ArchiveLib compression/decompression algorithm
Documentation
use crate::consts::CONST_N142_IS_15;
use crate::expand::{RExpandData, Result};
use crate::support::BitRead;
use std::io::Write;

impl<R: BitRead, W: Write> RExpandData<R, W> {
  #![allow(unused_assignments)]
  pub fn calculate_run_offset(&mut self) -> Result<u16> {
    let mut run_length276 = self.dat_arr241[(self.bits182 >> 8) as usize];
    let mut var283 = (1 << 7) as u16;
    while run_length276 >= cast!(CONST_N142_IS_15 as u16) {
      if 0 != self.bits182 & var283 {
        run_length276 = self.dat_arr190[cast!(run_length276 as usize)];
      } else {
        run_length276 = self.dat_arr189[cast!(run_length276 as usize)];
      }
      var283 >>= 1;
      pending_test!();
    }
    let bits = i16::from(self.dat_arr181[cast!(run_length276 as usize)]);
    self.read_bits(bits)?;
    if run_length276 != 0 {
      run_length276 -= 1;
      run_length276 = (1 << run_length276) + self.get_bits(cast!(run_length276 as i16))?;
    }
    Ok(run_length276)
  }
}