1mod read;
2mod write;
3
4use proc_macro::TokenStream;
5use quote::quote;
6use syn::{DeriveInput, parse_macro_input};
7
8#[proc_macro_derive(AzaleaRead, attributes(var))]
9pub fn derive_azalearead(input: TokenStream) -> TokenStream {
10 let DeriveInput { ident, data, .. } = parse_macro_input!(input);
11
12 read::create_impl_azalearead(&ident, &data).into()
13}
14
15#[proc_macro_derive(AzaleaWrite, attributes(var))]
16pub fn derive_azaleawrite(input: TokenStream) -> TokenStream {
17 let DeriveInput { ident, data, .. } = parse_macro_input!(input);
18
19 write::create_impl_azaleawrite(&ident, &data).into()
20}
21
22#[proc_macro_derive(AzBuf, attributes(var, limit))]
23pub fn derive_azbuf(input: TokenStream) -> TokenStream {
24 let DeriveInput { ident, data, .. } = parse_macro_input!(input);
25
26 let writable = write::create_impl_azaleawrite(&ident, &data);
27 let readable = read::create_impl_azalearead(&ident, &data);
28 quote! {
29 #writable
30 #readable
31 }
32 .into()
33}