use {ffi, lock};
pub struct RawPlan {
plan: ffi::fftw_plan
}
impl RawPlan {
pub fn new(f: || -> ffi::fftw_plan) -> Option<RawPlan> {
let plan = lock::run(f);
if plan.is_null() {
None
} else {
Some(RawPlan { plan: plan })
}
}
pub unsafe fn new_unchecked(plan: ffi::fftw_plan) -> RawPlan {
RawPlan { plan: plan }
}
pub fn debug_print(&self) {
unsafe {ffi::fftw_print_plan(self.plan);}
}
pub unsafe fn execute(&mut self) {
ffi::fftw_execute(self.plan)
}
pub fn raw_plan(&self) -> ffi::fftw_plan {
self.plan
}
}
impl Drop for RawPlan {
fn drop(&mut self) {
unsafe {ffi::fftw_destroy_plan(self.plan)}
}
}