1#![cfg_attr(not(feature = "std"), no_std)]
8#![deny(unsafe_code)]
9
10#[cfg(not(feature = "std"))]
11extern crate alloc;
12
13mod decode;
14#[cfg(feature = "std")]
15mod encode;
16
17#[cfg(feature = "parallel")]
18pub use decode::bzz_decode_parallel;
19pub use decode::{bzz_decode, decode};
20#[cfg(feature = "std")]
21pub use encode::bzz_encode;
22
23#[derive(Debug, thiserror::Error, PartialEq, Eq)]
25pub enum BzzError {
26 #[error("BZZ input is too short")]
28 TooShort,
29
30 #[error("BZZ stream contains an invalid block size")]
32 InvalidBlockSize,
33
34 #[error("BZZ stream contains an invalid BWT index")]
36 InvalidBwtIndex,
37
38 #[error("ZP coder error in BZZ stream")]
40 ZpError,
41
42 #[error("BZZ block is missing the end-of-block marker")]
44 MissingMarker,
45
46 #[error("BZZ block size exceeds maximum allowed ({0} > 4 MB)")]
48 BlockSizeTooLarge(usize),
49
50 #[error("BZZ total output size exceeds maximum allowed (256 MB)")]
52 OutputTooLarge,
53}
54
55impl From<djvu_zp::ZpError> for BzzError {
57 fn from(_: djvu_zp::ZpError) -> Self {
58 BzzError::TooShort
59 }
60}