Skip to main content

dawn_codegen/
lib.rs

1pub mod api_model;
2pub mod emitter;
3pub mod parser;
4pub mod visitor;
5
6pub use api_model::ApiModel;
7pub use emitter::{GeneratedFiles, format_rust_source, generate_strings};
8pub use parser::DawnJsonParser;
9
10use std::path::Path;
11
12pub fn generate_ffi_string(
13    api_header: &Path,
14    clang_args: &[String],
15) -> Result<String, Box<dyn std::error::Error>> {
16    let mut builder = bindgen::Builder::default()
17        .header(api_header.to_string_lossy())
18        .allowlist_item("WGPU.*")
19        .allowlist_item("wgpu.*");
20    for arg in clang_args {
21        builder = builder.clang_arg(arg);
22    }
23    let bindings = builder
24        .parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
25        .generate()?;
26    Ok(bindings.to_string())
27}