mod entry;
use entry::{gen_entry_point_code, EntryPoint};
use proc_macro::TokenStream;
fn process_entry_point(
entry_point: EntryPoint,
attr: TokenStream,
item: TokenStream,
) -> TokenStream {
gen_entry_point_code(entry_point, attr.into(), item.into())
.unwrap_or_else(|error| error.to_compile_error())
.into()
}
#[proc_macro_attribute]
pub fn init(attr: TokenStream, item: TokenStream) -> TokenStream {
process_entry_point(EntryPoint::Init, attr, item)
}
#[proc_macro_attribute]
pub fn pre_upgrade(attr: TokenStream, item: TokenStream) -> TokenStream {
process_entry_point(EntryPoint::PreUpgrade, attr, item)
}
#[proc_macro_attribute]
pub fn post_upgrade(attr: TokenStream, item: TokenStream) -> TokenStream {
process_entry_point(EntryPoint::PostUpgrade, attr, item)
}
#[proc_macro_attribute]
pub fn inspect_message(attr: TokenStream, item: TokenStream) -> TokenStream {
process_entry_point(EntryPoint::InspectMessage, attr, item)
}
#[proc_macro_attribute]
pub fn heartbeat(attr: TokenStream, item: TokenStream) -> TokenStream {
process_entry_point(EntryPoint::Heartbeat, attr, item)
}
#[proc_macro_attribute]
pub fn update(attr: TokenStream, item: TokenStream) -> TokenStream {
process_entry_point(EntryPoint::Update, attr, item)
}
#[proc_macro_attribute]
pub fn query(attr: TokenStream, item: TokenStream) -> TokenStream {
process_entry_point(EntryPoint::Query, attr, item)
}