Skip to main content

basisu_c_sys/
native.rs

1#[cfg(feature = "encoder")]
2#[cfg_attr(docsrs, doc(cfg(feature = "encoder")))]
3pub mod encoder {
4    include!(concat!(env!("OUT_DIR"), "/basisu_c_api.rs"));
5
6    impl Bool32 {
7        pub fn is_ok(&self) -> bool {
8            self.0 != 0
9        }
10        pub fn is_err(&self) -> bool {
11            !self.is_ok()
12        }
13    }
14}
15
16pub mod transcoder {
17    include!(concat!(env!("OUT_DIR"), "/basisu_c_transcoder_api.rs"));
18
19    impl Bool32 {
20        pub fn is_ok(&self) -> bool {
21            self.0 != 0
22        }
23        pub fn is_err(&self) -> bool {
24            !self.is_ok()
25        }
26    }
27}
28
29pub(crate) unsafe fn copy_host_memory_to_basisu_impl(data: &[u8], basisu_ptr: u64) {
30    unsafe { core::ptr::copy_nonoverlapping(data.as_ptr(), basisu_ptr as *mut u8, data.len()) };
31}
32
33pub(crate) unsafe fn copy_basisu_memory_to_host_impl(
34    basisu_ptr: u64,
35    count: u64,
36) -> alloc::vec::Vec<u8> {
37    let mut dst = alloc::vec![0u8; count as usize];
38    unsafe {
39        core::ptr::copy_nonoverlapping(basisu_ptr as *mut u8, dst.as_mut_ptr(), count as usize)
40    };
41    dst
42}