use std::ffi::c_void;
#[cfg(feature = "threads")]
pub mod resizable_runner;
#[cfg(feature = "threads")]
pub mod threads_runner;
pub use jpegxl_sys::parallel_runner::JxlParallelRetCode;
use crate::decode::BasicInfo;
pub type InitFn = unsafe extern "C" fn(*mut c_void, usize) -> i32;
pub type RunFn = unsafe extern "C" fn(*mut c_void, u32, usize);
pub type RunnerFn = unsafe extern "C" fn(
runner_opaque: *mut c_void,
jpegxl_opaque: *mut c_void,
init_func: InitFn,
run_func: RunFn,
start_range: u32,
end_range: u32,
) -> JxlParallelRetCode;
pub trait JxlParallelRunner {
fn runner(&self) -> RunnerFn;
fn as_opaque_ptr(&self) -> *mut c_void;
#[allow(unused_variables)]
fn callback_basic_info(&self, basic_info: &BasicInfo) {}
}