This commit is contained in:
2022-06-10 03:18:41 +00:00
committed by GitHub
parent 5206cc9a28
commit 4bed81248e
4 changed files with 103 additions and 6 deletions

View File

@@ -43,3 +43,37 @@ pub fn impl_struct_reader_read(item: TokenStream) -> TokenStream {
};
stream.into()
}
#[proc_macro]
pub fn define_struct_writer_fn(item: TokenStream) -> TokenStream {
let i = parse_macro_input!(item as Ident);
let lefname = format!("write_le_{}", i);
let lefname = Ident::new(&lefname, i.span());
let befname = format!("write_be_{}", i);
let befname = Ident::new(&befname, i.span());
let stream = quote! {
#[doc = concat!("Write [", stringify!(#i), "] in little endian.")]
fn #lefname(&mut self, data: #i) -> Result<(), Self::Error>;
#[doc = concat!("Write [", stringify!(#i), "] in big endian.")]
fn #befname(&mut self, data: #i) -> Result<(), Self::Error>;
};
stream.into()
}
#[proc_macro]
pub fn impl_struct_writer_write(item: TokenStream) -> TokenStream {
let i = parse_macro_input!(item as Ident);
let lefname = format!("write_le_{}", i);
let lefname = Ident::new(&lefname, i.span());
let befname = format!("write_be_{}", i);
let befname = Ident::new(&befname, i.span());
let stream = quote! {
fn #lefname(&mut self, data: #i) -> Result<(), Self::Error> {
self.write_all(&data.to_le_bytes())
}
fn #befname(&mut self, data: #i) -> Result<(), Self::Error> {
self.write_all(&data.to_be_bytes())
}
};
stream.into()
}