mirror of
https://github.com/mat-1/azalea.git
synced 2025-08-02 23:44:38 +00:00
33 lines
988 B
Rust
Executable file
33 lines
988 B
Rust
Executable file
mod read;
|
|
mod write;
|
|
|
|
use proc_macro::TokenStream;
|
|
use quote::quote;
|
|
use syn::{parse_macro_input, DeriveInput};
|
|
|
|
#[proc_macro_derive(McBufReadable, attributes(var))]
|
|
pub fn derive_mcbufreadable(input: TokenStream) -> TokenStream {
|
|
let DeriveInput { ident, data, .. } = parse_macro_input!(input);
|
|
|
|
read::create_impl_mcbufreadable(&ident, &data).into()
|
|
}
|
|
|
|
#[proc_macro_derive(McBufWritable, attributes(var))]
|
|
pub fn derive_mcbufwritable(input: TokenStream) -> TokenStream {
|
|
let DeriveInput { ident, data, .. } = parse_macro_input!(input);
|
|
|
|
write::create_impl_mcbufwritable(&ident, &data).into()
|
|
}
|
|
|
|
#[proc_macro_derive(McBuf, attributes(var))]
|
|
pub fn derive_mcbuf(input: TokenStream) -> TokenStream {
|
|
let DeriveInput { ident, data, .. } = parse_macro_input!(input);
|
|
|
|
let writable = write::create_impl_mcbufwritable(&ident, &data);
|
|
let readable = read::create_impl_mcbufreadable(&ident, &data);
|
|
quote! {
|
|
#writable
|
|
#readable
|
|
}
|
|
.into()
|
|
}
|