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