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 {
11 ident,
12 generics,
13 data,
14 ..
15 } = parse_macro_input!(input);
16
17 read::create_impl_azalearead(&ident, &generics, &data).into()
18}
19
20#[proc_macro_derive(AzaleaWrite, attributes(var))]
21pub fn derive_azaleawrite(input: TokenStream) -> TokenStream {
22 let DeriveInput {
23 ident,
24 generics,
25 data,
26 ..
27 } = parse_macro_input!(input);
28
29 write::create_impl_azaleawrite(&ident, &generics, &data).into()
30}
31
32#[proc_macro_derive(AzBuf, attributes(var, limit))]
33pub fn derive_azbuf(input: TokenStream) -> TokenStream {
34 let DeriveInput {
35 ident,
36 generics,
37 data,
38 ..
39 } = parse_macro_input!(input);
40
41 let writable = write::create_impl_azaleawrite(&ident, &generics, &data);
42 let readable = read::create_impl_azalearead(&ident, &generics, &data);
43 quote! {
44 #writable
45 #readable
46 }
47 .into()
48}