altrios_proc_macros/
lib.rs

1mod imports;
2use imports::*;
3mod altrios_api;
4mod history_vec_derive;
5mod hm_derive;
6mod serde_api_derive;
7mod utilities;
8
9#[proc_macro_error]
10#[proc_macro_attribute]
11/// macro for creating appropriate setters and getters for pyo3 struct attributes
12/// and other, non-python API functionality
13pub fn altrios_api(attr: TokenStream, item: TokenStream) -> TokenStream {
14    altrios_api::altrios_api(attr, item)
15}
16
17#[proc_macro_derive(HistoryVec)]
18/// generate HistoryVec that acts like a vec of States but
19/// stores each field of state as a vec field.
20pub fn history_vec_derive(input: TokenStream) -> TokenStream {
21    history_vec_derive::history_vec_derive(input)
22}
23
24#[proc_macro_derive(HistoryMethods, attributes(has_state))]
25/// Generate `step` and `save_state` methods that work for struct and any
26/// nested fields with the `#[has_state]` attribute.  
27pub fn history_methods_derive(input: TokenStream) -> TokenStream {
28    hm_derive::history_methods_derive(input)
29}
30
31#[proc_macro_error]
32#[proc_macro_derive(SerdeAPI)]
33/// macro for deriving default implementation of SerdeAPI trait
34pub fn serde_api_derive(item: TokenStream) -> TokenStream {
35    serde_api_derive::serde_api_derive(item)
36}