use crate::base_compressor::BaseCompressor;
use crate::chunk_spec::ChunkSpec;
use crate::data_types::NumberLike;
use crate::errors::QCompressResult;
use crate::{ChunkMetadata, CompressorConfig, Flags};
#[derive(Clone, Debug)]
pub struct Compressor<T: NumberLike>(BaseCompressor<T>);
impl<T: NumberLike> Default for Compressor<T> {
fn default() -> Self {
Self::from_config(CompressorConfig::default())
}
}
impl<T: NumberLike> Compressor<T> {
pub fn from_config(config: CompressorConfig) -> Self {
Self(BaseCompressor::<T>::from_config(
config, true,
))
}
pub fn flags(&self) -> &Flags {
&self.0.flags
}
pub fn header(&mut self) -> QCompressResult<()> {
self.0.header()
}
pub fn chunk_metadata(
&mut self,
nums: &[T],
spec: &ChunkSpec,
) -> QCompressResult<ChunkMetadata<T>> {
self.0.chunk_metadata_internal(nums, spec)
}
pub fn data_page(&mut self) -> QCompressResult<()> {
self.0.data_page_internal()
}
pub fn drain_bytes(&mut self) -> Vec<u8> {
self.0.writer.drain_bytes()
}
pub fn byte_size(&mut self) -> usize {
self.0.writer.byte_size()
}
}