Skip to main content

Crate zerodds_idl_cpp

Crate zerodds_idl_cpp 

Source
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§

CppGenOptions
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.