extern crate proc_macro;
mod addressed;
mod bounded_async;
mod cell;
mod deterministic;
mod registers;
mod step;
use proc_macro::TokenStream;
#[proc_macro_derive(Addressed, attributes(addressed))]
pub fn derive_addressed(input: TokenStream) -> TokenStream {
addressed::derive(input.into())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[proc_macro_attribute]
pub fn step(attr: TokenStream, item: TokenStream) -> TokenStream {
step::expand(attr.into(), item.into())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[proc_macro_attribute]
pub fn deterministic(attr: TokenStream, item: TokenStream) -> TokenStream {
deterministic::expand(attr.into(), item.into())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[proc_macro_attribute]
pub fn bounded_async(attr: TokenStream, item: TokenStream) -> TokenStream {
bounded_async::expand(attr.into(), item.into())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[proc_macro_attribute]
pub fn register(attr: TokenStream, item: TokenStream) -> TokenStream {
registers::expand(attr.into(), item.into())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[proc_macro]
pub fn cell(input: TokenStream) -> TokenStream {
cell::expand(input.into())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}