Macro macro_machine::declare_machine [] [src]

macro_rules! declare_machine {
    (@inner next $new_state:ident{$($new_el:ident:$new_el_val:expr),*}) => { ... };
    (@inner next $new_state:ident) => { ... };
    (@inner command @$glob_context:ident@ $sel:ident:$cur:ident;$callback:block;$new_state:ident$({$($new_el:ident:$new_el_val:expr),*})*) => { ... };
    (@inner command @$glob_context:ident@ $sel:ident:$cur:ident;$callback:block;) => { ... };
    (@inner command @$glob_context:ident@ $sel:ident:$cur:ident; ;$new_state:ident$({$($new_el:ident:$new_el_val:expr),*})*) => { ... };
    (@inner command @$glob_context:ident@ $sel:ident:$cur:ident ; ;) => { ... };
    (@inner command @$glob_context:ident@ $sel:ident:$cur:ident;$callback:block;$new_state:ident$({$($new_el:ident:$new_el_val:expr),*})*) => { ... };
    (@inner command @$glob_context:ident@ $sel:ident:$cur:ident;$callback:block;) => { ... };
    (@inner command @$glob_context:ident@ $sel:ident:$cur:ident; ;$new_state:ident$({$($new_el:ident:$new_el_val:expr),*})*) => { ... };
    (@inner command @$glob_context:ident@ $sel:ident:$cur:ident ; ;) => { ... };
    (@inner context $ss:ident $sel:ident) => { ... };
    (@inner context $ss:ident ) => { ... };
    (@inner >> $($sel:ident)* @$glob_context:ident@ $income:block) => { ... };
    (@inner << $($sel:ident)* @$glob_context:ident@ $outcome:block) => { ... };
    (@inner >> $($sel:ident)* @$glob_context:ident@ ) => { ... };
    (@inner << $($sel:ident)* @$glob_context:ident@ ) => { ... };
    (@inner params $state:ident {$($el:ident:$typ:ty);*}) => { ... };
    (@inner params $state:ident) => { ... };
    (@inner initial $initial:ident{$($init_field:ident:$init_val:expr),*}) => { ... };
    (@inner initial $initial:ident) => { ... };
    (@cmd_processor $sel:ident @$glob_context:ident@ ($($cmd:ident $($callback:block)* => $($new_state:ident$({$($new_el:ident:$new_el_val:expr),*})*)*;)*)) => { ... };
    (@state $gc_name:ident; $($state:ident @ $sel:ident ; $($income:block)*; ($job:tt); $($outcome:block)*@),*) => { ... };
    (@state ; $($state:ident @ $sel:ident ; $($income:block)*; ($job:tt); $($outcome:block)* @),*) => { ... };
    (@state $gc_name:ident; $($state:ident@; $($income:block)*; ($job:tt); $($outcome:block)*@),*) => { ... };
    (@state ; $($state:ident@; $($income:block)*; ($job:tt); $($outcome:block)*@),*) => { ... };
    (
    $machine:ident $($gc_name:ident{$($context_field:ident:$context_type:ty),*})* ($initial:ident$({$($init_field:ident:$init_val:expr),*})*)
    states[$($states:ident),*]
    commands[$($commands:ident),*]

    $(($state:ident $($sel:ident)*$({$($el:ident:$typ:ty);*})*:
        $(>> $income:block)*
        $(<< $outcome:block)*
        $($cmd:ident $($callback:block)* => $($new_state:ident$({$($new_el:ident:$new_el_val:expr),*})*)*;)*
    ))*
) => { ... };
}