#[macro_export]
macro_rules! new_case {
($self:ident.$func:ident, $input:expr, $($output:expr),+) => {
$self.$func($input,vec![$($output),+]);
};
}
#[macro_export]
macro_rules! new_case_param {
($self:ident.$func:ident, $input:expr, $output:expr, $param:expr) => {
$self.$func($input, $output, $param);
};
}
#[macro_export]
macro_rules! codegen_case_create_impl {
($t:ty, $g:ty, $p:ty) => {
impl CaseGroup<$t, $g, $p> {
pub fn create(&mut self, ipt: $t, exp: Vec<$g>) {
self.add(Case::new(ipt, exp));
}
pub fn create_param(&mut self, ipt: $t, exp: Vec<$g>, params: Vec<$p>) {
self.add(Case::new_params(ipt, params, exp));
}
pub fn create_multi(&mut self, ipts: Vec<$t>, exp: Vec<$g>) {
self.add(Case::new_multi(ipts, exp));
}
pub fn create_param_multi(&mut self, ipts: Vec<$t>, exp: Vec<$g>, params: Vec<$p>) {
self.add(Case::new_params_multi(ipts, params, exp));
}
}
};
}
#[macro_export]
macro_rules! vec2d {
($([$($x:expr),* $(,)*]),+ $(,)*) => {{
vec![$(vec![$($x,)*],)*]
}};
}
#[allow(unused_imports)]
pub(crate) use new_case;
#[allow(unused_imports)]
pub(crate) use new_case_param;
#[allow(unused_imports)]
pub(crate) use vec2d;
#[allow(unused_imports)]
pub(crate) use codegen_case_create_impl;