1pub mod b2nd;
2pub mod codecs;
3pub mod compress;
4pub mod constants;
5pub mod filters;
6pub mod header;
7pub mod schunk;
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq)]
11pub enum Codec {
12 BloscLz = 0,
13 Lz4 = 1,
14 Lz4hc = 2,
15 Zlib = 4,
16 Zstd = 5,
17}
18
19impl Codec {
20 pub fn parse_name(s: &str) -> Option<Self> {
21 match s.to_lowercase().as_str() {
22 "blosclz" => Some(Codec::BloscLz),
23 "lz4" => Some(Codec::Lz4),
24 "lz4hc" => Some(Codec::Lz4hc),
25 "zlib" => Some(Codec::Zlib),
26 "zstd" => Some(Codec::Zstd),
27 _ => None,
28 }
29 }
30}
31
32impl std::str::FromStr for Codec {
33 type Err = ();
34
35 fn from_str(s: &str) -> Result<Self, Self::Err> {
36 Self::parse_name(s).ok_or(())
37 }
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq)]
42pub enum Filter {
43 NoFilter = 0,
44 Shuffle = 1,
45 BitShuffle = 2,
46 Delta = 3,
47 TruncPrec = 4,
48}
49
50impl Filter {
51 pub fn parse_name(s: &str) -> Option<Self> {
52 match s.to_lowercase().as_str() {
53 "nofilter" | "none" => Some(Filter::NoFilter),
54 "shuffle" => Some(Filter::Shuffle),
55 "bitshuffle" => Some(Filter::BitShuffle),
56 "delta" => Some(Filter::Delta),
57 "truncprec" | "trunc_prec" => Some(Filter::TruncPrec),
58 _ => None,
59 }
60 }
61}
62
63impl std::str::FromStr for Filter {
64 type Err = ();
65
66 fn from_str(s: &str) -> Result<Self, Self::Err> {
67 Self::parse_name(s).ok_or(())
68 }
69}
70
71pub const DEFAULT_CHUNKSIZE: usize = 4 * 1024 * 1024;