wiwi_macro_proc/lib.rs
1use proc_macro::TokenStream;
2use syn::parse_macro_input;
3
4mod builder;
5mod with_cloned;
6
7#[proc_macro_attribute]
8pub fn builder(attr: TokenStream, item: TokenStream) -> TokenStream {
9 builder::builder(attr.into(), parse_macro_input!(item)).into()
10}
11
12#[proc_macro]
13pub fn with_cloned(input: TokenStream) -> TokenStream {
14 match with_cloned::with_cloned(input.into()) {
15 Ok(ts) | Err(ts) => { ts.into() }
16 }
17}
18
19#[proc_macro]
20pub fn __builder_internal_helper_gen_state(input: TokenStream) -> TokenStream {
21 builder::__builder_internal_helper_gen_state(input.into()).into()
22}
23
24// #[cfg(feature = "memory-usage")]
25// mod memory_usage;
26
27// #[cfg(feature = "memory-usage")]
28// #[proc_macro_derive(MemoryUsage, attributes(wiwi))]
29// pub fn memory_usage(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
30// memory_usage::macro_impl(input)
31// }
32
33// #[cfg(feature = "int")]
34// mod int;
35
36// /// Internal macro only, do not use
37// #[cfg(feature = "int")]
38// #[doc(hidden)]
39// #[proc_macro]
40// pub fn define_int(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
41// int::macro_impl(input)
42// }
43
44// #[cfg(feature = "serialiser-binary")]
45// mod serialiser_binary;
46
47// #[cfg(feature = "serialiser-binary")]
48// #[proc_macro_derive(Serialise, attributes(wiwi))]
49// pub fn serialise_binary(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
50// serialiser_binary::macro_impl(input)
51// }
52
53// #[cfg(feature = "unicode")]
54// mod unicode;