32 lines
632 B
Rust
32 lines
632 B
Rust
extern crate proc_macro;
|
|
extern crate syn;
|
|
#[macro_use]
|
|
extern crate quote;
|
|
|
|
use proc_macro::TokenStream;
|
|
|
|
mod dns_packet_data;
|
|
mod rrdata;
|
|
|
|
#[proc_macro_derive(DnsPacketData)]
|
|
pub fn derive_dns_packet_data(input: TokenStream) -> TokenStream {
|
|
let s = input.to_string();
|
|
|
|
let ast = syn::parse_derive_input(&s).unwrap();
|
|
|
|
let gen = dns_packet_data::impl_hello_world(&ast);
|
|
|
|
gen.parse().unwrap()
|
|
}
|
|
|
|
#[proc_macro_derive(RRData)]
|
|
pub fn derive_rr_data(input: TokenStream) -> TokenStream {
|
|
let s = input.to_string();
|
|
|
|
let ast = syn::parse_derive_input(&s).unwrap();
|
|
|
|
let gen = rrdata::impl_rr_data(&ast);
|
|
|
|
gen.parse().unwrap()
|
|
}
|