use proc_macro2::Ident; use syn::Attribute; #[derive(Debug, Clone)] pub struct NapiFn { pub name: Ident, pub js_name: String, pub attrs: Vec, pub args: Vec, pub ret: Option<(syn::Type, /* is_result */ bool)>, pub is_async: bool, pub fn_self: Option, pub kind: FnKind, pub vis: syn::Visibility, pub parent: Option, pub strict: bool, } #[derive(Debug, Clone)] pub struct CallbackArg { pub pat: Box, pub args: Vec, pub ret: Option, } #[derive(Debug, Clone)] pub enum NapiFnArgKind { PatType(Box), Callback(Box), } #[derive(Debug, Clone, PartialEq)] pub enum FnKind { Normal, Constructor, Getter, Setter, } #[derive(Debug, Clone)] pub enum FnSelf { Value, Ref, MutRef, } #[derive(Debug, Clone)] pub struct NapiStruct { pub name: Ident, pub js_name: String, pub vis: syn::Visibility, pub fields: Vec, pub is_tuple: bool, pub kind: NapiStructKind, } #[derive(Debug, Clone, PartialEq)] pub enum NapiStructKind { None, Constructor, Object, } #[derive(Debug, Clone)] pub struct NapiStructField { pub name: syn::Member, pub js_name: String, pub ty: syn::Type, pub getter: bool, pub setter: bool, } #[derive(Debug, Clone)] pub struct NapiImpl { pub name: Ident, pub js_name: String, pub items: Vec, } #[derive(Debug, Clone)] pub struct NapiEnum { pub name: Ident, pub js_name: String, pub variants: Vec, } #[derive(Debug, Clone)] pub struct NapiEnumVariant { pub name: Ident, pub val: i32, pub comments: Vec, }