1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4use std::iter::FromIterator;
5
6use all_args_constructor::all_args_constructor;
7use builder::builder;
8use equals_and_hash_code::equals_and_hash_code;
9use getter::getter;
10use getter_mut::getter_mut;
11use no_args_constructor::no_args_constructor;
12use setter::setter;
13use to_string::to_string;
14
15mod all_args_constructor;
16mod builder;
17mod equals_and_hash_code;
18mod getter;
19mod getter_mut;
20mod no_args_constructor;
21mod setter;
22mod to_string;
23
24mod utils;
25
26#[proc_macro_derive(Getter)]
27pub fn derive_getter(input: TokenStream) -> TokenStream {
28 getter(input)
29}
30
31#[proc_macro_derive(GetterMut)]
32pub fn derive_getter_mut(input: TokenStream) -> TokenStream {
33 getter_mut(input)
34}
35
36#[proc_macro_derive(Setter)]
37pub fn derive_setter(input: TokenStream) -> TokenStream {
38 setter(input)
39}
40
41#[proc_macro_derive(NoArgsConstructor)]
42pub fn derive_no_args_constructor(input: TokenStream) -> TokenStream {
43 no_args_constructor(input)
44}
45
46#[proc_macro_derive(AllArgsConstructor)]
47pub fn derive_all_args_constructor(input: TokenStream) -> TokenStream {
48 all_args_constructor(input)
49}
50
51#[proc_macro_derive(Builder)]
52pub fn derive_builder(input: TokenStream) -> TokenStream {
53 builder(input)
54}
55
56#[proc_macro_derive(EqualsAndHashCode)]
57pub fn derive_equals_and_hash_code(input: TokenStream) -> TokenStream {
58 equals_and_hash_code(input)
59}
60
61#[proc_macro_derive(ToString)]
62pub fn derive_to_string(input: TokenStream) -> TokenStream {
63 to_string(input)
64}
65
66#[proc_macro_derive(Data)]
67pub fn derive_data(input: TokenStream) -> TokenStream {
68 TokenStream::from_iter(
69 vec![
70 getter(input.clone()),
71 setter(input.clone()),
72 no_args_constructor(input.clone()),
73 all_args_constructor(input.clone()),
74 equals_and_hash_code(input.clone()),
75 to_string(input),
76 ]
77 .into_iter(),
78 )
79}
80
81#[proc_macro_derive(Value)]
82pub fn derive_value(input: TokenStream) -> TokenStream {
83 TokenStream::from_iter(
84 vec![
85 getter(input.clone()),
86 all_args_constructor(input.clone()),
87 equals_and_hash_code(input.clone()),
88 to_string(input),
89 ]
90 .into_iter(),
91 )
92}