#![doc = include_str!("../README.md")]
mod adler32;
pub mod allocate;
pub mod c_api;
pub mod crc32;
pub mod deflate;
pub mod inflate;
pub mod read_buf;
pub use adler32::{adler32, adler32_combine};
pub use crc32::{crc32, crc32_combine};
#[macro_export]
macro_rules! trace {
($($arg:tt)*) => {
};
}
#[allow(unused)]
pub(crate) const ENOUGH: usize = ENOUGH_LENS + ENOUGH_DISTS;
pub(crate) const ENOUGH_LENS: usize = 1332;
pub(crate) const ENOUGH_DISTS: usize = 592;
pub(crate) const ADLER32_INITIAL_VALUE: usize = 1;
pub(crate) const CRC32_INITIAL_VALUE: u32 = 0;
pub const MIN_WBITS: i32 = 8; pub const MAX_WBITS: i32 = 15; pub(crate) const DEF_WBITS: i32 = MAX_WBITS;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum Flush {
#[default]
NoFlush = 0,
PartialFlush = 1,
SyncFlush = 2,
FullFlush = 3,
Finish = 4,
Block = 5,
Trees = 6,
}
impl TryFrom<i32> for Flush {
type Error = ();
fn try_from(value: i32) -> Result<Self, Self::Error> {
match value {
0 => Ok(Flush::NoFlush),
1 => Ok(Flush::PartialFlush),
2 => Ok(Flush::SyncFlush),
3 => Ok(Flush::FullFlush),
4 => Ok(Flush::Finish),
5 => Ok(Flush::Block),
6 => Ok(Flush::Trees),
_ => Err(()),
}
}
}
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub(crate) struct Code {
pub op: u8,
pub bits: u8,
pub val: u16,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[repr(i32)]
pub enum ReturnCode {
Ok = 0,
StreamEnd = 1,
NeedDict = 2,
ErrNo = -1,
StreamError = -2,
DataError = -3,
MemError = -4,
BufError = -5,
VersionError = -6,
}
impl From<i32> for ReturnCode {
fn from(value: i32) -> Self {
use ReturnCode::*;
match value {
0 => Ok,
1 => StreamEnd,
2 => NeedDict,
-1 => ErrNo,
-2 => StreamError,
-3 => DataError,
-4 => MemError,
-5 => BufError,
-6 => VersionError,
_ => panic!("invalid return code {value}"),
}
}
}