chipi_core/backend/
ida.rs1use crate::codegen_ida;
7use crate::config::GenTarget;
8use crate::tree;
9use crate::types::ValidatedDef;
10
11use super::{CodegenBackend, CodegenError};
12
13pub struct IdaBackend;
15
16impl CodegenBackend for IdaBackend {
17 fn lang(&self) -> &str {
18 "ida"
19 }
20
21 fn generate(&self, ir: &ValidatedDef, config: &GenTarget) -> Result<String, CodegenError> {
22 let tree = tree::build_tree(ir);
23 let opts = config
24 .lang_options
25 .as_ida()
26 .ok_or_else(|| CodegenError::Internal("IDA backend requires IDA options".into()))?;
27 Ok(codegen_ida::generate_ida_code(
28 ir,
29 &tree,
30 opts,
31 &config.type_map,
32 ))
33 }
34
35 fn formatter_command(&self) -> Option<&[&str]> {
36 Some(&["ruff", "format"])
37 }
38}