TODO:collect_enum parse syn

This commit is contained in:
neuecc 2023-04-14 17:20:44 +09:00
parent 5b0792802c
commit 17bd45271d
3 changed files with 23 additions and 5 deletions

View File

@ -14,7 +14,7 @@ path = "src/lib.rs"
[dependencies] [dependencies]
csbindgen = { path = "../csbindgen" } csbindgen = { path = "../csbindgen" }
physx-sys = "0.11.0" # physx-sys = "0.11.0"
[build-dependencies] [build-dependencies]
cc = "1.0.79" cc = "1.0.79"

View File

@ -185,8 +185,8 @@ impl Builder {
Ok(()) Ok(())
} }
fn has_input_file(&self) -> bool { fn has_input_files(&self) -> bool {
!self.options.input_bindgen_file.to_string_lossy().is_empty() !self.options.input_bindgen_files.is_empty()
} }
fn has_input_externals(&self) -> bool { fn has_input_externals(&self) -> bool {
!self.options.input_extern_files.is_empty() !self.options.input_extern_files.is_empty()
@ -197,7 +197,7 @@ impl Builder {
rust_output_path: P, rust_output_path: P,
csharp_output_path: P, csharp_output_path: P,
) -> Result<(), Box<dyn Error>> { ) -> Result<(), Box<dyn Error>> {
if !self.options.input_bindgen_files.is_empty() { if self.has_input_files() {
let (rust, csharp) = generate(GenerateKind::InputBindgen, &self.options)?; let (rust, csharp) = generate(GenerateKind::InputBindgen, &self.options)?;
if let Some(rust) = rust { if let Some(rust) = rust {

View File

@ -1,6 +1,6 @@
use crate::{alias_map::AliasMap, builder::BindgenOptions, field_map::FieldMap, type_meta::*}; use crate::{alias_map::AliasMap, builder::BindgenOptions, field_map::FieldMap, type_meta::*};
use std::collections::HashSet; use std::collections::HashSet;
use syn::{ForeignItem, Item, Pat, ReturnType}; use syn::{ForeignItem, Item, Pat, ReturnType, __private::ToTokens};
enum FnItem { enum FnItem {
ForeignItem(syn::ForeignItemFn), ForeignItem(syn::ForeignItemFn),
@ -209,6 +209,24 @@ pub fn collect_enum(ast: &syn::File, result: &mut Vec<RustEnum>) {
repr, repr,
}); });
} }
else if let Item::Macro(t) = item {
let last_segment = t.mac.path.segments.last().unwrap();
if last_segment.ident == "bitflags" {
// t.mac.tokens
//let inner_ast = syn::parse(t.mac.tokens);
//let ttt = t.mac.to_token_stream();
let input = t.mac.to_tokens(tokens);
//let foo = syn::parse(tokens);
//let tako = syn::parse2(tokens);
//t.mac.tokens.to_string()
let ast: syn::DeriveInput = syn::parse_file(content)
//let file_ast = syn::parse_file(t.mac.to_tokens(tokens)
}
}
} }
} }