1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use proc_macro::TokenStream;

mod de;
mod parser_helper;
mod ser;
mod utils;

#[derive(Debug, PartialEq, Eq, Clone, Copy)]
enum FieldType {
    Normal,
    WildCardFields,
    WildCardUnknown,
    Phantom,
}

impl FieldType {
    fn is_wildcard(self) -> bool {
        self == FieldType::WildCardUnknown || self == FieldType::WildCardFields
    }

    fn is_phantom(self) -> bool {
        self == FieldType::Phantom
    }
}

#[proc_macro_derive(
    Serialize_int_map,
    attributes(int_map_id, int_map_unknown, int_map_ignore, int_map_phantom)
)]
pub fn derive_serialize_int_map(input: TokenStream) -> TokenStream {
    ser::impl_derive_serialize_int_map(input)
}

#[proc_macro_derive(
    Deserialize_int_map,
    attributes(int_map_id, int_map_unknown, int_map_ignore, int_map_phantom)
)]
pub fn derive_deserialize_int_map(input: TokenStream) -> TokenStream {
    de::impl_derive_deserialize_int_map(input)
}