#[macro_export]
macro_rules! application {
(entry = $entry:path $(,)?) => {
#[doc(hidden)]
pub const NICHLINK_APPLICATION_ENTRY: &str = stringify!($entry);
};
}
const _: () = assert!(::nichlink::lexicon::same_text(
::nichlink::lexicon::GENERATED_LIB_FILE,
"generated_lib.rs"
));
#[macro_export]
macro_rules! host {
() => {
include!(concat!(env!("OUT_DIR"), "/generated_lib.rs"));
};
}
#[macro_export]
macro_rules! static_graft_plan {
($framework:expr, $($cuts:tt)+) => {
const _: $crate::FrameworkId = $framework;
const _: &str = stringify!($($cuts)+);
};
}
#[macro_export]
macro_rules! graft_plan {
($framework:expr, $($cuts:tt)+) => {{
let mut plan = $crate::GraftPlan::new($framework);
$crate::__graft_plan_cuts!(plan; $($cuts)+);
plan
}};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __graft_plan_cuts {
($plan:ident;) => {};
($plan:ident; cut [$start:literal to $end:literal] full graft $graft:literal $(, $($rest:tt)*)?) => {{
let mut cut = $crate::GraftCut::range($start, $end, $graft);
cut.subtree = true;
$plan.cuts.push(cut);
$crate::__graft_plan_cuts!($plan; $($($rest)*)?);
}};
($plan:ident; cut [$start:literal to $end:literal] graft $graft:literal $(, $($rest:tt)*)?) => {{
$plan.cuts
.push($crate::GraftCut::range($start, $end, $graft));
$crate::__graft_plan_cuts!($plan; $($($rest)*)?);
}};
($plan:ident; cut [$path:literal] full graft $graft:literal $(, $($rest:tt)*)?) => {{
$plan.cuts.push($crate::GraftCut::subtree($path, $graft));
$crate::__graft_plan_cuts!($plan; $($($rest)*)?);
}};
($plan:ident; cut [$path:literal] graft $graft:literal $(, $($rest:tt)*)?) => {{
$plan.cuts.push($crate::GraftCut::new($path, $graft));
$crate::__graft_plan_cuts!($plan; $($($rest)*)?);
}};
($plan:ident; cut $path:literal full graft $graft:literal $(, $($rest:tt)*)?) => {{
$plan.cuts.push($crate::GraftCut::subtree($path, $graft));
$crate::__graft_plan_cuts!($plan; $($($rest)*)?);
}};
($plan:ident; cut $path:literal graft $graft:literal $(, $($rest:tt)*)?) => {{
$plan.cuts.push($crate::GraftCut::new($path, $graft));
$crate::__graft_plan_cuts!($plan; $($($rest)*)?);
}};
}