1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
//! The CXX code generator for constructing and compiling C++ code. //! //! This is intended as a mechanism for embedding the `cxx` crate into //! higher-level code generators. See [dtolnay/cxx#235] and //! [https://github.com/google/autocxx]. //! //! [dtolnay/cxx#235]: https://github.com/dtolnay/cxx/issues/235 //! [https://github.com/google/autocxx]: https://github.com/google/autocxx #![allow(dead_code)] mod error; mod gen; mod syntax; pub use crate::error::Error; pub use crate::gen::{GeneratedCode, Opt}; use proc_macro2::TokenStream; /// 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, Error> { let syntax = syn::parse2(rust_source) .map_err(crate::gen::Error::from) .map_err(Error::from)?; gen::generate(syntax, opt).map_err(Error::from) }