#![doc=include_str!( "../README.md")]
#![deny(clippy::all)]
use proc_macro::TokenStream;
use proc_macro_error2::proc_macro_error;
use syn::{DeriveInput, parse_macro_input};
mod codegen;
mod model;
mod util;
use codegen::CodeGenerator;
use model::Model;
const RUST_FMI_NAMESPACE: uuid::Uuid = uuid::uuid!("6ba7b810-9dad-11d1-80b4-00c04fd430c8");
#[proc_macro_derive(FmuModel, attributes(model, variable, alias, child, terminal))]
#[proc_macro_error]
pub fn derive_fmu_model(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
let model = Model::from(input);
proc_macro_error2::abort_if_dirty();
let code_generator = CodeGenerator::new(model);
quote::quote! {
#code_generator
}
.into()
}