dawn_codegen/emitter/
render.rs1use crate::api_model::ApiModel;
2
3pub struct GeneratedFiles {
4 pub enums: String,
5 pub structs: String,
6 pub extensions: String,
7 pub objects: String,
8 pub callbacks: String,
9 pub functions: String,
10 pub constants: String,
11}
12
13pub fn generate_strings(model: &ApiModel) -> GeneratedFiles {
14 let c_prefix = model.c_prefix.clone();
15 let enums = format_rust_source(&crate::emitter::enums::emit(model, &c_prefix));
16 let structs = format_rust_source(&crate::emitter::structs::emit(model, &c_prefix));
17 let extensions = format_rust_source(&crate::emitter::extensions::emit(model, &c_prefix));
18 let objects = format_rust_source(&crate::emitter::objects::emit(model, &c_prefix));
19 let callbacks = format_rust_source(&crate::emitter::callbacks::emit(model, &c_prefix));
20 let functions = format_rust_source(&crate::emitter::functions::emit(model, &c_prefix));
21 let constants = format_rust_source(&crate::emitter::constants::emit(model));
22
23 GeneratedFiles {
24 enums,
25 structs,
26 extensions,
27 objects,
28 callbacks,
29 functions,
30 constants,
31 }
32}
33
34pub fn format_rust_source(source: &str) -> String {
35 match syn::parse_file(source) {
36 Ok(file) => prettyplease::unparse(&file),
37 Err(_) => source.to_string(),
38 }
39}