embedded_interfaces_codegen/
lib.rs1use proc_macro::TokenStream;
4use proc_macro2::TokenStream as TokenStream2;
5
6mod codegen;
7mod parser;
8
9use parser::InterfaceObjectsDefinition;
10
11#[proc_macro]
12pub fn interface_objects(input: TokenStream) -> TokenStream {
13 let input2 = TokenStream2::from(input);
14
15 match interface_objects_impl(input2) {
16 Ok(output) => output.into(),
17 Err(err) => err.to_compile_error().into(),
18 }
19}
20
21fn interface_objects_impl(input: TokenStream2) -> syn::Result<TokenStream2> {
22 let registers_def = syn::parse2::<InterfaceObjectsDefinition>(input)?;
23 let out = codegen::generate_interface_objects(®isters_def)?;
24
25 Ok(out)
26}