use autocxx_parser::{IncludeCppConfig, MultiBindings};
use proc_macro2::TokenStream;
pub struct RsOutput<'a> {
pub(crate) config: &'a IncludeCppConfig,
pub(crate) rs: TokenStream,
}
pub fn generate_rs_archive<'a>(rs_outputs: impl Iterator<Item = RsOutput<'a>>) -> String {
let mut multi_bindings = MultiBindings::default();
for rs in rs_outputs {
multi_bindings.insert(rs.config, rs.rs);
}
serde_json::to_string(&multi_bindings).expect("Unable to encode JSON archive")
}
pub struct RsInclude {
pub code: String,
pub filename: String,
}
pub fn generate_rs_single(rs_output: RsOutput) -> RsInclude {
RsInclude {
code: rs_output.rs.to_string(),
filename: rs_output.config.get_rs_filename(),
}
}