euphony_macros/
lib.rs

1use proc_macro::TokenStream;
2use quote::quote;
3use syn::parse_macro_input;
4
5mod cents;
6mod main_;
7mod mode_system;
8mod node;
9
10#[proc_macro]
11pub fn cents(input: TokenStream) -> TokenStream {
12    let cents = parse_macro_input!(input as cents::Cents);
13    quote!(#cents).into()
14}
15
16#[proc_macro]
17pub fn mode_system(input: TokenStream) -> TokenStream {
18    let system = parse_macro_input!(input as mode_system::ModeSystem);
19    quote!(#system).into()
20}
21
22#[proc_macro_attribute]
23pub fn main(_args: TokenStream, input: TokenStream) -> TokenStream {
24    let main = parse_macro_input!(input as main_::Main);
25    quote!(#main).into()
26}
27
28#[proc_macro_derive(Node, attributes(node, input, buffer))]
29pub fn derive_processor(input: TokenStream) -> TokenStream {
30    let input = parse_macro_input!(input as syn::DeriveInput);
31    node::Node::parse(&input).into()
32}