chipi_core/backend/
cpp.rs1use crate::codegen_cpp;
7use crate::config::{CppOptions, GenTarget};
8use crate::tree;
9use crate::types::ValidatedDef;
10
11use super::{CodegenBackend, CodegenError};
12
13pub struct CppBackend;
15
16impl CodegenBackend for CppBackend {
17 fn lang(&self) -> &str {
18 "cpp"
19 }
20
21 fn generate(&self, ir: &ValidatedDef, config: &GenTarget) -> Result<String, CodegenError> {
22 let tree = tree::build_tree(ir);
23 let default_opts = CppOptions::default();
24 let opts = config.lang_options.as_cpp().unwrap_or(&default_opts);
25 Ok(codegen_cpp::generate_cpp_code(
26 ir,
27 &tree,
28 opts,
29 &config.type_map,
30 ))
31 }
32
33 fn formatter_command(&self) -> Option<&[&str]> {
34 Some(&["clang-format", "-i"])
35 }
36}