1mod imports;
2use imports::*;
3mod bare_clone;
4mod history_methods;
5mod history_vec;
6mod pyo3_api;
7mod solver_attr;
8mod utilities;
9
10#[proc_macro_error]
13#[proc_macro_derive(HistoryVec)]
14pub fn history_vec_derive(input: TokenStream) -> TokenStream {
15 history_vec::history_vec_derive(input)
16}
17
18#[proc_macro_error]
21#[proc_macro_derive(HistoryMethods, attributes(use_state, save_state))]
22pub fn history_methods_derive(input: TokenStream) -> TokenStream {
23 history_methods::history_methods_derive(input)
24}
25
26#[proc_macro_error]
28#[proc_macro_attribute]
29pub fn solver(attr: TokenStream, item: TokenStream) -> TokenStream {
30 solver_attr::solver_attr(attr, item)
31}
32
33#[proc_macro_error]
35#[proc_macro_derive(BareClone, attributes(use_state, save_state))]
36pub fn bare_clone(input: TokenStream) -> TokenStream {
37 bare_clone::bare_clone_derive(input)
38}
39
40#[proc_macro_error]
46#[proc_macro_attribute]
47pub fn pyo3_api(attr: TokenStream, item: TokenStream) -> TokenStream {
48 pyo3_api::pyo3_api(attr, item)
49}
50
51#[proc_macro_error]
54#[proc_macro_derive(Pyo3ApiCleanup, attributes(skip_get))]
55pub fn pyo3_api_cleanup(_item: TokenStream) -> TokenStream {
56 TokenStream::new()
57}
58
59#[proc_macro_error]
61#[proc_macro_attribute]
62pub fn common_derives(_attr: TokenStream, item: TokenStream) -> TokenStream {
63 let item: TokenStream2 = item.into();
64 let output: TokenStream2 = quote! {
65 #[derive(Debug, Clone, PartialEq, PartialOrd, Serialize, Deserialize)]
66 #item
67 };
68
69 output.into()
70}