| 1 | use proc_macro2::{Ident, Span, TokenStream}; |
| 2 | |
| 3 | use crate::BindgenResult; |
| 4 | |
| 5 | mod r#const; |
| 6 | mod r#enum; |
| 7 | mod r#fn; |
| 8 | mod r#struct; |
| 9 | |
| 10 | pub use r#struct::rm_raw_prefix; |
| 11 | |
| 12 | pub const PROPERTY_ATTRIBUTE_DEFAULT: i32 = 0; |
| 13 | pub const PROPERTY_ATTRIBUTE_WRITABLE: i32 = 1 << 0; |
| 14 | pub const PROPERTY_ATTRIBUTE_ENUMERABLE: i32 = 1 << 1; |
| 15 | pub const PROPERTY_ATTRIBUTE_CONFIGURABLE: i32 = 1 << 2; |
| 16 | |
| 17 | pub trait TryToTokens { |
| 18 | fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()>; |
| 19 | |
| 20 | fn try_to_token_stream(&self) -> BindgenResult<TokenStream> { |
| 21 | let mut tokens: TokenStream = TokenStream::default(); |
| 22 | self.try_to_tokens(&mut tokens)?; |
| 23 | |
| 24 | Ok(tokens) |
| 25 | } |
| 26 | } |
| 27 | |
| 28 | fn get_intermediate_ident(name: &str) -> Ident { |
| 29 | let new_name: String = format!("__napi__ {}" , name); |
| 30 | Ident::new(&new_name, Span::call_site()) |
| 31 | } |
| 32 | |
| 33 | fn js_mod_to_token_stream(js_mod: Option<&String>) -> TokenStream { |
| 34 | js_modOption |
| 35 | .map(|i: &String| { |
| 36 | let i: String = format!(" {}\0" , i); |
| 37 | quote! { Some(#i) } |
| 38 | }) |
| 39 | .unwrap_or_else(|| quote! { None }) |
| 40 | } |
| 41 | |