mod codegen;
mod impls;
mod parse;
pub(crate) use codegen as cido_codegen;
pub(crate) use parse::err;
#[proc_macro_attribute]
pub fn cidomap(
args: proc_macro::TokenStream,
input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
cido_codegen::cidomap::CidomapStruct::parse(args.into(), input.into())
.and_then(|c| cido_codegen::CodegenWrapper(c).codegen())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[proc_macro_attribute]
pub fn event_handler(
args: proc_macro::TokenStream,
input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
cido_codegen::event_handler::EventsEnum::parse(args.into(), input.into())
.and_then(|e| cido_codegen::event_handler::event_handler_codegen(&e))
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[proc_macro_attribute]
pub fn entity(
args: proc_macro::TokenStream,
input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
cido_codegen::transformer::TransformerStruct::parse(
args.into(),
input.into(),
crate::parse::StructType::Entity,
)
.and_then(|t| cido_codegen::CodegenWrapper(t).codegen())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[proc_macro_attribute]
pub fn event(
args: proc_macro::TokenStream,
input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
cido_codegen::transformer::TransformerStruct::parse(
args.into(),
input.into(),
crate::parse::StructType::Event,
)
.and_then(|t| cido_codegen::CodegenWrapper(t).codegen())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[proc_macro_derive(OrderBy, attributes(orderby))]
pub fn orderby(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
cido_codegen::orderby::OrderBy::parse(input.into())
.and_then(|o| cido_codegen::CodegenWrapper(o).generate_order_by())
.unwrap_or_else(|e| e.into_compile_error())
.into()
}
#[doc(hidden)]
#[proc_macro_attribute]
pub fn _impls(
args: proc_macro::TokenStream,
input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
impls::impls(args, input)
}