zerodds_corba_rust/
component_emit.rs1use zerodds_idl::ast::types::{ComponentDcl, HomeDcl};
12
13use crate::error::Result;
14
15pub fn emit_component(out: &mut String, c: &ComponentDcl) -> Result<()> {
17 let name = match c {
18 ComponentDcl::Def(def) => &def.name.text,
19 ComponentDcl::Forward(_, _) => return Ok(()),
20 };
21 let repo_id = zerodds_corba_codegen::build_repository_id(&[], name, 1, 0);
22 let repo_const = name.to_ascii_uppercase();
23 out.push_str("/// Generated by `zerodds-corba-rust` from IDL component (CCM 4.0 §6).\n");
24 out.push_str(&format!(
25 "/// CORBA Repository-ID fuer Component `{name}`.\npub const {repo_const}_REPOSITORY_ID: &str = \"{repo_id}\";\n"
26 ));
27 out.push_str(&format!(
28 "pub trait {name}: zerodds_corba_rust::ComponentServant {{\n"
29 ));
30 out.push_str(" /// CCM-Lifecycle: wird vom Container nach Config-Phase aufgerufen.\n");
31 out.push_str(" fn configuration_complete(&mut self) -> ::core::result::Result<(), zerodds_corba_rust::CorbaException> {\n");
32 out.push_str(" ::core::result::Result::Ok(())\n");
33 out.push_str(" }\n");
34 out.push_str(" /// CCM-Lifecycle: wird vom Container vor Removal aufgerufen.\n");
35 out.push_str(" fn ccm_remove(&mut self) -> ::core::result::Result<(), zerodds_corba_rust::CorbaException> {\n");
36 out.push_str(" ::core::result::Result::Ok(())\n");
37 out.push_str(" }\n");
38 out.push_str("}\n");
39 Ok(())
40}
41
42pub fn emit_home(out: &mut String, h: &HomeDcl) -> Result<()> {
44 let name = match h {
45 HomeDcl::Def(def) => &def.name.text,
46 HomeDcl::Forward(_, _) => return Ok(()),
47 };
48 let repo_id = zerodds_corba_codegen::build_repository_id(&[], name, 1, 0);
49 let repo_const = name.to_ascii_uppercase();
50 out.push_str("/// Generated by `zerodds-corba-rust` from IDL home (CCM 4.0 §6.5).\n");
51 out.push_str(&format!(
52 "/// CORBA Repository-ID fuer Home `{name}`.\npub const {repo_const}_REPOSITORY_ID: &str = \"{repo_id}\";\n"
53 ));
54 out.push_str(&format!(
55 "pub trait {name}: zerodds_corba_rust::ComponentHome {{\n"
56 ));
57 out.push_str("}\n");
58 Ok(())
59}