1#![deny(warnings)]
2#![deny(unused_lifetimes)]
3#![forbid(unsafe_code)]
5
6use proc_macro::TokenStream;
7use syn::{parse_macro_input, DeriveInput};
8
9mod common;
10mod decode;
11mod encode;
12mod enumeration;
13
14#[proc_macro_derive(EncodableMessage, attributes(otopr))]
15pub fn derive_encodable_message(ts: TokenStream) -> TokenStream {
16 encode::derive_encodable_message(parse_macro_input!(ts as DeriveInput))
17 .unwrap_or_else(|e| e.into_compile_error())
18 .into()
19}
20
21#[proc_macro_derive(DecodableMessage, attributes(otopr))]
22pub fn derive_decodable_message(ts: TokenStream) -> TokenStream {
23 decode::derive_decodable_message(parse_macro_input!(ts as DeriveInput))
24 .unwrap_or_else(|e| e.into_compile_error())
25 .into()
26}
27
28#[proc_macro_derive(Enumeration)]
29pub fn derive_enumeration(ts: TokenStream) -> TokenStream {
30 enumeration::derive_enumeration(parse_macro_input!(ts as DeriveInput))
31 .unwrap_or_else(|e| e.into_compile_error())
32 .into()
33}