1use proc_macro::TokenStream;
2use quote::TokenStreamExt;
3use syn::{parse_macro_input, DeriveInput};
4
5mod config;
6
7#[proc_macro_derive(MultiWidgetConfig, attributes(child_only))]
8pub fn multi_widget_config_derive(input: TokenStream) -> TokenStream {
9 let input = parse_macro_input!(input as DeriveInput);
10 let mut tokens = proc_macro2::TokenStream::new();
11 tokens.append_all(config::derive_multi_widget_config_main(input.clone()));
12 tokens.append_all(config::derive_multi_widget_config_de_main(input.clone()));
13 tokens.into()
14}
15
16#[proc_macro_derive(OptDeserializeConfig, attributes(deserialize_struct))]
17pub fn opt_deserialize_derive(input: TokenStream) -> TokenStream {
18 let input = parse_macro_input!(input as DeriveInput);
19 let mut tokens = proc_macro2::TokenStream::new();
20 tokens.append_all(config::derive_config_de(input.clone()));
22 tokens.into()
23}