#[macro_export]
macro_rules! assert_fuzzy_eq {
($left:expr, $right:expr) => {{
#[allow(unused_imports)]
use $crate::core::traits::*;
match (&$left, &$right) {
(left_val, right_val) => {
if !(left_val.fuzzy_eq(*right_val)) {
panic!(
"assertion failed: `left.fuzzy_eq(right)`\n\
left: `{:?}`\n\
right: `{:?}`",
&*left_val, &*right_val
)
}
}
}
}};
($left:expr, $right:expr, $eps:expr) => {{
#[allow(unused_imports)]
use $crate::core::traits::*;
match (&$left, &$right, &$eps) {
(left_val, right_val, eps_val) => {
if !(left_val.fuzzy_eq_eps(*right_val, *eps_val)) {
panic!(
"assertion failed: `left.fuzzy_eq_eps(right, eps)`\n\
left: `{:?}`,\n\
right: `{:?}`\n\
eps: `{:?}`",
&*left_val, &*right_val, &*eps_val
)
}
}
}
}};
}
#[doc(hidden)]
#[macro_export]
macro_rules! replace_expr {
($_t:tt $sub:expr) => {
$sub
};
}
#[macro_export]
macro_rules! pline_open {
($( $x:expr ),* $(,)?) => {
{
#[allow(unused_imports)]
use $crate::polyline::*;
let size = <[()]>::len(&[$(cavalier_contours::replace_expr!(($x) ())),*]);
let mut pl = Polyline::with_capacity(size, false);
$(
pl.add($x.0, $x.1, $x.2);
)*
pl
}
};
}
#[macro_export]
macro_rules! pline_open_userdata {
($u:expr, $( $x:expr ),* $(,)?) => {
{
#[allow(unused_imports)]
use $crate::polyline::*;
let size = <[()]>::len(&[$(cavalier_contours::replace_expr!(($x) ())),*]);
let mut pl = Polyline::with_capacity(size, false);
$(
pl.add($x.0, $x.1, $x.2);
)*
pl.set_userdata_values($u.iter().copied());
pl
}
};
}
#[macro_export]
macro_rules! pline_closed {
($( $x:expr ),* $(,)?) => {
{
#[allow(unused_imports)]
use $crate::polyline::*;
let size = <[()]>::len(&[$(cavalier_contours::replace_expr!(($x) ())),*]);
let mut pl = Polyline::with_capacity(size, true);
$(
pl.add($x.0, $x.1, $x.2);
)*
pl
}
};
}
#[macro_export]
macro_rules! pline_closed_userdata {
($u:expr, $( $x:expr ),* $(,)?) => {
{
#[allow(unused_imports)]
use $crate::polyline::*;
let size = <[()]>::len(&[$(cavalier_contours::replace_expr!(($x) ())),*]);
let mut pl = Polyline::with_capacity(size, true);
$(
pl.add($x.0, $x.1, $x.2);
)*
pl.set_userdata_values($u.iter().copied());
pl
}
};
}