crate::ix!();
pub fn get_fn_process_quad(fbc: FilterBlockConfiguration, x: &FbqGlobal)
-> Box<FBQFPtr>
{
let a = x.fu1ptr.is_some();
let b = x.fu2ptr.is_some();
let ws = x.wsptr.is_some();
macro_rules! dispatch{
($x:ident, $a:ident, $b:ident, $c:ident) => {
match ($a, $b, $c) {
(false, false, false) => $x::<false,false,false>,
(false, false, true ) => $x::<false,false,true>,
(false, true, false) => $x::<false,true,false>,
(false, true, true ) => $x::<false,true,true>,
(true, false, false) => $x::<true,false,false>,
(true, false, true ) => $x::<true,false,true>,
(true, true, false) => $x::<true,true,false>,
(true, true, true ) => $x::<true,true,true>,
}
};
}
use crate::{
do_serial1,
do_serial2,
do_serial3,
do_dual1,
do_dual2,
do_stereo,
do_ring,
do_wide
};
Box::new(match fbc {
FilterBlockConfiguration::Serial1 => { dispatch![do_serial1, a, ws, b] },
FilterBlockConfiguration::Serial2 => { dispatch![do_serial2, a, ws, b] },
FilterBlockConfiguration::Serial3 => { dispatch![do_serial3, a, ws, b] },
FilterBlockConfiguration::Dual1 => { dispatch![do_dual1, a, ws, b] },
FilterBlockConfiguration::Dual2 => { dispatch![do_dual2, a, ws, b] },
FilterBlockConfiguration::Stereo => { dispatch![do_stereo, a, ws, b] },
FilterBlockConfiguration::Ring => { dispatch![do_ring, a, ws, b] },
FilterBlockConfiguration::Wide => { dispatch![do_wide, a, ws, b] },
})
}
#[test] fn does_this_work() {
todo!();
}