#![cfg_attr(docsrs, feature(doc_cfg))]
use core::mem::size_of;
#[macro_use]
mod macros;
pub mod bitpack;
pub mod header;
#[cfg(feature = "capi")]
pub mod capi;
mod constants;
mod decoder;
mod delta;
mod encoder;
mod error;
mod float;
mod params;
mod sampler;
#[cfg(feature = "capi")]
pub use capi::*;
pub use constants::{CHUNK_SIZE, CHUNK_SIZE_1024};
pub use decoder::{decompress, decompress_into, decompress_into_raw, decompress_into_slice};
pub use encoder::{
Encoder, compress, compress_delta, compress_delta_into, compress_into, profile_compress_breakdown,
};
pub use error::{Error, Result};
pub use float::AlpFloat;
pub use header::{ChunkType, MAX_HEADER_LEN, ParsedHeader, read_count, read_header};
pub use params::AlpParams;
pub use sampler::BestParams;
#[inline(always)]
pub fn count(src: &[u8]) -> Result<usize> {
header::read_count(src)
}
#[inline(always)]
pub const fn max_compressed_size<F: AlpFloat>(count: usize) -> usize {
MAX_HEADER_LEN.saturating_add(count.saturating_mul(size_of::<F>()))
}