bzip2-rs 0.1.2

Pure Rust bzip2 decompressor
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use std::mem;

pub(crate) fn inverse_bwt(tt: &mut [u32], orig_ptr: usize, mut c: [u32; 256]) -> u32 {
    let mut sum = 0u32;

    for ci in c.iter_mut() {
        sum += mem::replace(ci, sum);
    }

    for i in 0..tt.len() {
        let b = (tt[i] & 0xff) as usize;
        tt[c[b] as usize] |= (i as u32) << 8;
        c[b] += 1;
    }

    tt[orig_ptr] >> 8
}