1mod codegen;
2mod impls;
3mod parse;
4
5pub(crate) use codegen as cido_codegen;
6pub(crate) use parse::err;
7
8#[proc_macro_attribute]
10pub fn cidomap(
11 args: proc_macro::TokenStream,
12 input: proc_macro::TokenStream,
13) -> proc_macro::TokenStream {
14 cido_codegen::cidomap::CidomapStruct::parse(args.into(), input.into())
15 .and_then(|c| cido_codegen::CodegenWrapper(c).codegen())
16 .unwrap_or_else(|e| e.into_compile_error())
17 .into()
18}
19
20#[proc_macro_attribute]
22pub fn event_handler(
23 args: proc_macro::TokenStream,
24 input: proc_macro::TokenStream,
25) -> proc_macro::TokenStream {
26 cido_codegen::event_handler::EventsEnum::parse(args.into(), input.into())
27 .and_then(|e| cido_codegen::event_handler::event_handler_codegen(&e))
28 .unwrap_or_else(|e| e.into_compile_error())
29 .into()
30}
31
32#[proc_macro_attribute]
34pub fn entity(
35 args: proc_macro::TokenStream,
36 input: proc_macro::TokenStream,
37) -> proc_macro::TokenStream {
38 cido_codegen::transformer::TransformerStruct::parse(
39 args.into(),
40 input.into(),
41 crate::parse::StructType::Entity,
42 )
43 .and_then(|t| cido_codegen::CodegenWrapper(t).codegen())
44 .unwrap_or_else(|e| e.into_compile_error())
45 .into()
46}
47
48#[proc_macro_attribute]
50pub fn event(
51 args: proc_macro::TokenStream,
52 input: proc_macro::TokenStream,
53) -> proc_macro::TokenStream {
54 cido_codegen::transformer::TransformerStruct::parse(
55 args.into(),
56 input.into(),
57 crate::parse::StructType::Event,
58 )
59 .and_then(|t| cido_codegen::CodegenWrapper(t).codegen())
60 .unwrap_or_else(|e| e.into_compile_error())
61 .into()
62}
63
64#[proc_macro_derive(OrderBy, attributes(orderby))]
65pub fn orderby(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
66 cido_codegen::orderby::OrderBy::parse(input.into())
67 .and_then(|o| cido_codegen::CodegenWrapper(o).generate_order_by())
68 .unwrap_or_else(|e| e.into_compile_error())
69 .into()
70}
71
72#[doc(hidden)]
73#[proc_macro_attribute]
74pub fn _impls(
75 args: proc_macro::TokenStream,
76 input: proc_macro::TokenStream,
77) -> proc_macro::TokenStream {
78 impls::impls(args, input)
79}