Expand description
IDL4 → C++17-Header-Codegen (OMG IDL4-CPP-Mapping, formal/2018-07-01).
Crate zerodds-idl-cpp — Foundation des Sprach-Bindings (Cluster C5.1-a).
Safety classification: SAFE (std-only). Reines Build-Zeit-Tool —
forbid(unsafe_code), kein no_std-Use-Case.
§Scope (C5.1-a)
- Block A: Header-Layout (
#pragma once,namespace, includes). - Block B: Primitive-Mapping (boolean → bool, octet → uint8_t, …).
- Block C: struct/enum/union/typedef/sequence/array/inheritance.
- Block D: Exception →
class X : public std::exception. - Block E: Time/Duration → DDS::Time_t / DDS::Duration_t.
§C5.1-b Erweiterungen
- Block F: Status-Mapping (13 Status-Klassen,
status). - Block G: QoS-Policy + Type-Traits (22 Policies,
qos). - Block H: DCPS-Entity-Header-Stubs (
dcps).
§C5.2 Erweiterungen
- DDS-PSM-CXX-Header-Skeleton-Layer (
psm_cxx).
§C6.1.D-cpp Erweiterungen
- DDS-RPC C++ PSM-Codegen (
rpc) — Service-Interface, Requester, Replier, ServiceTraits + RemoteException-Hierarchie. Spec §10.
§Bewusst nicht im Crate
- Bitset/Bitmask, Map, Fixed, Any, Interface, Valuetype.
- Linker-Tests (statische Header-Generation reicht).
§Beispiel
use zerodds_idl::config::ParserConfig;
use zerodds_idl_cpp::{generate_cpp_header, CppGenOptions};
let ast = zerodds_idl::parse(
"module M { struct S { long x; }; };",
&ParserConfig::default(),
)
.expect("parse");
let cpp = generate_cpp_header(&ast, &CppGenOptions::default()).expect("gen");
assert!(cpp.contains("namespace M"));
assert!(cpp.contains("class S"));Re-exports§
pub use c_mode::CGenOptions;pub use c_mode::generate_c_header;pub use error::CppGenError;pub use psm_cxx::emit_condition_skeleton;pub use psm_cxx::emit_core_basics;pub use psm_cxx::emit_exception_hierarchy;pub use psm_cxx::emit_full_psm_cxx_skeleton;pub use psm_cxx::emit_listener_skeleton;pub use psm_cxx::emit_psm_cxx_includes;pub use psm_cxx::emit_reference_value_pattern;
Modules§
- c_mode
- IDL → C99 Codegen-Mode (Vendor-Spec
zerodds-xcdr2-c-1.0). - dcps
- Block-H: DCPS-Entity-Header-Stubs (Spec idl4-cpp-1.0 §7.6 + dds-psm-cxx-1.0 §8.1).
- emitter
- AST-Walker, der C++17-Header emittiert.
- error
- Fehler-Typen fuer den IDL→C++-Codegen.
- psm_cxx
- C5.2: DDS-PSM-CXX 1.0 Header-Skeleton-Layer.
- qos
- Block-G: QoS-Policy + Type-Traits (Spec idl4-cpp-1.0 §7.5).
- rpc
- C6.1.D-cpp: DDS-RPC C++ PSM-Codegen.
- status
- Block-F: DDS-Status-Mapping (Spec idl4-cpp-1.0 §7.4 + dds-1.4 §2.2.4.1).
- type_
map - Mapping IDL-Primitive → C++-Type-Strings.
Structs§
- CppGen
Options - Konfiguration des Code-Generators.
Functions§
- generate_
cpp_ header - Erzeugt einen vollstaendigen C++17-Header aus einer IDL-Specification.
- generate_
cpp_ header_ with_ amqp - Convenience-Variante mit aktiviertem
emit_amqp_helpers-Flag. - generate_
cpp_ header_ with_ corba_ traits - Convenience-Variante mit aktiviertem
emit_corba_traits-Flag.