This commit is contained in:
Dinu Blanovschi 2024-10-22 16:23:17 +02:00
parent 82a438a037
commit 5c23c789ee

View File

@ -188,13 +188,30 @@ macro_rules! bind_interrupts {
)*
}
$(
$(#[cfg($cond_irq)])?
$crate::bind_interrupts!(@__generate_impls $name $(#[cfg($cond_irq)])? $irq => $(
$(#[cfg($cond_handler)])?
unsafe impl $crate::interrupt::typelevel::Binding<$crate::interrupt::typelevel::$irq, $handler> for $name {}
)*
$handler;
)*);
)*
};
(@__generate_single_impl $name:ident $(#[cfg($cond_irq:meta)])? $irq:ident => $(#[cfg($cond_handler:meta)])? $handler:ty;) => {
#[cfg(all(
$($cond_irq,)?
$($cond_handler,)?
))]
unsafe impl $crate::interrupt::typelevel::Binding<$crate::interrupt::typelevel::$irq, $handler> for $name {}
};
(@__generate_impls $name:ident $(#[cfg($cond_irq:meta)])? $irq:ident => $(#[cfg($cond_handler:meta)])? $handler:ty;) => {
$crate::bind_interrupts!(@__generate_single_impl $name $(#[cfg($cond_irq)])? $irq => $(#[cfg($cond_handler)])? $handler;);
};
(@__generate_impls $name:ident $(#[cfg($cond_irq:meta)])? $irq:ident => $(#[cfg($cond_handler:meta)])? $handler:ty; $(tail:tt)*) => {
$crate::bind_interrupts!(@__generate_single_impl $name $(#[cfg($cond_irq)])? $irq => $(#[cfg($cond_handler)])? $handler;);
$crate::bind_interrupts!(@__generate_impls $name $(#[cfg($cond_irq)])? $irq => $(tail)*);
};
}
// Reexports