1#![no_std]
2#![cfg_attr(feature = "nightly", feature(allocator_api))]
3
4extern crate alloc;
5#[cfg(feature = "std")]
6extern crate std;
7
8pub(crate) mod prelude;
9
10pub mod comp;
11pub mod decomp;
12pub mod util;
13
14#[cfg(test)]
15pub mod test_prelude;
16
17#[cfg(feature = "c-exports")]
18pub mod exports;
19
20pub mod impls {
21 pub mod comp {
22 pub mod comp_dict;
23 pub mod compress;
24 pub mod lz77_matcher;
25 }
26
27 pub mod decomp {
28 pub(crate) mod common;
29 pub mod decompress;
30 pub mod estimate;
31 }
32}
33
34pub trait ReadOnlyPointerSrc {
35 fn as_ptr(&self) -> *const u8;
36}
37
38impl ReadOnlyPointerSrc for &[u8] {
39 fn as_ptr(&self) -> *const u8 {
40 (*self).as_ptr()
41 }
42}
43
44impl ReadOnlyPointerSrc for *const u8 {
45 fn as_ptr(&self) -> *const u8 {
46 *self
47 }
48}
49
50pub trait MutablePointerSrc {
51 fn as_mut_ptr(&mut self) -> *mut u8;
52}
53
54impl MutablePointerSrc for &mut [u8] {
55 fn as_mut_ptr(&mut self) -> *mut u8 {
56 (*self).as_mut_ptr()
57 }
58}
59
60impl MutablePointerSrc for *mut u8 {
61 fn as_mut_ptr(&mut self) -> *mut u8 {
62 *self
63 }
64}