1extern crate proc_macro;
2
3mod entities;
4mod macro_impl;
5mod parsers;
6mod utils;
7
8use proc_macro::TokenStream;
9
10#[proc_macro_derive(IConfig, attributes(parser, prefix, description, name, default))]
11pub fn derive_config_macro(item: TokenStream) -> TokenStream {
12 macro_impl::derive_config::derive_function(item)
13}
14
15#[proc_macro_derive(
16 IUseCaseRequest,
17 attributes(parser, description, default, short, long, multi, bool_flag)
18)]
19pub fn derive_use_case_request(item: TokenStream) -> TokenStream {
20 macro_impl::derive_use_case_request::derive_function(item)
21}
22
23#[proc_macro_derive(IStrEnum, attributes(str_value))]
24pub fn derive_str_enum(item: TokenStream) -> TokenStream {
25 macro_impl::derive_str_enum::derive_str_enum(item)
26}
27
28#[proc_macro_derive(IIntEnum, attributes(int_value))]
29pub fn derive_int_enum(item: TokenStream) -> TokenStream {
30 macro_impl::derive_int_enum::derive_int_enum(item)
31}
32
33#[proc_macro_attribute]
34pub fn singleton(attr: TokenStream, item: TokenStream) -> TokenStream {
35 macro_impl::singleton::singleton(attr, item)
36}
37
38#[proc_macro_attribute]
39pub fn lru_cache(attr: TokenStream, item: TokenStream) -> TokenStream {
40 macro_impl::lru_cache::lru_cache(attr, item)
41}
42
43#[proc_macro_derive(EnumAutoFrom, attributes(accept, method, ignore_auto_from))]
44pub fn derive_auto_from(item: TokenStream) -> TokenStream {
45 macro_impl::derive_auto_from::derive_auto_from(item)
46}
47
48#[proc_macro_attribute]
49pub fn auto_impl(attr: TokenStream, item: TokenStream) -> TokenStream {
50 macro_impl::auto_impl::auto_impl(attr, item)
51}
52
53#[proc_macro_derive(StructSetters, attributes(assign, remake))]
54pub fn derive_setters(item: TokenStream) -> TokenStream {
55 macro_impl::derive_setters::derive_setters(item)
56}