1use asn1rs_model::ast;
2use proc_macro::TokenStream;
3use syn::parse_macro_input;
4use syn::DeriveInput;
5use syn::LitStr;
6
7mod derive_protobuf_eq;
8
9#[proc_macro]
10pub fn asn_to_rust(item: TokenStream) -> TokenStream {
11 let input = parse_macro_input!(item as LitStr).value();
12 asn1rs_model::ast::asn_to_rust(&input).parse().unwrap()
13}
14
15#[proc_macro_attribute]
16pub fn asn(attr: TokenStream, item: TokenStream) -> TokenStream {
17 TokenStream::from(ast::parse(attr.into(), item.into()))
18}
19
20#[proc_macro_derive(ProtobufEq)]
21pub fn protobuf_eq(input: TokenStream) -> TokenStream {
22 let output = derive_protobuf_eq::expand(parse_macro_input!(input as DeriveInput));
23
24 if cfg!(feature = "debug-proc-macro") {
25 println!("-------- output start");
26 println!("{}", output);
27 println!("-------- output end");
28 }
29
30 output
31}