Sha256: 76bcca4e79bef412eeebdd06d2d0a4348ed9ee17edbdaa6d451d8bf03b1cde85

Contents?: true

Size: 1.59 KB

Versions: 30

Compression:

Stored size: 1.59 KB

Contents

//! Buffer wrappers implementing default so we can allocate the buffers with `Box::default()`
//! to avoid stack copies. Box::new() doesn't at the moment, and using a vec means we would lose
//! static length info.

use crate::deflate::core::{LZ_DICT_SIZE, MAX_MATCH_LEN};

/// Size of the buffer of lz77 encoded data.
pub const LZ_CODE_BUF_SIZE: usize = 64 * 1024;
/// Size of the output buffer.
pub const OUT_BUF_SIZE: usize = (LZ_CODE_BUF_SIZE * 13) / 10;
pub const LZ_DICT_FULL_SIZE: usize = LZ_DICT_SIZE + MAX_MATCH_LEN - 1 + 1;

/// Size of hash values in the hash chains.
pub const LZ_HASH_BITS: i32 = 15;
/// How many bits to shift when updating the current hash value.
pub const LZ_HASH_SHIFT: i32 = (LZ_HASH_BITS + 2) / 3;
/// Size of the chained hash tables.
pub const LZ_HASH_SIZE: usize = 1 << LZ_HASH_BITS;

#[inline]
pub fn update_hash(current_hash: u16, byte: u8) -> u16 {
    ((current_hash << LZ_HASH_SHIFT) ^ u16::from(byte)) & (LZ_HASH_SIZE as u16 - 1)
}

pub struct HashBuffers {
    pub dict: [u8; LZ_DICT_FULL_SIZE],
    pub next: [u16; LZ_DICT_SIZE],
    pub hash: [u16; LZ_DICT_SIZE],
}

impl HashBuffers {
    #[inline]
    pub fn reset(&mut self) {
        *self = HashBuffers::default();
    }
}

impl Default for HashBuffers {
    fn default() -> HashBuffers {
        HashBuffers {
            dict: [0; LZ_DICT_FULL_SIZE],
            next: [0; LZ_DICT_SIZE],
            hash: [0; LZ_DICT_SIZE],
        }
    }
}

pub struct LocalBuf {
    pub b: [u8; OUT_BUF_SIZE],
}

impl Default for LocalBuf {
    fn default() -> LocalBuf {
        LocalBuf {
            b: [0; OUT_BUF_SIZE],
        }
    }
}

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
wasmtime-29.0.0 ./ext/cargo-vendor/miniz_oxide-0.8.3/src/deflate/buffer.rs
wasmtime-28.0.0 ./ext/cargo-vendor/miniz_oxide-0.8.2/src/deflate/buffer.rs
wasmtime-27.0.0 ./ext/cargo-vendor/miniz_oxide-0.8.0/src/deflate/buffer.rs
wasmtime-26.0.0 ./ext/cargo-vendor/miniz_oxide-0.8.0/src/deflate/buffer.rs
wasmtime-25.0.2 ./ext/cargo-vendor/miniz_oxide-0.7.4/src/deflate/buffer.rs
wasmtime-25.0.1 ./ext/cargo-vendor/miniz_oxide-0.7.4/src/deflate/buffer.rs
wasmtime-25.0.0 ./ext/cargo-vendor/miniz_oxide-0.7.4/src/deflate/buffer.rs
wasmtime-24.0.0 ./ext/cargo-vendor/miniz_oxide-0.7.4/src/deflate/buffer.rs
wasmtime-23.0.2 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-22.0.0 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-21.0.1 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-20.0.2 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-20.0.0 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-18.0.3 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-17.0.1 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-17.0.0 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-16.0.0 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-15.0.1 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-15.0.0 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs
wasmtime-14.0.4 ./ext/cargo-vendor/miniz_oxide-0.7.1/src/deflate/buffer.rs