1extern crate proc_macro;
2mod reorder_fn;
3mod sorted_tag;
4mod utilities;
5
6use proc_macro::TokenStream;
7use quote::quote;
8use syn::{parse_macro_input, DeriveInput};
9
10#[proc_macro_derive(IxaEvent)]
11pub fn derive_ixa_event(input: TokenStream) -> TokenStream {
12 let input = parse_macro_input!(input as DeriveInput);
13 let name = &input.ident;
14
15 let expanded = quote! {
16 impl IxaEvent for #name {}
17 };
18
19 TokenStream::from(expanded)
20}
21
22#[proc_macro]
23pub fn sorted_tag(input: TokenStream) -> TokenStream {
24 sorted_tag::sorted_tag(input)
25}
26
27#[proc_macro]
28pub fn sorted_value_type(input: TokenStream) -> TokenStream {
29 sorted_tag::sorted_value_type(input)
30}
31
32#[proc_macro]
33pub fn impl_make_canonical(input: TokenStream) -> TokenStream {
34 reorder_fn::impl_reorder_fns(input)
35}