dawn-codegen 0.1.2

Code generator for Dawn WebGPU API
Documentation
use crate::api_model::ApiModel;

use crate::emitter::core::{
    TypeIndex, emit_callback, emit_callback_function, emit_callback_info, emit_function_pointer,
};

pub(crate) fn emit(model: &ApiModel, c_prefix: &str) -> String {
    let mut out = String::new();
    out.push_str(
        r#"#![allow(dead_code, unused_imports)]

use crate::ffi;
use crate::generated::*;
"#,
    );

    let index = TypeIndex::new(model);
    for f in &model.function_pointers {
        out.push_str(&emit_function_pointer(f));
    }
    for c in &model.callback_functions {
        out.push_str(&emit_callback_function(c, &index, c_prefix));
    }
    for c in &model.callback_infos {
        out.push_str(&emit_callback_info(c, &index));
    }
    for c in &model.callbacks {
        out.push_str(&emit_callback(c));
    }

    out
}