1mod common;
2mod derive_de;
3mod derive_ser;
4mod parse;
5mod utils;
6
7use parse::ItemStruct;
8use proc_macro::TokenStream;
9
10#[proc_macro_derive(PcdDeserialize, attributes(pcd))]
14pub fn pcd_record_read_derive(input: TokenStream) -> TokenStream {
15 let input = syn::parse_macro_input!(input as ItemStruct);
16 let derive_read_tokens =
17 derive_de::f_pcd_record_read_derive(input).unwrap_or_else(|err| err.to_compile_error());
18 TokenStream::from(derive_read_tokens)
19}
20
21#[proc_macro_derive(PcdSerialize, attributes(pcd))]
25pub fn pcd_record_write_derive(input: TokenStream) -> TokenStream {
26 let input = syn::parse_macro_input!(input as ItemStruct);
27 let derive_write_tokens =
28 derive_ser::f_pcd_record_write_derive(input).unwrap_or_else(|err| err.to_compile_error());
29 TokenStream::from(derive_write_tokens)
30}