#![doc = include_str!("../README.md")]
#![no_std]
#![deny(trivial_casts, trivial_numeric_casts, rust_2018_idioms)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#[cfg(feature = "std")]
extern crate std;
#[cfg(not(feature = "rustc-dep-of-std"))]
extern crate alloc;
#[cfg(feature = "std")]
pub(crate) const VERBOSE: bool = false;
macro_rules! vprintln {
($($x:expr),*) => {
#[cfg(feature = "std")]
if crate::VERBOSE {
std::println!($($x),*);
}
}
}
mod bit_io;
mod common;
pub mod decoding;
#[cfg(feature = "dict_builder")]
#[cfg_attr(docsrs, doc(cfg(feature = "dict_builder")))]
pub mod dictionary;
pub mod encoding;
mod histogram;
pub(crate) mod blocks;
#[cfg(feature = "fuzz_exports")]
pub mod fse;
#[cfg(feature = "fuzz_exports")]
pub mod huff0;
#[cfg(not(feature = "fuzz_exports"))]
pub(crate) mod fse;
#[cfg(not(feature = "fuzz_exports"))]
pub(crate) mod huff0;
#[cfg(feature = "std")]
pub mod io_std;
#[cfg(feature = "std")]
pub use io_std as io;
#[cfg(not(feature = "std"))]
pub mod io_nostd;
#[cfg(not(feature = "std"))]
pub use io_nostd as io;
#[cfg(test)]
mod tests;
#[cfg(feature = "bench_internals")]
#[doc(hidden)]
pub mod testing {
pub use crate::bit_io::BitReaderReversed;
#[inline(always)]
pub unsafe fn copy_bytes_overshooting_for_bench(
src: (*const u8, usize),
dst: (*mut u8, usize),
copy_at_least: usize,
) {
unsafe { crate::decoding::copy_bytes_overshooting_for_bench(src, dst, copy_at_least) };
}
pub const MAX_BLOCK_SIZE: u32 = crate::common::MAX_BLOCK_SIZE;
pub fn block_splitter_decision(block: &[u8], split_level: usize) -> usize {
crate::encoding::frame_compressor::block_splitter_decision_for_bench(block, split_level)
}
}