ixa-derive 1.0.0

Procedural macros for Ixa
Documentation
extern crate proc_macro;
mod reorder_fn;
mod sorted_tag;
mod utilities;

use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, DeriveInput};

#[proc_macro_derive(IxaEvent)]
pub fn derive_ixa_event(input: TokenStream) -> TokenStream {
    let input = parse_macro_input!(input as DeriveInput);
    let name = &input.ident;

    let expanded = quote! {
        impl IxaEvent for #name {}
    };

    TokenStream::from(expanded)
}

#[proc_macro]
pub fn sorted_tag(input: TokenStream) -> TokenStream {
    sorted_tag::sorted_tag(input)
}

#[proc_macro]
pub fn sorted_value_type(input: TokenStream) -> TokenStream {
    sorted_tag::sorted_value_type(input)
}

#[proc_macro]
pub fn impl_make_canonical(input: TokenStream) -> TokenStream {
    reorder_fn::impl_reorder_fns(input)
}