1 | use proc_macro2::TokenStream; |
2 | use proc_macro_crate::{crate_name, FoundCrate}; |
3 | use quote::{format_ident, quote}; |
4 | use zvariant_utils::def_attrs; |
5 | |
6 | pub fn zvariant_path() -> TokenStream { |
7 | if let Ok(FoundCrate::Name(name: String)) = crate_name(orig_name:"zvariant" ) { |
8 | let ident: Ident = format_ident!(" {}" , name); |
9 | quote! { ::#ident } |
10 | } else if let Ok(FoundCrate::Name(name: String)) = crate_name(orig_name:"zbus" ) { |
11 | let ident: Ident = format_ident!(" {}" , name); |
12 | quote! { ::#ident::zvariant } |
13 | } else { |
14 | quote! { ::zvariant } |
15 | } |
16 | } |
17 | |
18 | def_attrs! { |
19 | crate zvariant; |
20 | |
21 | /// Attributes defined on structures. |
22 | pub StructAttributes("struct" ) { signature str, rename_all str, deny_unknown_fields none }; |
23 | /// Attributes defined on fields. |
24 | pub FieldAttributes("field" ) { rename str }; |
25 | } |
26 | |