#![doc(
html_logo_url = "https://raw.githubusercontent.com/kassian-dev/ironstate/main/assets/logo.png",
html_favicon_url = "https://raw.githubusercontent.com/kassian-dev/ironstate/main/assets/favicon-32.png"
)]
use proc_macro::TokenStream;
use syn::{DeriveInput, parse_macro_input};
mod common;
mod event;
mod statemachine;
#[proc_macro_derive(StateMachine, attributes(state_machine, only_accepts))]
pub fn derive_state_machine(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
statemachine::derive(input)
.unwrap_or_else(syn::Error::into_compile_error)
.into()
}
#[proc_macro_derive(Event, attributes(event_kind, likelihood))]
pub fn derive_event(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
event::derive(input)
.unwrap_or_else(syn::Error::into_compile_error)
.into()
}