diff options
| author | Max Audron <audron@cocaine.farm> | 2021-10-01 18:19:44 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2021-10-01 18:19:44 +0200 |
| commit | 306bd365447ef4be383400a506cd2d9c9a7f8888 (patch) | |
| tree | c368e0b596c2b435f819e4007b60ad3cc2924644 /derive | |
| parent | migrate to separated NetworkMap and NetworkList macros (diff) | |
remove replaced "Network" derive macro
Diffstat (limited to 'derive')
| -rw-r--r-- | derive/src/lib.rs | 5 | ||||
| -rw-r--r-- | derive/src/network/mod.rs | 94 |
2 files changed, 0 insertions, 99 deletions
diff --git a/derive/src/lib.rs b/derive/src/lib.rs index 1b95091..f3608eb 100644 --- a/derive/src/lib.rs +++ b/derive/src/lib.rs @@ -3,11 +3,6 @@ use syn; mod from; mod network; -#[proc_macro_derive(Network, attributes(network))] -pub fn network(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - network::network(input) -} - #[proc_macro_derive(NetworkList, attributes(network))] pub fn network_list(input: proc_macro::TokenStream) -> proc_macro::TokenStream { network::network_list(input) diff --git a/derive/src/network/mod.rs b/derive/src/network/mod.rs index 15f2d18..61af9c4 100644 --- a/derive/src/network/mod.rs +++ b/derive/src/network/mod.rs @@ -182,100 +182,6 @@ pub fn network_list(input: proc_macro::TokenStream) -> proc_macro::TokenStream { gen.into() } -pub fn network(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - let input = parse_macro_input!(input as syn::DeriveInput); - // println!("{:#?}", input); - - let network = Network::from_derive_input(&input).unwrap(); - // println!("{:#?}", network); - - let fields = parse_fields(&input); - - // println!("{:#?}", fields); - - let name = &input.ident; - - let to_network_impl_center = match network.repr { - // Repr::Aos => {} - Repr::Map => map::to(&fields), - Repr::Maplist => maplist::to(&fields), - Repr::List => list::to(&fields), - }; - - let from_network_impl_center = match network.repr { - // Repr::Aos => {} - Repr::Map => map::from(&fields), - Repr::Maplist => maplist::from(&fields), - Repr::List => list::from(&fields), - }; - - let network_impl_item = match network.repr { - Repr::Map => quote! {libquassel::primitive::VariantMap;}, - Repr::Maplist => quote! {libquassel::primitive::VariantMap;}, - Repr::List => quote! {libquassel::primitive::VariantList;}, - }; - - let mut gen = quote! { - impl libquassel::message::signalproxy::Network for #name { - type Item = #network_impl_item - - fn to_network(&self) -> Self::Item { - let mut res = Self::Item::new(); - - #(#to_network_impl_center)* - - return res; - } - - fn from_network(input: &mut Self::Item) -> Self { - Self { - #(#from_network_impl_center)* - } - } - } - }; - - if let Repr::Maplist | Repr::Map = network.repr { - let network_impl_item_vec = match network.repr { - Repr::Map => quote! {libquassel::primitive::VariantList;}, - Repr::Maplist => quote! {libquassel::primitive::VariantMap;}, - Repr::List => quote! {libquassel::primitive::VariantList;}, - }; - - let to_network_impl_vec_center = match network.repr { - Repr::Maplist => maplist::to_vec(name, &fields), - Repr::Map => map::to_vec(name, &fields, false), - _ => unimplemented!(), - }; - - let from_network_impl_vec_center = match network.repr { - Repr::Maplist => maplist::from_vec(name, &fields, false), - Repr::Map => map::from_vec(name, &fields, false), - _ => unimplemented!(), - }; - - let vec = quote! { - impl libquassel::message::signalproxy::Network for Vec<#name> { - type Item = #network_impl_item_vec - - fn to_network(&self) -> Self::Item { - #to_network_impl_vec_center - } - - fn from_network(input: &mut Self::Item) -> Self { - #from_network_impl_vec_center - } - } - }; - - gen.extend(vec); - } - - // println!("{}", gen); - - gen.into() -} - fn get_field_type(field: &NetworkField) -> syn::Type { if let Some(override_type) = &field.override_type { gen_type(override_type) |
