pub mod adaptive;
pub mod archive;
pub mod builder;
pub mod chunk;
pub mod compress;
pub mod decompress;
pub mod error;
pub mod header;
pub mod memory_pool;
pub mod stream;
pub use adaptive::{
CompressionRecommendation, DataAnalysis, FileType, analyze_data, auto_compress,
compress_with_best_ratio, select_compression_mode,
};
pub use archive::{
ArchiveEntry, ArchiveMetadata, ArchiveStats, BLTEArchive,
builder::{ArchiveBuilder, MultiArchiveBuilder},
recreation::{
ChunkStructure, ExtractedFile, HeaderFormat, OriginalFileMetadata, PerfectArchiveBuilder,
analyze_chunk_structure, detect_compression_mode, detect_header_format,
recreate_perfect_blte_file,
},
};
pub use builder::{
BLTEBuilder, ChunkSpec, CompressionStrategy, EncryptionAlgorithm, EncryptionSpec,
};
pub use chunk::{BLTEFile, BLTEFileRef, ChunkData, ChunkDataRef};
pub use compress::{
EncryptionMethod,
auto_select_compression_mode,
compress_chunk,
compress_data_encrypted_multi,
compress_data_encrypted_single,
compress_data_multi,
compress_data_single,
compress_encrypted,
create_single_chunk_blte,
};
pub use decompress::{
decompress_blte, decompress_blte_pooled, decompress_chunk, decompress_chunk_pooled,
};
pub use error::{Error, Result};
pub use header::{BLTEHeader, ChunkInfo};
pub use memory_pool::{
BLTEMemoryPool, PoolConfig, PoolStats, PooledBuffer, PooledBufferGuard, global_pool,
init_global_pool,
};
pub use stream::{BLTEStream, create_streaming_reader};
pub const BLTE_MAGIC: [u8; 4] = [b'B', b'L', b'T', b'E'];
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum CompressionMode {
None = b'N' as isize,
ZLib = b'Z' as isize,
LZ4 = b'4' as isize,
#[deprecated(
since = "0.4.0",
note = "Recursive BLTE (Frame mode) is deprecated and will be removed in v0.5.0. Use standard BLTE modes instead."
)]
Frame = b'F' as isize,
Encrypted = b'E' as isize,
}
impl CompressionMode {
#[allow(deprecated)]
pub fn from_byte(byte: u8) -> Option<Self> {
match byte {
b'N' => Some(Self::None),
b'Z' => Some(Self::ZLib),
b'4' => Some(Self::LZ4),
b'F' => Some(Self::Frame),
b'E' => Some(Self::Encrypted),
_ => None,
}
}
pub fn as_byte(self) -> u8 {
self as u8
}
}