#[macro_export]
macro_rules! stack_push {
($stack:expr, $data:expr, $($state:expr),+) => {
$($stack.push(&mut $data, Box::new($state));)+
}
}
pub use stack_push;
#[macro_export]
macro_rules! stack_pop {
($stack:expr, $data:expr) => {
$stack.pop(&mut $data)
};
($stack:expr, $data:expr, $amount:expr) => {
for _ in 0..$amount {
$stack.pop(&mut $data)
}
};
}
pub use stack_pop;
#[macro_export]
macro_rules! stack_replace {
($stack:expr, $data:expr, $($state:expr),+) => {
$(
$stack.pop(&mut $data);
$stack.push(&mut $data, Box::new($state));
)+
}
}
pub use stack_replace;
#[macro_export]
macro_rules! stack_isolate{
($stack:expr, $data:expr, $($state:expr),+) => {
$stack.quit(&mut $data);
$($stack.push(&mut $data, Box::new($state));)+
}
}
pub use stack_isolate;
#[macro_export]
macro_rules! stack_quit {
($stack:expr, $data:expr) => {
$stack.quit(&mut $data)
};
}
pub use stack_quit;
#[macro_export]
macro_rules! stack_tick {
($stack:expr, $data:expr) => {
$stack.tick(&mut $data)
};
}
pub use stack_tick;
#[allow(clippy::crate_in_macro_def)]
#[macro_export]
macro_rules! trans_push {
($state:expr) => {
solstack::trans::Trans::Push(Box::new($state))
};
}
pub use trans_push;
#[allow(clippy::crate_in_macro_def)]
#[macro_export]
macro_rules! trans_pop {
() => {
solstack::trans::Trans::Pop
};
}
pub use trans_pop;
#[allow(clippy::crate_in_macro_def)]
#[macro_export]
macro_rules! trans_replace{
($state:expr) => {
solstack::trans::Trans::Replace(Box::new($state))
};
}
pub use trans_replace;
#[allow(clippy::crate_in_macro_def)]
#[macro_export]
macro_rules! trans_isolate{
($state:expr) => {
solstack::trans::Trans::Isolate(Box::new($state))
};
}
pub use trans_isolate;
#[allow(clippy::crate_in_macro_def)]
#[macro_export]
macro_rules! trans_none {
() => {
solstack::trans::Trans::None
};
}
pub use trans_none;
#[allow(clippy::crate_in_macro_def)]
#[macro_export]
macro_rules! trans_quit {
() => {
solstack::trans::Trans::Quit
};
}
pub use trans_quit;