Move tokenstream-only codepath out of common dir
diff --git a/gen/lib/src/lib.rs b/gen/lib/src/lib.rs
index cecf654..aa60b05 100644
--- a/gen/lib/src/lib.rs
+++ b/gen/lib/src/lib.rs
@@ -8,12 +8,25 @@
pub use crate::gen::Opt;
use proc_macro2::TokenStream;
-pub use crate::gen::{Error, GeneratedCode, Result};
+pub use crate::gen::{Error, Result};
+
+/// Results of code generation.
+pub struct GeneratedCode {
+ /// The bytes of a C++ header file.
+ pub header: Vec<u8>,
+ /// The bytes of a C++ implementation file (e.g. .cc, cpp etc.)
+ pub cxx: Vec<u8>,
+}
/// Generate C++ bindings code from a Rust token stream. This should be a Rust
/// token stream which somewhere contains a `#[cxx::bridge] mod {}`.
pub fn generate_header_and_cc(rust_source: TokenStream, opt: Opt) -> Result<GeneratedCode> {
- gen::do_generate_from_tokens(rust_source, opt)
+ let syntax = syn::parse2(rust_source)?;
+ match gen::generate(syntax, opt, true, true) {
+ Ok((Some(header), Some(cxx))) => Ok(GeneratedCode { header, cxx }),
+ Err(err) => Err(err),
+ _ => panic!("Unexpected generation"),
+ }
}
#[cfg(test)]